Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 083734c95c0b96991e4e97f1bff0de02ccb17830
      
https://github.com/WebKit/WebKit/commit/083734c95c0b96991e4e97f1bff0de02ccb17830
  Author: Basuke Suzuki <[email protected]>
  Date:   2026-08-06 (Thu, 06 Aug 2026)

  Changed paths:
    M LayoutTests/TestExpectations
    M Source/WebCore/Modules/webtransport/WebTransport.cpp

  Log Message:
  -----------
  [WebTransport] Incoming datagram bursts are dropped because delivery bypasses 
the event loop
https://bugs.webkit.org/show_bug.cgi?id=321176
rdar://184224552

Reviewed by Brady Eidson.

WebTransport::receiveDatagram handed the datagram to the source straight from 
IPC dispatch. IPC
dispatches many messages per run loop turn with no microtask checkpoint in 
between, so a pending
read() could not resolve and pull the next datagram mid-batch. Every arrival 
after the first
therefore evicted the previous one from the incoming queue, and only the first 
and last datagram of
a burst ever reached script.

Deliver through the event loop instead, so a microtask checkpoint runs between 
datagrams and the
reader drains one before the next is queued. Also add the m_state check that 
the other receive
handlers already have.

The incoming queue bound is unchanged. NetworkTransportSession still forwards 
every datagram as an
individual unbounded IPC, so honoring the bound there remains the real 
backpressure fix.

Covered by existing tests: 
imported/w3c/web-platform-tests/webtransport/datagrams.https.any.html
and its worker variants, un-skipped here.

* LayoutTests/TestExpectations:
* Source/WebCore/Modules/webtransport/WebTransport.cpp:
(WebCore::WebTransport::receiveDatagram):

Canonical link: https://commits.webkit.org/318747@main



To unsubscribe from these emails, change your notification settings at 
https://github.com/WebKit/WebKit/settings/notifications

Reply via email to