Remove netconf from commons/opendaylight pom
[controller.git] / opendaylight / netconf / netconf-netty-util / src / main / java / org / opendaylight / controller / netconf / nettyutil / handler / ssh / client / AsyncSshHandler.java
index 05cd598cdc22f7b1265c661c447b850cab1a0256..c89da4984a409c507a3c2644ed0671b7a1f4daba 100644 (file)
@@ -15,6 +15,7 @@ import io.netty.channel.ChannelOutboundHandlerAdapter;
 import io.netty.channel.ChannelPromise;
 import java.io.IOException;
 import java.net.SocketAddress;
+import java.util.HashMap;
 import org.apache.sshd.ClientChannel;
 import org.apache.sshd.ClientSession;
 import org.apache.sshd.SshClient;
@@ -39,7 +40,16 @@ public class AsyncSshHandler extends ChannelOutboundHandlerAdapter {
 
     public static final int SSH_DEFAULT_NIO_WORKERS = 8;
 
+    // Disable default timeouts from mina sshd
+    private static final long DEFAULT_TIMEOUT = -1L;
+
     static {
+        DEFAULT_CLIENT.setProperties(new HashMap<String, String>(){
+            {
+                put(SshClient.AUTH_TIMEOUT, Long.toString(DEFAULT_TIMEOUT));
+                put(SshClient.IDLE_TIMEOUT, Long.toString(DEFAULT_TIMEOUT));
+            }
+        });
         // TODO make configurable, or somehow reuse netty threadpool
         DEFAULT_CLIENT.setNioWorkers(SSH_DEFAULT_NIO_WORKERS);
         DEFAULT_CLIENT.start();
@@ -101,7 +111,11 @@ public class AsyncSshHandler extends ChannelOutboundHandlerAdapter {
                     if (future.isSuccess()) {
                         handleSshAuthenticated(session, ctx);
                     } else {
-                        handleSshSetupFailure(ctx, future.getException());
+                        // Exception does not have to be set in the future, add simple exception in such case
+                        final Throwable exception = future.getException() == null ?
+                                new IllegalStateException("Authentication failed") :
+                                future.getException();
+                        handleSshSetupFailure(ctx, exception);
                     }
                 }
             });
@@ -176,7 +190,7 @@ public class AsyncSshHandler extends ChannelOutboundHandlerAdapter {
 
     @Override
     public synchronized void connect(final ChannelHandlerContext ctx, final SocketAddress remoteAddress, final SocketAddress localAddress, final ChannelPromise promise) throws Exception {
-        LOG.debug("XXX session connecting on channel {}. promise: {} ", ctx.channel(), connectPromise);
+        LOG.debug("SSH session connecting on channel {}. promise: {} ", ctx.channel(), connectPromise);
         this.connectPromise = promise;
         startSsh(ctx, remoteAddress);
     }