From 8598fe3d2bdc6e4a7e136a8579fad2545f34f546 Mon Sep 17 00:00:00 2001 From: Matthias Sohn Date: Sat, 15 Mar 2014 10:49:22 +0100 Subject: [PATCH] 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 --- .../src/org/eclipse/jgit/transport/TransportHttp.java | 10 ++++++---- 1 file 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 fe55e2377..5885e7b52 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