Do not send out MAX_PUSH_ID frame if the client sets max_push_id to 0(default value).
Client side change only. not protected.
PiperOrigin-RevId: 326568330
Change-Id: I5776857f36209506a948b33ad32e11077eb6032f
diff --git a/quic/core/http/quic_spdy_session.cc b/quic/core/http/quic_spdy_session.cc
index f3c96e9..9a9f445 100644
--- a/quic/core/http/quic_spdy_session.cc
+++ b/quic/core/http/quic_spdy_session.cc
@@ -1330,6 +1330,11 @@
DCHECK_GE(max_push_id, max_push_id_.value());
}
+ if (!max_push_id_.has_value() && max_push_id == 0) {
+ // The default max_push_id is 0. So no need to send out MaxPushId frame.
+ return;
+ }
+
ietf_server_push_enabled_ = true;
if (max_push_id_.has_value()) {
diff --git a/quic/core/http/quic_spdy_session_test.cc b/quic/core/http/quic_spdy_session_test.cc
index 18d3d75..189deac 100644
--- a/quic/core/http/quic_spdy_session_test.cc
+++ b/quic/core/http/quic_spdy_session_test.cc
@@ -3013,6 +3013,21 @@
CompleteHandshake();
}
+TEST_P(QuicSpdySessionTestClient, DoNotSendInitialMaxPushIdIfSetToDefaut) {
+ if (!VersionUsesHttp3(transport_version())) {
+ return;
+ }
+
+ StrictMock<MockHttp3DebugVisitor> debug_visitor;
+ session_.set_debug_visitor(&debug_visitor);
+
+ session_.SetMaxPushId(0);
+
+ InSequence s;
+ EXPECT_CALL(debug_visitor, OnSettingsFrameSent(_));
+ CompleteHandshake();
+}
+
} // namespace
} // namespace test
} // namespace quic