You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@hc.apache.org by "Richard Hernandez (JIRA)" <ji...@apache.org> on 2019/02/05 21:01:00 UTC

[jira] [Created] (HTTPCORE-568) ReactiveDataConsumer receives at most 65k bytes over HTTP/1.1

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: dev-unsubscribe@hc.apache.org
For additional commands, e-mail: dev-help@hc.apache.org