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

AbstractH2StreamMultiplexer: FrameOutputBuffer: Frame size exceeds maximum

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Resolved
    • Major
    • Resolution: Fixed
    • 5.2-alpha1
    • 5.1.4, 5.2-beta1
    • HttpCore NIO
    • None

    Description

      AbstractH2StreamMultiplexer initializes outputBuffer with frame size from local config:

      this.outputBuffer = new FrameOutputBuffer(this.outputMetrics, this.localConfig.getMaxFrameSize());

       

      Data are streamed using streamData(...) method which checks maxPayloadSize against remote config:

      final int maxPayloadSize = Math.min(capacity, remoteConfig.getMaxFrameSize());

       

      Issue: When remote config has greater max frame size than local config and the payload is also greater than local max frame size, the FrameOutputBuffer throws "Frame size exceeds maximum" error, since it compares the payload size against local frame size as it was initialized with it, not remote frame size.

       

      My suggestion: AbstractH2StreamMultiplexer.applyRemoteSettings(...) should update the outputBuffer's max frame size based on remote config.

       

      I will appreciate your help, as it is really annoying issue depending on remote site config and payload size, so it may be spotted randomly.

      Attachments

        1. http2_flow_frame.txt
          17 kB
          Lubos Husivarga
        2. context_wire_log.txt
          1.21 MB
          Lubos Husivarga

        Activity

          People

            Unassigned Unassigned
            lhusivarga Lubos Husivarga
            Votes:
            0 Vote for this issue
            Watchers:
            3 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: