* Issue #4376 Async Content Complete
Added test harness to reproduce unready completing write.
Fixed test by not closing output prior to becoming READY
Signed-off-by: Greg Wilkins <gregw@webtide.com>
* Issue #4331 Async Write Complete
Test harness to reproduce unready when closing/completing.
Signed-off-by: Greg Wilkins <gregw@webtide.com>
* Issue #4331 Async Write Complete
test both PENDING and UNREADY
Signed-off-by: Greg Wilkins <gregw@webtide.com>
* Issue #4331 Async Write Complete
test cleanups
Signed-off-by: Greg Wilkins <gregw@webtide.com>
* Issue #4331 Async Close Complete
Cleanups of write
Signed-off-by: Greg Wilkins <gregw@webtide.com>
* WIP
Signed-off-by: Greg Wilkins <gregw@webtide.com>
* Issue #4331 Close Complete
Work in progress
Signed-off-by: Greg Wilkins <gregw@webtide.com>
* Issue #4331 Close Complete
Added async close to HttpWriter and ResponseWriter
Always use async close, with blocker if necessary.
Signed-off-by: Greg Wilkins <gregw@webtide.com>
* Issue #4331 Close Complete
Working async close complete!
Signed-off-by: Greg Wilkins <gregw@webtide.com>
* Issue #4331 Close Complete
invert test as we can now call complete when not ready!
Signed-off-by: Greg Wilkins <gregw@webtide.com>
* Issue #4331 Close Complete
fixed transition to ERROR state
Signed-off-by: Greg Wilkins <gregw@webtide.com>
* Issue #4331 Close Complete
async close after onError
Signed-off-by: Greg Wilkins <gregw@webtide.com>
* Issue #4331 Close Complete
minor cleanups
Signed-off-by: Greg Wilkins <gregw@webtide.com>
* Issue #4331 Close Complete
Fix for proxy tests
Signed-off-by: Greg Wilkins <gregw@webtide.com>
* Issue #4331 Close Complete
Fix write loop to handle clear of p=0,l=0 rather than p=l
Signed-off-by: Greg Wilkins <gregw@webtide.com>
* Issue #4331 Close Complete
Removed old close on all content mechanism
Cleanups and some more TODOs
Signed-off-by: Greg Wilkins <gregw@webtide.com>
* Issue #4331 Close Complete
a reworking of HttpOutput to separate out API state.
Signed-off-by: Greg Wilkins <gregw@webtide.com>
* Issue #4331 Close Complete
Soft close for Dispatcher
release buffer in onWriteComplete
Signed-off-by: Greg Wilkins <gregw@webtide.com>
* Issue #4331 Close Complete
Set _onError in onWriteComplete
NOOP callback instead of null
Signed-off-by: Greg Wilkins <gregw@webtide.com>
* Issue #4331 Close Complete
failure closes HttpOutput
Signed-off-by: Greg Wilkins <gregw@webtide.com>
* Issue #4331 Close Complete
Moved closedCallback handling to onWriteComplete
Signed-off-by: Greg Wilkins <gregw@webtide.com>
* Issue #4331 Close Complete
Additional test of complete during blocking write.
Signed-off-by: Greg Wilkins <gregw@webtide.com>
* Issue #4331 Close Complete
reimplemented blocking close to sometimes be async
Signed-off-by: Greg Wilkins <gregw@webtide.com>
* Issue #4331 Close Complete
ascii "art"
Signed-off-by: Greg Wilkins <gregw@webtide.com>
* Issue #4331 Close Complete
Code cleanup. Use a CLOSE state rather than non null closedCallback to be clearer that it is a state.
Renamed close(Callback) to complete(Callback)
Renamed and simplified closed() to completed()
Signed-off-by: Greg Wilkins <gregw@webtide.com>
* Issue #4331 Close Complete
Do not dispatch
Better ascii art
improved close impl to be similar to complete
Signed-off-by: Greg Wilkins <gregw@webtide.com>
* Issue #4331 Close Complete
More test cases
Signed-off-by: Greg Wilkins <gregw@webtide.com>
* Issue #4331 Close Complete
retain execute behaviour in 9.4. review in 10.
Signed-off-by: Greg Wilkins <gregw@webtide.com>
* Improved javadoc and ascii art
* Improved CLOSING
Switch to CLOSING state as soon as last write is done, even if several non last channelWrites will be done. This allows a subsequent call to close to know that nothing needs to be written and can avoid some EOF exceptions. Now onWriteComplete acts only on the passed in last parameter.
Added test for sendContent
* WIP
Aggregate within lock
pipeline test debug
* Avoid creating ignored exception when Idle or Failed.
* Try a parse without fill to avoid unconsumed input debug
* fixed pipeline size
* release buffer before callback
* turn off debug
Signed-off-by: Greg Wilkins <gregw@webtide.com>
* Issue #4331 Close Complete
Better javadoc
refactored onWriteComplete logic to be simpler
fixed bug with flush of last written byte
Signed-off-by: Greg Wilkins <gregw@webtide.com>
* Issue #4331 Close Complete
Completely reworked test harness for better coverage.
Signed-off-by: Greg Wilkins <gregw@webtide.com>
* Issue #4331 Close Complete
Reworked order of ifs to match logic above in onWriteComplete
Signed-off-by: Greg Wilkins <gregw@webtide.com>
Added test case that verifies the current behavior (abort the response
in case complete() is called with a pending write()).
Signed-off-by: Simone Bordet <simone.bordet@gmail.com>
Now correctly handling no demand before the content
in FCGI and HTTP2 transports.
Fixed HttpRequest to correctly forward onBeforeContent()
to wrapped listeners.
Signed-off-by: Simone Bordet <simone.bordet@gmail.com>
Introduced RateControl.Factory to create instances of RateControl
for each connection.
Modified relevant XML files and added distribution test for h2.
Signed-off-by: Simone Bordet <simone.bordet@gmail.com>
* Issue #4265 Remove doError
The doError method and the ErrorDispatchHandler class were
hang overs from when we needed to dispatch into a context to get sendError called, which would then generate the error page.
Now sendError doesn't do any generation, rather it changes state that arranges either for a minimal error page to be generated or an ERROR dispatch to a real handler/servlet to generate the error page.
Thus the ErrorDispatchHandler and doError methods can now be removed.
Signed-off-by: Greg Wilkins <gregw@webtide.com>
* Issue #4265 Remove doError
Moved the error page dispatching logic back to the ErrorHandler class to assist with backwards compatibility
Signed-off-by: Greg Wilkins <gregw@webtide.com>
* Issue #4265 Remove doError
Moved the error page dispatching logic back to the ErrorHandler class to assist with backwards compatibility
Signed-off-by: Greg Wilkins <gregw@webtide.com>
* Issue #4265 doError
Updates from review.
Signed-off-by: Greg Wilkins <gregw@webtide.com>
Invalid HTTP/2 headers are now causing an error rather than being ignored.
HTTP2Flusher now catches HpackException.StreamException and generates a
RST_STREAM frame, rather than just closing the connection.
Modified HpackEncoder to throw HpackException in case of encoding failure.
Introduced HpackEncoder.validateEncoding (defaults true) so validation of
the headers can be disabled (useful for tests).
Signed-off-by: Simone Bordet <simone.bordet@gmail.com>
Introduced a Response.DemandedContentListener to explicitly separate
the will to request more content from the notification that the content
has been consumed.
Updated all transports to follow the new semantic: rather than waiting
for the callback to complete before delivering more content, now they
wait for the demand to be positive to deliver more content.
Since now the content may be unconsumed but there can be more demand,
all transport implementation had to be changed to use RetainableByteBuffer
to retain content buffers that were not consumed.
Signed-off-by: Simone Bordet <simone.bordet@gmail.com>
Code cleanups and reformatting.
Fixed logic for SETTINGS frame replies: they are not subject to rate control.
Signed-off-by: Simone Bordet <simone.bordet@gmail.com>