Ensure WebTransport QUIC streams are always set to level-triggered mode. MOQT and other WebTransport users rely on that behavior, and apparently we can currently deadlock if that is not true. PiperOrigin-RevId: 852836409
diff --git a/quiche/quic/core/http/web_transport_stream_adapter.cc b/quiche/quic/core/http/web_transport_stream_adapter.cc index fe68dfa..47357c6 100644 --- a/quiche/quic/core/http/web_transport_stream_adapter.cc +++ b/quiche/quic/core/http/web_transport_stream_adapter.cc
@@ -128,6 +128,7 @@ } size_t WebTransportStreamAdapter::ReadableBytes() const { + QUICHE_DCHECK(sequencer_->level_triggered()); return sequencer_->ReadableBytes(); }
diff --git a/quiche/quic/core/quic_generic_session.cc b/quiche/quic/core/quic_generic_session.cc index a687f74..a592f1a 100644 --- a/quiche/quic/core/quic_generic_session.cc +++ b/quiche/quic/core/quic_generic_session.cc
@@ -60,6 +60,7 @@ id, session->connection()->perspective(), session->IsIncomingStream(id), session->version())), adapter_(session, this, sequencer(), std::nullopt) { + sequencer()->set_level_triggered(true); adapter_.SetPriority(webtransport::StreamPriority{0, 0}); }