Richard Hernandez created HTTPCORE-568:
------------------------------------------
Summary: ReactiveDataConsumer receives at most 65k bytes over
HTTP/1.1
Key: HTTPCORE-568
URL: https://issues.apache.org/jira/browse/HTTPCORE-568
Project: HttpComponents HttpCore
Issue Type: Bug
Components: HttpCore
Affects Versions: 5.0-beta6
Reporter: Richard Hernandez
[The addition of an input window to
AbstractHttp1StreamDuplexer|https://github.com/apache/httpcomponents-core/commit/3252c39fd803f86c6856caa83b683d31e45b8391#diff-4ceed36abd5cb9433de24f108c90195aR292]
causes ReactiveDataConsumer to only receive as many bytes as the input
window's initial size. By default, this is only 65,536 bytes.
The problem is that updateCapacity is only called after the window is
exhausted. This happens after consume returns, which is where
RectiveDataConsumer tries to signal available capacity to its capacityChannel.
As a result, it's never able to signal more capacity to
AbstractHttp1StreamDuplexer, and all future bytes on this channel get stuck in
the system's socket receive buffer.
As far as I can tell, the capacity channel was never set in prior releases. It
just happened to work because my tests never exhausted the buffer space in
ReactiveDataConsumer.
--
This message was sent by Atlassian JIRA
(v7.6.3#76005)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]