Bug 437083 - Connection error "session is down"

isOpen is expected to cleanup old sessions but didn't do so if fIsOpen
is false.

Change-Id: I65290d06eec51f65281c9f7eb16eba7e3bb5dcc9
diff --git a/bundles/org.eclipse.remote.jsch.core/src/org/eclipse/remote/internal/jsch/core/JSchConnection.java b/bundles/org.eclipse.remote.jsch.core/src/org/eclipse/remote/internal/jsch/core/JSchConnection.java
index 1ebc6b4..4e83f70 100644
--- a/bundles/org.eclipse.remote.jsch.core/src/org/eclipse/remote/internal/jsch/core/JSchConnection.java
+++ b/bundles/org.eclipse.remote.jsch.core/src/org/eclipse/remote/internal/jsch/core/JSchConnection.java
@@ -666,9 +666,9 @@
 			for (Session session : fSessions) {
 				isOpen &= session.isConnected();
 			}
-			if (!isOpen) {
-				close(); // Cleanup if session is closed
-			}
+		}
+		if (!isOpen) {
+			close(); // Cleanup if session is closed
 		}
 		return isOpen;
 	}
@@ -823,9 +823,14 @@
 				newSession(fManager.getUserAuthenticator(this), subMon.newChild(10));
 				loadEnv(subMon.newChild(10));
 			}
-			fWorkingDir = getCwd(subMon.newChild(10));
-			loadProperties(subMon.newChild(10));
 			fIsOpen = true;
+			try {
+				fWorkingDir = getCwd(subMon.newChild(10));
+				loadProperties(subMon.newChild(10));
+			} catch (RemoteConnectionException e) {
+				fIsOpen = false;
+				throw e;
+			}
 			fireConnectionChangeEvent(IRemoteConnectionChangeEvent.CONNECTION_OPENED);
 		}
 	}