[ 
https://issues.apache.org/jira/browse/HTTPASYNC-143?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16588178#comment-16588178
 ] 

Isa Muqattash commented on HTTPASYNC-143:
-----------------------------------------

Thank you [~olegk] for the quick and detailed response. Will go with your 
recommendation of using a lightweight request for handshake.

For everyone's benefit, it turns out the issue cannot be reproduced on Unix NOR 
Windows when going directly from a machine to the SharePoint server. However, 
the issue reproduces reliably when the host making the Web Service request sits 
behind an Apache load balancer (which is presumably causing a delay of sorts).

 

Cheers,

Isa

> Connection closed randomly during NTLM authorization
> ----------------------------------------------------
>
>                 Key: HTTPASYNC-143
>                 URL: https://issues.apache.org/jira/browse/HTTPASYNC-143
>             Project: HttpComponents HttpAsyncClient
>          Issue Type: Bug
>    Affects Versions: 4.1.4
>            Reporter: Isa Muqattash
>            Priority: Major
>         Attachments: asyncHttpClient_failed.log, asyncHttpClient_success.log
>
>
> Recently switched from the (synchronous) HttpClient to HttpAsyncClient, and 
> I'm dealing with a HTTP 401 error returned from an HTTP POST that involves 
> NTLM authentication.
> The issue sporadically occurs, more frequently with HttpAsyncClient 4.1.3, 
> and still occurs in 4.1.4 but less frequently.
>  The HTTP POST request incorrectly includes a "Content-Type: 
> Application/JSON" header and the body is a ZIP file binary, and removing that 
> header seems to make the issue go away, or at least I cannot reproduce the 
> random behavior when the head is not specified. However, all this worked fine 
> with the synchronous HttpClient and it will be difficult to go to many many 
> applications and remove that additional header, which I'm not sure why it 
> would cause this issue described here.
> I enabled context and wire logs, and what I'm seeing is that the three-step 
> NTLM handshake takes place. When the issue does not reproduce, all three 
> steps occur on the same connection. But when the issue reproduces, the 
> context and wire logs show that the connection is closed between each of the 
> three steps.
> Furthermore, I looked into this for several days and the issue reproduces 
> more frequently with some zip binaries rather than other. The same zip file 
> sometimes succeeds but other times fails.
> Perhaps there is some JSON parsing taking place that randomly causes issues 
> and causes the connection to be closed? (I'm just rambling now but just 
> trying to give as much info as possible...)
> Sample success and failure handshake logs attached.
> Source code I'm using is as follows (stripped down):
>  
> {code:java}
> val httpclientB = HttpAsyncClients.custom().setRedirectStrategy(new 
> LaxRedirectStrategy() {
>    override def createLocationURI(location: String): URI = {
>       super.createLocationURI(location)
> }
> override def isRedirected(req: HttpRequest, resp: HttpResponse, ctxt: 
> HttpContext): Boolean = {
>    super.isRedirected(req, resp, ctxt)
> } 
> override def getRedirect(req: HttpRequest, resp: HttpResponse, ctxt: 
> HttpContext): HttpUriRequest = {
>    val x = super.getRedirect(req, resp, ctxt)
>    if (x.containsHeader("Content-Length")) {
>       x.removeHeaders("Content-Length")
>    }
>    x
> }
> })
> val credsProvider = new BasicCredentialsProvider()
> credsProvider.setCredentials(AuthScope.ANY, new NTCredentials("foo", "bar", 
> "baz", "domain"))
> httpclientB.setDefaultCredentialsProvider(credsProvider)
> val httpClient = httpclientB.useSystemProperties().build()
> httpClient.start()
> val future = httpClient.execute(httpRequest, null)
> future.get(Long.MaxValue, TimeUnit.MILLISECONDS))
> {code}
>  
>  



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to