Bug 166361 [SSH2] Connection is attempted to server before prompting for a password
diff --git a/bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/IConnectionMethod.java b/bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/IConnectionMethod.java
index 29eadb8..979b087 100644
--- a/bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/IConnectionMethod.java
+++ b/bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/IConnectionMethod.java
@@ -32,6 +32,7 @@
/**
* Creates a new server connection using the given repository root
* (which includes the user name) and the given password.
+ * If password is not given, null will be passed.
*/
public IServerConnection createConnection(ICVSRepositoryLocation location, String password);
diff --git a/bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/connection/CVSRepositoryLocation.java b/bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/connection/CVSRepositoryLocation.java
index fcddc7c..b7b9612 100644
--- a/bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/connection/CVSRepositoryLocation.java
+++ b/bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/connection/CVSRepositoryLocation.java
@@ -775,8 +775,8 @@
// This is possible if the cache was cleared somehow for a location with a mutable username
throw new CVSAuthenticationException(new CVSStatus(IStatus.ERROR, CVSAuthenticationException.RETRY, CVSMessages.CVSRepositoryLocation_usernameRequired));
}
- if (password == null)
- password = "";//$NON-NLS-1$
+ //if (password == null)
+ // password = "";//$NON-NLS-1$
Connection connection = createConnection(password, monitor);
if (cacheNeedsUpdate)
updateCachedLocation();
diff --git a/bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/connection/ExtConnectionMethod.java b/bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/connection/ExtConnectionMethod.java
index aeae789..d18e95e 100644
--- a/bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/connection/ExtConnectionMethod.java
+++ b/bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/connection/ExtConnectionMethod.java
@@ -25,6 +25,9 @@
* @see IConnectionMethod#createConnection
*/
public IServerConnection createConnection(ICVSRepositoryLocation repositoryRoot, String password) {
+ if(password==null){
+ password=""; //$NON-NLS-1$
+ }
return new ExtConnection(repositoryRoot, password);
}
diff --git a/bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/connection/PServerConnectionMethod.java b/bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/connection/PServerConnectionMethod.java
index 8075e6c..d56f5b8 100644
--- a/bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/connection/PServerConnectionMethod.java
+++ b/bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/connection/PServerConnectionMethod.java
@@ -18,6 +18,9 @@
* @see IConnectionMethod#createConnection(ICVSRepositoryLocation, String)
*/
public IServerConnection createConnection(ICVSRepositoryLocation location, String password) {
+ if(password==null){
+ password=""; //$NON-NLS-1$
+ }
return new PServerConnection(location, password);
}
/**
diff --git a/bundles/org.eclipse.team.cvs.ssh/META-INF/MANIFEST.MF b/bundles/org.eclipse.team.cvs.ssh/META-INF/MANIFEST.MF
index 4bb4afe..d35f118 100644
--- a/bundles/org.eclipse.team.cvs.ssh/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.team.cvs.ssh/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@
Bundle-ManifestVersion: 2
Bundle-Name: %pluginName
Bundle-SymbolicName: org.eclipse.team.cvs.ssh
-Bundle-Version: 3.2.0.qualifier
+Bundle-Version: 3.2.1.qualifier
Bundle-Activator: org.eclipse.team.internal.ccvs.ssh.SSHPlugin
Bundle-Vendor: %providerName
Bundle-Localization: plugin
diff --git a/bundles/org.eclipse.team.cvs.ssh/src/org/eclipse/team/internal/ccvs/ssh/SSHServerConnection.java b/bundles/org.eclipse.team.cvs.ssh/src/org/eclipse/team/internal/ccvs/ssh/SSHServerConnection.java
index bce0a10..4ea043f 100644
--- a/bundles/org.eclipse.team.cvs.ssh/src/org/eclipse/team/internal/ccvs/ssh/SSHServerConnection.java
+++ b/bundles/org.eclipse.team.cvs.ssh/src/org/eclipse/team/internal/ccvs/ssh/SSHServerConnection.java
@@ -42,6 +42,9 @@
Client client;
public SSHServerConnection(ICVSRepositoryLocation location, String password) {
+ if (password == null) {
+ password = ""; //$NON-NLS-1$
+ }
this.location = location;
this.password = password;
}
diff --git a/bundles/org.eclipse.team.cvs.ssh2/META-INF/MANIFEST.MF b/bundles/org.eclipse.team.cvs.ssh2/META-INF/MANIFEST.MF
index 6c1f042..5867694 100644
--- a/bundles/org.eclipse.team.cvs.ssh2/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.team.cvs.ssh2/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@
Bundle-ManifestVersion: 2
Bundle-Name: %pluginName
Bundle-SymbolicName: org.eclipse.team.cvs.ssh2; singleton:=true
-Bundle-Version: 3.2.0.qualifier
+Bundle-Version: 3.2.1.qualifier
Bundle-Activator: org.eclipse.team.internal.ccvs.ssh2.CVSSSH2Plugin
Bundle-Vendor: %providerName
Bundle-Localization: plugin
diff --git a/bundles/org.eclipse.team.cvs.ssh2/src/org/eclipse/team/internal/ccvs/ssh2/JSchSession.java b/bundles/org.eclipse.team.cvs.ssh2/src/org/eclipse/team/internal/ccvs/ssh2/JSchSession.java
index 88c9863..71a14ec 100644
--- a/bundles/org.eclipse.team.cvs.ssh2/src/org/eclipse/team/internal/ccvs/ssh2/JSchSession.java
+++ b/bundles/org.eclipse.team.cvs.ssh2/src/org/eclipse/team/internal/ccvs/ssh2/JSchSession.java
@@ -474,7 +474,8 @@
session.setProxy(proxy);
}
session.setTimeout(getCVSTimeoutInMillis());
- session.setPassword(password);
+ if (password != null)
+ session.setPassword(password);
session.setUserInfo(wrapperUI);
session.setSocketFactory(socketFactory);
// This is where the server is contacted and authentication occurs
diff --git a/bundles/org.eclipse.team.cvs.ssh2/src/org/eclipse/team/internal/ccvs/ssh2/PServerSSH2ServerConnection.java b/bundles/org.eclipse.team.cvs.ssh2/src/org/eclipse/team/internal/ccvs/ssh2/PServerSSH2ServerConnection.java
index b362890..52343c2 100644
--- a/bundles/org.eclipse.team.cvs.ssh2/src/org/eclipse/team/internal/ccvs/ssh2/PServerSSH2ServerConnection.java
+++ b/bundles/org.eclipse.team.cvs.ssh2/src/org/eclipse/team/internal/ccvs/ssh2/PServerSSH2ServerConnection.java
@@ -87,7 +87,7 @@
int retry = 1;
while (true) {
try {
- session = JSchSession.getSession(location, ssh_user, "", ssh_host, ssh_port, monitor).getSession(); //$NON-NLS-1$
+ session = JSchSession.getSession(location, ssh_user, null, ssh_host, ssh_port, monitor).getSession();
String[] list = session.getPortForwardingL();
String name = ":" + rhost + ":" + rport; //$NON-NLS-1$ //$NON-NLS-2$
boolean done = false;
@@ -123,10 +123,14 @@
// CVSROOT=":pserver:localhost:"+lport+""cvs_root
try {
+ // If user does not give a password, it must be null.
+ String _password = ""; //$NON-NLS-1$
+ if (password != null)
+ _password = password;
Properties prop = new Properties();
prop.put("connection", "pserver"); //$NON-NLS-1$ //$NON-NLS-2$
prop.put("user", location.getUsername()); //$NON-NLS-1$
- prop.put("password", password); //$NON-NLS-1$
+ prop.put("password", _password); //$NON-NLS-1$
prop.put("host", "localhost"); //$NON-NLS-1$ //$NON-NLS-2$
prop.put("port", Integer.toString(lport)); //$NON-NLS-1$
prop.put("root", cvs_root); //$NON-NLS-1$
@@ -134,7 +138,7 @@
CVSRepositoryLocation cvsrl = CVSRepositoryLocation.fromProperties(prop);
IConnectionMethod method = cvsrl.getMethod();
- psc = method.createConnection(cvsrl, password);
+ psc = method.createConnection(cvsrl, _password);
} catch (Exception e) {
throw new CVSAuthenticationException(e.toString(), CVSAuthenticationException.NO_RETRY);
}