Change default QuicStream priority when using IETF QUIC.
This allows removal of MaybeSendPriorityUpdateFrame() call in
QuicSpdyStream::WriteHeaders(): if priority is default, no need to send
PRIORITY_UPDATE; if SetPriority() has been called, then PRIORITY_UPDATE has
already been sent.
gfe-relnote: n/a, change to QUIC v99-only code. Protected by existing disabled gfe2_reloadable_flag_quic_enable_version_99.
PiperOrigin-RevId: 292745471
Change-Id: Ic9fff95e6a1650a91449a659fbe156265f2b9cac
diff --git a/quic/core/quic_stream.cc b/quic/core/quic_stream.cc
index bcdf0d9..f2c7c88 100644
--- a/quic/core/quic_stream.cc
+++ b/quic/core/quic_stream.cc
@@ -106,6 +106,9 @@
// static
const SpdyPriority QuicStream::kDefaultPriority;
+// static
+const int QuicStream::kDefaultUrgency;
+
PendingStream::PendingStream(QuicStreamId id, QuicSession* session)
: id_(id),
session_(session),
@@ -334,12 +337,7 @@
: sequencer_(std::move(sequencer)),
id_(id),
session_(session),
- precedence_(
- session->use_http2_priority_write_scheduler()
- ? spdy::SpdyStreamPrecedence(0,
- spdy::kHttp2DefaultStreamWeight,
- false)
- : spdy::SpdyStreamPrecedence(kDefaultPriority)),
+ precedence_(CalculateDefaultPriority(session)),
stream_bytes_read_(stream_bytes_read),
stream_error_(QUIC_STREAM_NO_ERROR),
connection_error_(QUIC_NO_ERROR),
@@ -1193,4 +1191,19 @@
session_->SendStopSending(code, id_);
}
+// static
+spdy::SpdyStreamPrecedence QuicStream::CalculateDefaultPriority(
+ const QuicSession* session) {
+ if (VersionUsesHttp3(session->transport_version())) {
+ return spdy::SpdyStreamPrecedence(QuicStream::kDefaultUrgency);
+ }
+
+ if (session->use_http2_priority_write_scheduler()) {
+ return spdy::SpdyStreamPrecedence(0, spdy::kHttp2DefaultStreamWeight,
+ false);
+ }
+
+ return spdy::SpdyStreamPrecedence(QuicStream::kDefaultPriority);
+}
+
} // namespace quic