Commit af75a289 authored by Bence Béky's avatar Bence Béky Committed by Commit Bot

Handle HTTP/3 GOAWAY.

QuicSession::OnGoaway() is only for transport layer GOAWAY in Google
QUIC.  IETF QUIC uses HTTP/3 layer GOAWAY instead, and in order to
handle it, QuicChromiumClientSession should override
QuicSpdySession::OnHttp3Goaway() as well.

Bug: 1113661
Change-Id: I4ffa2edea730f823af22af232ecd2cc97856ba56
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2340856Reviewed-by: default avatarRenjie Tang <renjietang@chromium.org>
Commit-Queue: Bence Béky <bnc@chromium.org>
Cr-Commit-Position: refs/heads/master@{#795535}
parent dcac21c1
......@@ -1093,6 +1093,12 @@ void QuicChromiumClientSession::UpdateStreamPriority(
quic::QuicSpdySession::UpdateStreamPriority(id, new_precedence);
}
void QuicChromiumClientSession::OnHttp3GoAway(uint64_t id) {
// TODO(https://crbug.com/1113661): Retry requests with stream ID greater than
// or equal to |id|.
quic::QuicSpdySession::OnHttp3GoAway(id);
NotifyFactoryOfSessionGoingAway();
}
void QuicChromiumClientSession::AddHandle(Handle* handle) {
if (going_away_) {
......
......@@ -528,6 +528,7 @@ class NET_EXPORT_PRIVATE QuicChromiumClientSession
void UpdateStreamPriority(
quic::QuicStreamId id,
const spdy::SpdyStreamPrecedence& new_precedence) override;
void OnHttp3GoAway(uint64_t id) override;
// quic::QuicSession methods:
QuicChromiumClientStream* CreateOutgoingBidirectionalStream() override;
......
......@@ -1553,9 +1553,13 @@ TEST_P(QuicChromiumClientSessionTest, GoAwayReceived) {
// After receiving a GoAway, I should no longer be able to create outgoing
// streams.
session_->connection()->OnGoAwayFrame(
quic::QuicGoAwayFrame(quic::kInvalidControlFrameId,
quic::QUIC_PEER_GOING_AWAY, 1u, "Going away."));
if (VersionUsesHttp3(version_.transport_version)) {
session_->OnHttp3GoAway(0);
} else {
session_->connection()->OnGoAwayFrame(
quic::QuicGoAwayFrame(quic::kInvalidControlFrameId,
quic::QUIC_PEER_GOING_AWAY, 1u, "Going away."));
}
EXPECT_EQ(nullptr, QuicChromiumClientSessionPeer::CreateOutgoingStream(
session_.get()));
}
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment