[WAGON-480] Non-threadsafe HttpClientContext is shared between threaded use of 
HttpClientWagon

The HttpClientContext is created fresh with every execute(), guaranteeing
thread safety.


Project: http://git-wip-us.apache.org/repos/asf/maven-wagon/repo
Commit: http://git-wip-us.apache.org/repos/asf/maven-wagon/commit/1a005f1c
Tree: http://git-wip-us.apache.org/repos/asf/maven-wagon/tree/1a005f1c
Diff: http://git-wip-us.apache.org/repos/asf/maven-wagon/diff/1a005f1c

Branch: refs/heads/master
Commit: 1a005f1c3fe7492c10b06567738453118f1c15b6
Parents: 4074598
Author: Michael Osipov <micha...@apache.org>
Authored: Wed Dec 28 01:20:07 2016 +0100
Committer: Michael Osipov <micha...@apache.org>
Committed: Tue Jan 3 22:12:24 2017 +0100

----------------------------------------------------------------------
 .../maven/wagon/providers/http/AbstractHttpClientWagon.java  | 8 +++-----
 1 file changed, 3 insertions(+), 5 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/maven-wagon/blob/1a005f1c/wagon-providers/wagon-http/src/main/java/org/apache/maven/wagon/providers/http/AbstractHttpClientWagon.java
----------------------------------------------------------------------
diff --git 
a/wagon-providers/wagon-http/src/main/java/org/apache/maven/wagon/providers/http/AbstractHttpClientWagon.java
 
b/wagon-providers/wagon-http/src/main/java/org/apache/maven/wagon/providers/http/AbstractHttpClientWagon.java
index d38506f..9ef9544 100755
--- 
a/wagon-providers/wagon-http/src/main/java/org/apache/maven/wagon/providers/http/AbstractHttpClientWagon.java
+++ 
b/wagon-providers/wagon-http/src/main/java/org/apache/maven/wagon/providers/http/AbstractHttpClientWagon.java
@@ -383,8 +383,6 @@ public abstract class AbstractHttpClientWagon
 
     private AuthCache authCache;
 
-    private HttpClientContext localContext;
-
     private Closeable closeable;
 
     /**
@@ -414,11 +412,8 @@ public abstract class AbstractHttpClientWagon
     {
         repository.setUrl( getURL( repository ) );
 
-        localContext = HttpClientContext.create();
         credentialsProvider = new BasicCredentialsProvider();
         authCache = new BasicAuthCache();
-        localContext.setCredentialsProvider( credentialsProvider );
-        localContext.setAuthCache( authCache );
 
         if ( authenticationInfo != null )
         {
@@ -788,6 +783,9 @@ public abstract class AbstractHttpClientWagon
             requestConfigBuilder.setRedirectsEnabled( false );
         }
 
+        HttpClientContext localContext = HttpClientContext.create();
+        localContext.setCredentialsProvider( credentialsProvider );
+        localContext.setAuthCache( authCache );
         localContext.setRequestConfig( requestConfigBuilder.build() );
 
         if ( config != null && config.isUsePreemptive() )

Reply via email to