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
Affects Versions: 4.0-alpha5
Environment: Windows Vista
Reporter: Anders Wallgren
Fix For: 4.0-alpha5
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]