You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hc.apache.org by ol...@apache.org on 2014/01/10 10:51:32 UTC

svn commit: r1557068 - in /httpcomponents/httpasyncclient/trunk: RELEASE_NOTES.txt httpasyncclient/src/main/java/org/apache/http/impl/nio/client/MainClientExec.java

Author: olegk
Date: Fri Jan 10 09:51:32 2014
New Revision: 1557068

URL: http://svn.apache.org/r1557068
Log:
HTTPCLIENT-1446:  NTLM proxy + BASIC target auth fails with 'Unexpected state: MSG_TYPE3_GENERATED

Modified:
    httpcomponents/httpasyncclient/trunk/RELEASE_NOTES.txt
    httpcomponents/httpasyncclient/trunk/httpasyncclient/src/main/java/org/apache/http/impl/nio/client/MainClientExec.java

Modified: httpcomponents/httpasyncclient/trunk/RELEASE_NOTES.txt
URL: http://svn.apache.org/viewvc/httpcomponents/httpasyncclient/trunk/RELEASE_NOTES.txt?rev=1557068&r1=1557067&r2=1557068&view=diff
==============================================================================
--- httpcomponents/httpasyncclient/trunk/RELEASE_NOTES.txt (original)
+++ httpcomponents/httpasyncclient/trunk/RELEASE_NOTES.txt Fri Jan 10 09:51:32 2014
@@ -1,6 +1,10 @@
 Changes since 4.0
 -------------------
 
+* [HTTPCLIENT-1446] NTLM proxy + BASIC target auth fails with 'Unexpected state:
+  MSG_TYPE3_GENERATED'.
+  Contributed by Oleg Kalnichevski <olegk at apache.org>
+
 * [HTTPASYNC-63] ConnectionShutdownException thrown in case of out-of-sequence response.
   Contributed by Oleg Kalnichevski <olegk at apache.org>
 

Modified: httpcomponents/httpasyncclient/trunk/httpasyncclient/src/main/java/org/apache/http/impl/nio/client/MainClientExec.java
URL: http://svn.apache.org/viewvc/httpcomponents/httpasyncclient/trunk/httpasyncclient/src/main/java/org/apache/http/impl/nio/client/MainClientExec.java?rev=1557068&r1=1557067&r2=1557068&view=diff
==============================================================================
--- httpcomponents/httpasyncclient/trunk/httpasyncclient/src/main/java/org/apache/http/impl/nio/client/MainClientExec.java (original)
+++ httpcomponents/httpasyncclient/trunk/httpasyncclient/src/main/java/org/apache/http/impl/nio/client/MainClientExec.java Fri Jan 10 09:51:32 2014
@@ -638,15 +638,24 @@ class MainClientExec implements Internal
                         target.getSchemeName());
             }
             final AuthState targetAuthState = localContext.getTargetAuthState();
-            if (this.authenticator.isAuthenticationRequested(target, currentResponse,
-                    this.targetAuthStrategy, targetAuthState, localContext)) {
+            final AuthState proxyAuthState = localContext.getProxyAuthState();
+
+            final boolean targetAuthRequested = this.authenticator.isAuthenticationRequested(
+                    target, currentResponse, this.targetAuthStrategy, targetAuthState, localContext);
+
+            HttpHost proxy = route.getProxyHost();
+            // if proxy is not set use target host instead
+            if (proxy == null) {
+                proxy = route.getTargetHost();
+            }
+            final boolean proxyAuthRequested = this.authenticator.isAuthenticationRequested(
+                    proxy, currentResponse, this.proxyAuthStrategy, proxyAuthState, localContext);
+
+            if (targetAuthRequested) {
                 return this.authenticator.handleAuthChallenge(target, currentResponse,
                         this.targetAuthStrategy, targetAuthState, localContext);
             }
-            final HttpHost proxy = route.getProxyHost();
-            final AuthState proxyAuthState = localContext.getProxyAuthState();
-            if (this.authenticator.isAuthenticationRequested(proxy, currentResponse,
-                    this.proxyAuthStrategy, proxyAuthState, localContext)) {
+            if (proxyAuthRequested) {
                 return this.authenticator.handleAuthChallenge(proxy, currentResponse,
                         this.proxyAuthStrategy, proxyAuthState, localContext);
             }