[ 
https://issues.apache.org/jira/browse/HTTPCORE-117?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Oleg Kalnichevski resolved HTTPCORE-117.
----------------------------------------

    Resolution: Fixed

Fixed in SVN trunk. David, could you please test the fix?

Oleg


> bug in timeout disconnect with pending output
> ---------------------------------------------
>
>                 Key: HTTPCORE-117
>                 URL: https://issues.apache.org/jira/browse/HTTPCORE-117
>             Project: HttpComponents Core
>          Issue Type: Bug
>          Components: HttpCore NIO
>    Affects Versions: 4.0-alpha5
>            Reporter: David Koski
>            Assignee: Oleg Kalnichevski
>             Fix For: 4.0-alpha6
>
>
> I ran into some trouble where I had a connection that was timing out but 
> still had unsent data.  This method gets called:
> org.apache.http.impl.nio.DefaultClientIOEventDispatch.timeout(IOSession)
> which calls these (in my case):
> org.apache.http.nio.protocol.BufferingHttpClientHandler.timeout(NHttpClientConnection)
> org.apache.http.impl.nio.NHttpConnectionBase.close()
> finally coming to close the connection itself:
>     public void close() throws IOException {
>         this.closed = true;
>         if (this.outbuf.hasData()) {
>             this.session.setEvent(EventMask.WRITE);
>         } else {
>             this.session.close();
>         }
>     }
> However, this.outbuf DID have data, so it just marked itself for writing.  
> The connection was in no better shape, so after the connect timeout expired, 
> it called this method again.  And again.  There may be a good reason that it 
> was done this way, but it looks like it causes a problem.
> I am not sure what state the connection was in, but it looked like the 
> connection was established and NO data had been sent.  I noticed that the 
> hasBufferedOutput flag was false, though there was actually data to send.  
> That is set here:
>     public void produceOutput(final NHttpClientHandler handler) {
> ...
>         } finally {
>             // Finally set buffered output flag
>             this.hasBufferedOutput = this.outbuf.hasData();
>         }
> which suggests that this method was never called.  I can't say if that was a 
> problem in the client or the server (load balancer in this case) just wasn't 
> handling any input.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to