Uploaded image for project: 'HttpComponents HttpCore'
  1. HttpComponents HttpCore
  2. HTTPCORE-568

ReactiveDataConsumer receives at most 65k bytes over HTTP/1.1

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Resolved
    • Major
    • Resolution: Fixed
    • 5.0-beta6
    • 5.0-beta7
    • HttpCore
    • None

    Description

      The addition of an input window to AbstractHttp1StreamDuplexer 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.

      Attachments

        Issue Links

          Activity

            People

              Unassigned Unassigned
              rhernandez Richard Hernandez
              Votes:
              0 Vote for this issue
              Watchers:
              4 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved:

                Time Tracking

                  Estimated:
                  Original Estimate - Not Specified
                  Not Specified
                  Remaining:
                  Remaining Estimate - 0h
                  0h
                  Logged:
                  Time Spent - 0.5h
                  0.5h