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);
}
}