Skip to content

HTTP/2, treat initial SETTINGS as a WINDOW_UPDATE#11450

Closed
icing wants to merge 4 commits intocurl:masterfrom
icing:h2-settings-unhold
Closed

HTTP/2, treat initial SETTINGS as a WINDOW_UPDATE#11450
icing wants to merge 4 commits intocurl:masterfrom
icing:h2-settings-unhold

Conversation

@icing
Copy link
Copy Markdown
Contributor

@icing icing commented Jul 17, 2023

  • refs HTTP/2 connection uploads stall in 8.1.0 .. 8.1.2 #11426 where spurious stalls on large POST requests are reported
  • the issue seems to involve the following
    • first stream on connection adds up to 64KB of POST data, which is the max default HTTP/2 stream window size transfer is set to HOLD
    • initial SETTINGS from server arrive, enlarging the stream window. But no WINDOW_UPDATE is received.
    • curl stalls
  • the fix un-HOLDs a stream on receiving SETTINGS, not relying on a WINDOW_UPDATE from lazy servers

- refs curl#11426 where spurious stalls on large POST requests
  are reported
- the issue seems to involve the following
  * first stream on connection adds up to 64KB of POST
    data, which is the max default HTTP/2 stream window size
    transfer is set to HOLD
  * initial SETTINGS from server arrive, enlarging the stream
    window. But no WINDOW_UPDATE is received.
  * curl stalls
- the fix un-HOLDs a stream on receiving SETTINGS, not
  relying on a WINDOW_UPDATE from lazy servers
Comment thread lib/http2.c Outdated
Comment thread lib/http2.c Outdated
@github-actions github-actions bot added the tests label Jul 17, 2023
@bagder bagder closed this in 380fe02 Jul 17, 2023
bch pushed a commit to bch/curl that referenced this pull request Jul 19, 2023
- refs curl#11426 where spurious stalls on large POST requests
  are reported
- the issue seems to involve the following
  * first stream on connection adds up to 64KB of POST
    data, which is the max default HTTP/2 stream window size
    transfer is set to HOLD
  * initial SETTINGS from server arrive, enlarging the stream
    window. But no WINDOW_UPDATE is received.
  * curl stalls
- the fix un-HOLDs a stream on receiving SETTINGS, not
  relying on a WINDOW_UPDATE from lazy servers

Closes curl#11450
ptitSeb pushed a commit to wasix-org/curl that referenced this pull request Sep 25, 2023
- refs curl#11426 where spurious stalls on large POST requests
  are reported
- the issue seems to involve the following
  * first stream on connection adds up to 64KB of POST
    data, which is the max default HTTP/2 stream window size
    transfer is set to HOLD
  * initial SETTINGS from server arrive, enlarging the stream
    window. But no WINDOW_UPDATE is received.
  * curl stalls
- the fix un-HOLDs a stream on receiving SETTINGS, not
  relying on a WINDOW_UPDATE from lazy servers

Closes curl#11450
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Development

Successfully merging this pull request may close these issues.

2 participants