Details
-
Bug
-
Status: Resolved
-
Major
-
Resolution: Fixed
-
5.2-alpha1
-
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.