Commit 7de17a2d authored by Nick Harper's avatar Nick Harper Committed by Commit Bot

Roll src/net/third_party/quiche/src/ 4de168715..b3359b0b0 (11 commits)

https://quiche.googlesource.com/quiche.git/+log/4de168715fa1..b3359b0b014d

$ git log 4de168715..b3359b0b0 --date=short --no-merges --format='%ad %ae %s'
2020-07-17 fayang Internal QUICHE change
2020-07-17 haoyuewang Internal QUICHE change
2020-07-17 renjietang Remove obsolete TODO.
2020-07-17 renjietang Remove streams_waiting_for_acks_ in QuicSession because it stores duplicate information and only reduces minimal time complexity.
2020-07-17 dschinazi Remove obsolete TODO
2020-07-16 quiche-dev Add missing using declaration or qualification for names in the testing namespace. Googletest is changing its implementation details and can break code that is unnecessarily depending on ADL (go/totw-adl).
2020-07-16 renjietang Move handling of STOP_SENDING frame from QuicSession to QuicStream.
2020-07-16 wub In uStreamer, add a quic_enable_bandwidth_overestimate_avoidance experiment flag and use it to enable bandwidth overestimate avoidance(connection option BSAO) for BBR and BBRv2.
2020-07-16 fayang In quic, do not arm pto timer with no packets in flight if handshake packet gets received by peer. affecting client only. not protected.
2020-07-16 quiche-dev Add flag to remove common certs
2020-07-16 dschinazi Fix formatting of QUIC IETF draft version

Created with:
  roll-dep src/net/third_party/quiche/src src/third_party/quic_trace/src

Change-Id: I560d7b7512408e0dd5e62e692667902a41568f3a
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2305245Reviewed-by: default avatarRenjie Tang <renjietang@chromium.org>
Reviewed-by: default avatarDavid Schinazi <dschinazi@chromium.org>
Commit-Queue: David Schinazi <dschinazi@chromium.org>
Cr-Commit-Position: refs/heads/master@{#790032}
parent 35b009b0
...@@ -322,7 +322,7 @@ vars = { ...@@ -322,7 +322,7 @@ vars = {
# Three lines of non-changing comments so that # Three lines of non-changing comments so that
# the commit queue can handle CLs rolling feed # the commit queue can handle CLs rolling feed
# and whatever else without interference from each other. # and whatever else without interference from each other.
'quiche_revision': '4de168715fa1e0c5909c570c3c01a762132c94aa', 'quiche_revision': 'b3359b0b014d81e6986700478969af146e025155',
# Three lines of non-changing comments so that # Three lines of non-changing comments so that
# the commit queue can handle CLs rolling ios_webkit # the commit queue can handle CLs rolling ios_webkit
# and whatever else without interference from each other. # and whatever else without interference from each other.
......
...@@ -68,10 +68,11 @@ class MockQuicClientSessionBase : public quic::QuicSpdyClientSessionBase { ...@@ -68,10 +68,11 @@ class MockQuicClientSessionBase : public quic::QuicSpdyClientSessionBase {
quic::StreamSendingState state, quic::StreamSendingState state,
quic::TransmissionType type, quic::TransmissionType type,
quiche::QuicheOptional<quic::EncryptionLevel> level)); quiche::QuicheOptional<quic::EncryptionLevel> level));
MOCK_METHOD3(SendRstStream, MOCK_METHOD4(SendRstStream,
void(quic::QuicStreamId stream_id, void(quic::QuicStreamId stream_id,
quic::QuicRstStreamErrorCode error, quic::QuicRstStreamErrorCode error,
quic::QuicStreamOffset bytes_written)); quic::QuicStreamOffset bytes_written,
bool send_rst_only));
MOCK_METHOD2(OnStreamHeaders, MOCK_METHOD2(OnStreamHeaders,
void(quic::QuicStreamId stream_id, void(quic::QuicStreamId stream_id,
...@@ -369,7 +370,7 @@ TEST_P(QuicChromiumClientStreamTest, HandleAfterConnectionClose) { ...@@ -369,7 +370,7 @@ TEST_P(QuicChromiumClientStreamTest, HandleAfterConnectionClose) {
session_, session_,
SendRstStream(quic::test::GetNthClientInitiatedBidirectionalStreamId( SendRstStream(quic::test::GetNthClientInitiatedBidirectionalStreamId(
version_.transport_version, 0), version_.transport_version, 0),
quic::QUIC_RST_ACKNOWLEDGEMENT, 0)); quic::QUIC_RST_ACKNOWLEDGEMENT, 0, _));
stream_->OnConnectionClosed(quic::QUIC_INVALID_FRAME_DATA, stream_->OnConnectionClosed(quic::QUIC_INVALID_FRAME_DATA,
quic::ConnectionCloseSource::FROM_PEER); quic::ConnectionCloseSource::FROM_PEER);
...@@ -384,24 +385,16 @@ TEST_P(QuicChromiumClientStreamTest, HandleAfterStreamReset) { ...@@ -384,24 +385,16 @@ TEST_P(QuicChromiumClientStreamTest, HandleAfterStreamReset) {
quic::test::GetNthClientInitiatedBidirectionalStreamId( quic::test::GetNthClientInitiatedBidirectionalStreamId(
version_.transport_version, 0), version_.transport_version, 0),
quic::QUIC_STREAM_CANCELLED, 0); quic::QUIC_STREAM_CANCELLED, 0);
if (!version_.HasIetfQuicFrames()) {
EXPECT_CALL( quic::QuicRstStreamErrorCode error_code = quic::QUIC_RST_ACKNOWLEDGEMENT;
session_, if (version_.HasIetfQuicFrames()) {
SendRstStream(quic::test::GetNthClientInitiatedBidirectionalStreamId( error_code = quic::QUIC_STREAM_CANCELLED;
version_.transport_version, 0),
quic::QUIC_RST_ACKNOWLEDGEMENT, 0));
} else {
// Intercept & check that the call to the QuicConnection's OnStreamReast
// has correct stream ID and error code -- for V99/IETF Quic, it should
// have the STREAM_CANCELLED error code, not RST_ACK... Capture
// OnStreamReset (rather than SendRstStream) because the V99 path bypasses
// SendRstStream, calling SendRstStreamInner directly. Mocking
// SendRstStreamInner is problematic since the test relies on it to perform
// the closing operations and getting the stream in the correct state.
EXPECT_CALL(
*(static_cast<quic::test::MockQuicConnection*>(session_.connection())),
OnStreamReset(stream_->id(), quic::QUIC_STREAM_CANCELLED));
} }
EXPECT_CALL(
session_,
SendRstStream(quic::test::GetNthClientInitiatedBidirectionalStreamId(
version_.transport_version, 0),
error_code, 0, _));
stream_->OnStreamReset(rst); stream_->OnStreamReset(rst);
if (version_.HasIetfQuicFrames()) { if (version_.HasIetfQuicFrames()) {
...@@ -504,7 +497,7 @@ TEST_P(QuicChromiumClientStreamTest, ProcessHeadersWithError) { ...@@ -504,7 +497,7 @@ TEST_P(QuicChromiumClientStreamTest, ProcessHeadersWithError) {
session_, session_,
SendRstStream(quic::test::GetNthClientInitiatedBidirectionalStreamId( SendRstStream(quic::test::GetNthClientInitiatedBidirectionalStreamId(
version_.transport_version, 0), version_.transport_version, 0),
quic::QUIC_BAD_APPLICATION_PAYLOAD, 0)); quic::QUIC_BAD_APPLICATION_PAYLOAD, 0, _));
auto headers = quic::test::AsHeaderList(bad_headers); auto headers = quic::test::AsHeaderList(bad_headers);
stream_->OnStreamHeaderList(false, headers.uncompressed_header_bytes(), stream_->OnStreamHeaderList(false, headers.uncompressed_header_bytes(),
...@@ -521,7 +514,7 @@ TEST_P(QuicChromiumClientStreamTest, OnDataAvailableWithError) { ...@@ -521,7 +514,7 @@ TEST_P(QuicChromiumClientStreamTest, OnDataAvailableWithError) {
session_, session_,
SendRstStream(quic::test::GetNthClientInitiatedBidirectionalStreamId( SendRstStream(quic::test::GetNthClientInitiatedBidirectionalStreamId(
version_.transport_version, 0), version_.transport_version, 0),
quic::QUIC_STREAM_CANCELLED, 0)); quic::QUIC_STREAM_CANCELLED, 0, _));
const char data[] = "hello world!"; const char data[] = "hello world!";
int data_len = strlen(data); int data_len = strlen(data);
...@@ -958,8 +951,8 @@ TEST_P(QuicChromiumClientStreamTest, ResetOnEmptyResponseHeaders) { ...@@ -958,8 +951,8 @@ TEST_P(QuicChromiumClientStreamTest, ResetOnEmptyResponseHeaders) {
if (!VersionUsesHttp3(version_.transport_version)) { if (!VersionUsesHttp3(version_.transport_version)) {
// QuicSpdyStream resets itself on empty headers, // QuicSpdyStream resets itself on empty headers,
// because it is used to signal that headers were too large. // because it is used to signal that headers were too large.
EXPECT_CALL(session_, EXPECT_CALL(session_, SendRstStream(stream_->id(),
SendRstStream(stream_->id(), quic::QUIC_HEADERS_TOO_LARGE, 0)); quic::QUIC_HEADERS_TOO_LARGE, 0, _));
} }
const spdy::SpdyHeaderBlock empty_response_headers; const spdy::SpdyHeaderBlock empty_response_headers;
......
...@@ -396,3 +396,12 @@ QUIC_FLAG(bool, ...@@ -396,3 +396,12 @@ QUIC_FLAG(bool,
QUIC_FLAG(bool, QUIC_FLAG(bool,
FLAGS_quic_reloadable_flag_quic_record_received_min_ack_delay, FLAGS_quic_reloadable_flag_quic_record_received_min_ack_delay,
false) false)
// If true, QuicSession will no longer need streams_waiting_for_acks_.
QUIC_FLAG(bool,
FLAGS_quic_reloadable_flag_quic_remove_streams_waiting_for_acks,
false)
// When true, ParsedQuicVersionToString will print IETF drafts with format
// draft29 instead of ff00001d.
QUIC_FLAG(bool, FLAGS_quic_reloadable_flag_quic_fix_print_draft_version, false)
...@@ -102,7 +102,7 @@ TEST_F(P2PQuicStreamTest, StreamSendsFinAndCanNoLongerWrite) { ...@@ -102,7 +102,7 @@ TEST_F(P2PQuicStreamTest, StreamSendsFinAndCanNoLongerWrite) {
TEST_F(P2PQuicStreamTest, StreamResetSendsRst) { TEST_F(P2PQuicStreamTest, StreamResetSendsRst) {
InitializeStream(); InitializeStream();
EXPECT_CALL(*session_, SendRstStream(kStreamId, _, _)); EXPECT_CALL(*session_, SendRstStream(kStreamId, _, _, _));
stream_->Reset(); stream_->Reset();
EXPECT_TRUE(stream_->rst_sent()); EXPECT_TRUE(stream_->rst_sent());
} }
...@@ -216,7 +216,7 @@ TEST_F(P2PQuicStreamTest, StreamClosedAfterReceivingReset) { ...@@ -216,7 +216,7 @@ TEST_F(P2PQuicStreamTest, StreamClosedAfterReceivingReset) {
// Google RST_STREAM closes the stream in both directions. A RST_STREAM // Google RST_STREAM closes the stream in both directions. A RST_STREAM
// is then sent to the peer to communicate the final byte offset. // is then sent to the peer to communicate the final byte offset.
EXPECT_CALL(*session_, EXPECT_CALL(*session_,
SendRstStream(kStreamId, quic::QUIC_RST_ACKNOWLEDGEMENT, 0)); SendRstStream(kStreamId, quic::QUIC_RST_ACKNOWLEDGEMENT, 0, _));
} }
stream_->OnStreamReset(rst_frame); stream_->OnStreamReset(rst_frame);
if (VersionHasIetfQuicFrames(connection_->version().transport_version)) { if (VersionHasIetfQuicFrames(connection_->version().transport_version)) {
......
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