summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMatthias Sohn <matthias.sohn@sap.com>2014-03-15 10:49:22 +0100
committerMatthias Sohn <matthias.sohn@sap.com>2014-03-20 00:56:21 +0100
commit8598fe3d2bdc6e4a7e136a8579fad2545f34f546 (patch)
treec57b94df4050c3d3a8d444bc5a66d771f6df9921
parentfc9b1fbf6b61d0730abfa0855229b133100ef555 (diff)
downloadjgit-8598fe3d2bdc6e4a7e136a8579fad2545f34f546.tar.gz
jgit-8598fe3d2bdc6e4a7e136a8579fad2545f34f546.zip
Retry to call credentials provider if http authentication failed
If the user provided wrong credentials or credentials changed we shouldn't give up immediately but retry to get valid credentials from the credentials provider. Reset the credentials provider if authentication failed to avoid it reuses wrong credentials in case it stored them in a persistent store. Bug: 338048 Bug: 342592 Bug: 427735 Change-Id: Ibd62ef3da17be6454991c43f524c8bbc7ca3c37e Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/transport/TransportHttp.java10
1 files changed, 6 insertions, 4 deletions
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/transport/TransportHttp.java b/org.eclipse.jgit/src/org/eclipse/jgit/transport/TransportHttp.java
index fe55e23779..5885e7b528 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/transport/TransportHttp.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/transport/TransportHttp.java
@@ -471,12 +471,14 @@ public class TransportHttp extends HttpTransport implements WalkTransport,
if (authMethod == HttpAuthMethod.NONE)
throw new TransportException(uri, MessageFormat.format(
JGitText.get().authenticationNotSupported, uri));
- if (1 < authAttempts
- || !authMethod.authorize(uri,
- getCredentialsProvider())) {
+ CredentialsProvider credentialsProvider = getCredentialsProvider();
+ if (3 < authAttempts
+ || !authMethod.authorize(uri, credentialsProvider)) {
+ credentialsProvider.reset(uri);
throw new TransportException(uri,
JGitText.get().notAuthorized);
}
+ credentialsProvider.reset(uri);
authAttempts++;
continue;
@@ -504,7 +506,7 @@ public class TransportHttp extends HttpTransport implements WalkTransport,
/**
* Open an HTTP connection.
- *
+ *
* @param method
* @param u
* @return the connection