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