Removing fixed ssh timout on netconf session, if not otherwise specified it will default to INFINITE
Re-Adding down listener to thread upon session re-establishment. Enables re-opening every time.

Change-Id: I4c236cb5ff91a0a0fa6c5f70de79728415c2e63a
diff --git a/protocols/netconf/ctl/src/main/java/org/onosproject/netconf/ctl/impl/NetconfSessionMinaImpl.java b/protocols/netconf/ctl/src/main/java/org/onosproject/netconf/ctl/impl/NetconfSessionMinaImpl.java
index c7870b8..9a70597 100644
--- a/protocols/netconf/ctl/src/main/java/org/onosproject/netconf/ctl/impl/NetconfSessionMinaImpl.java
+++ b/protocols/netconf/ctl/src/main/java/org/onosproject/netconf/ctl/impl/NetconfSessionMinaImpl.java
@@ -224,10 +224,12 @@
                  deviceInfo.getDeviceId());
 
         client = SshClient.setUpDefaultClient();
-        client.getProperties().putIfAbsent(FactoryManager.IDLE_TIMEOUT,
-                TimeUnit.SECONDS.toMillis(idleTimeout));
-        client.getProperties().putIfAbsent(FactoryManager.NIO2_READ_TIMEOUT,
-                TimeUnit.SECONDS.toMillis(idleTimeout + 15L));
+        if (idleTimeout != NetconfControllerImpl.netconfIdleTimeout) {
+            client.getProperties().putIfAbsent(FactoryManager.IDLE_TIMEOUT,
+                    TimeUnit.SECONDS.toMillis(idleTimeout));
+            client.getProperties().putIfAbsent(FactoryManager.NIO2_READ_TIMEOUT,
+                    TimeUnit.SECONDS.toMillis(idleTimeout + 15L));
+        }
         client.start();
         client.setKeyPairProvider(new SimpleGeneratorHostKeyProvider());
         startSession();
@@ -294,6 +296,7 @@
                 streamHandler = new NetconfStreamThread(channel.getInvertedOut(), channel.getInvertedIn(),
                         channel.getInvertedErr(), deviceInfo,
                         new NetconfSessionDelegateImpl(), replies);
+                primaryListeners.forEach(l -> streamHandler.addDeviceEventListener(l));
             } else {
                 throw new NetconfException("Failed to open channel with device " +
                         deviceInfo);
diff --git a/protocols/netconf/ctl/src/main/java/org/onosproject/netconf/ctl/impl/NetconfStreamThread.java b/protocols/netconf/ctl/src/main/java/org/onosproject/netconf/ctl/impl/NetconfStreamThread.java
index 343db0d..ab639e9 100644
--- a/protocols/netconf/ctl/src/main/java/org/onosproject/netconf/ctl/impl/NetconfStreamThread.java
+++ b/protocols/netconf/ctl/src/main/java/org/onosproject/netconf/ctl/impl/NetconfStreamThread.java
@@ -251,7 +251,7 @@
                 int cInt = bufferReader.read();
                 if (cInt == -1) {
                     log.debug("Netconf device {}  sent error char in session," +
-                            " will need to be reopend", netconfDeviceInfo);
+                            " will need to be reopened", netconfDeviceInfo);
                     NetconfDeviceOutputEvent event = new NetconfDeviceOutputEvent(
                             NetconfDeviceOutputEvent.Type.SESSION_CLOSED,
                             null, null, Optional.of(-1), netconfDeviceInfo);