[ 
https://issues.apache.org/jira/browse/HTTPCORE-51?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_12477805
 ] 

Anders Wallgren commented on HTTPCORE-51:
-----------------------------------------

That seems to have fixed the symptoms on my end -- thanks for the quick 
response.  I'll modify my requestReady handler to behave correctly if called 
more than once.

> My HttpRequestExecutionHandler.submitRequest is being called repeatedly
> -----------------------------------------------------------------------
>
>                 Key: HTTPCORE-51
>                 URL: https://issues.apache.org/jira/browse/HTTPCORE-51
>             Project: HttpComponents Core
>          Issue Type: Bug
>          Components: HttpCore NIO
>         Environment: Windows Vista
>            Reporter: Anders Wallgren
>         Assigned To: Oleg Kalnichevski
>             Fix For: 4.0-alpha4
>
>
> In my test suite, I'm sending a single post, but I'm finding that my 
> HttpRequestExecutionHandler.submitRequest handler is being called multiple 
> times.  I think I've tracked it down to 
> DefaultNHttpClientConnection.productOutput:
>     public void produceOutput(final NHttpClientHandler handler) {
>         try {
>             if (this.outbuf.hasData()) {
>                 this.outbuf.flush(this.session.channel());   <<--- this is 
> called
>             }
>             if (!this.outbuf.hasData()) {
>                 if (this.closed) {
>                     this.session.close();
>                     resetOutput();
>                     return;
>                 } else {
>                     if (this.contentEncoder != null) {
>                         handler.outputReady(this, this.contentEncoder);
>                         if (this.contentEncoder.isCompleted()) {
>                             resetOutput();   <<<<----- then this 
>                         }
>                     }
>                 }
>                 if (this.contentEncoder == null && !this.outbuf.hasData()) {
>                     this.session.clearEvent(EventMask.WRITE);
>                 }
>             }
>         } catch (IOException ex) {
>             handler.exception(this, ex);
>         } finally {
>             // Finally set buffered output flag
>             this.hasBufferedOutput = this.outbuf.hasData();
>         }
>         if (this.request == null && !this.closed) {
>             handler.requestReady(this);   <<<--- then this
>         }
>     }
> The sequence of events is that my submitRequest is called once, then when the 
> channel becomes writable, produceOutput is called.  It's a small request (3 
> bytes of content), so the first branch is followed and outbuf is flushed.  
> Then there is no more data, and the second branch is called, where 
> resetOutput is called, but the method doesn't return.  Then, at the bottom of 
> produceOutput, handle.requestReady is called again, since resetOutput set 
> request to null.
> Am I doing something wrong, or is there a bug here?

-- 
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