WARNING: THIS SITE IS A MIRROR OF GITHUB.COM / IT CANNOT LOGIN OR REGISTER ACCOUNTS / THE CONTENTS ARE PROVIDED AS-IS / THIS SITE ASSUMES NO RESPONSIBILITY FOR ANY DISPLAYED CONTENT OR LINKS / IF YOU FOUND SOMETHING MAY NOT GOOD FOR EVERYONE, CONTACT ADMIN AT ilovescratch@foxmail.com
Skip to content

Conversation

@marty1885
Copy link
Member

@marty1885 marty1885 commented Dec 20, 2025

New fixes to HTTP/2 implementation

Bug fixes & performance:

  • Corrected padding format when sending frames
  • Fix overly strict asserts in debug mode
  • Proper support for tailers
  • Remove limit of not supporting large headers + no body (treated as tailers)
  • Greatly increase large file download speed
    • Increased RX window increment by 4MB instead of 65K
    • Increased RX window increment threshold from 16K to 256K
    • Increased our advertised initial window size to 512K over the RFC default of 65K
  • Logs protocol error
  • Optimize stream tracking when body is larger then available TX window
  • Handle malicious servers intentionally triggering overflow in our TX window size
  • Added support to send ping periodically
    • Disabled by default. Can be enabled with client->setPingInterval(seconds)
  • Increase max allowed encoded header size from 2K to 2MB
  • Avoid UAF on GOAWAY handling
  • Relax some recoverable error to stream level instead of killing the entire connection

RFC Compliance:

  • Ignore MSB for GoAway frame
  • Window size increment of 0 is now an error
  • The 1st INITIAL_WINDOW_SIZE settings affect all streams
    • Handles negative window correctly
  • Respect server's DYNAMIC_TABLE_SIZE settings
  • Headers containing upper case letter treated as error
  • Sends our own RST_STREAM if we detect a recoverable problem instead of GOAWAY

Stress testing passed:

  • Download Arch Linux ISO from Fastly at 78MB/s (near line rate from home, acceptable given RTT)

Changes:

  • Environment variable DROGON_DISABLE_HTTP2_CLIENT=1 will disable HTTP/2 in client (escape hatch in case there's trouble)

@marty1885 marty1885 changed the title New batch of HTTP/2 protocol fixed New batch of HTTP/2 protocol fixes Dec 20, 2025
@marty1885 marty1885 merged commit c13e1ee into http2-beta Dec 21, 2025
31 checks passed
@marty1885 marty1885 deleted the http2-beta-fixes branch December 21, 2025 06:15
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants