diff options
author | Matthias Sohn <matthias.sohn@sap.com> | 2014-03-15 10:49:22 +0100 |
---|---|---|
committer | Matthias Sohn <matthias.sohn@sap.com> | 2014-03-20 00:56:21 +0100 |
commit | 8598fe3d2bdc6e4a7e136a8579fad2545f34f546 (patch) | |
tree | c57b94df4050c3d3a8d444bc5a66d771f6df9921 | |
parent | fc9b1fbf6b61d0730abfa0855229b133100ef555 (diff) | |
download | jgit-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.java | 10 |
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 |