Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(22)

Side by Side Diff: net/quic/core/quic_connection_test.cc

Issue 2391103003: Landing Recent QUIC changes until 3:24 PM, Oct 01, 2016 UTC-4 (Closed)
Patch Set: Add new error code to quic_error_mapping.cc Created 4 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « net/quic/core/quic_connection.cc ('k') | net/quic/core/quic_crypto_client_stream_test.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "net/quic/core/quic_connection.h" 5 #include "net/quic/core/quic_connection.h"
6 6
7 #include <errno.h> 7 #include <errno.h>
8 #include <memory> 8 #include <memory>
9 #include <ostream> 9 #include <ostream>
10 #include <utility> 10 #include <utility>
(...skipping 704 matching lines...) Expand 10 before | Expand all | Expand 10 after
715 AckResponse::kDefer); 715 AckResponse::kDefer);
716 connection_.set_visitor(&visitor_); 716 connection_.set_visitor(&visitor_);
717 connection_.SetSendAlgorithm(kDefaultPathId, send_algorithm_); 717 connection_.SetSendAlgorithm(kDefaultPathId, send_algorithm_);
718 connection_.SetLossAlgorithm(kDefaultPathId, loss_algorithm_.get()); 718 connection_.SetLossAlgorithm(kDefaultPathId, loss_algorithm_.get());
719 framer_.set_received_entropy_calculator(&entropy_calculator_); 719 framer_.set_received_entropy_calculator(&entropy_calculator_);
720 peer_framer_.set_received_entropy_calculator(&peer_entropy_calculator_); 720 peer_framer_.set_received_entropy_calculator(&peer_entropy_calculator_);
721 EXPECT_CALL(*send_algorithm_, TimeUntilSend(_, _)) 721 EXPECT_CALL(*send_algorithm_, TimeUntilSend(_, _))
722 .WillRepeatedly(Return(QuicTime::Delta::Zero())); 722 .WillRepeatedly(Return(QuicTime::Delta::Zero()));
723 EXPECT_CALL(*send_algorithm_, OnPacketSent(_, _, _, _, _)) 723 EXPECT_CALL(*send_algorithm_, OnPacketSent(_, _, _, _, _))
724 .Times(AnyNumber()); 724 .Times(AnyNumber());
725 EXPECT_CALL(*send_algorithm_, RetransmissionDelay())
726 .WillRepeatedly(Return(QuicTime::Delta::Zero()));
727 EXPECT_CALL(*send_algorithm_, GetCongestionWindow()) 725 EXPECT_CALL(*send_algorithm_, GetCongestionWindow())
728 .WillRepeatedly(Return(kDefaultTCPMSS)); 726 .WillRepeatedly(Return(kDefaultTCPMSS));
729 EXPECT_CALL(*send_algorithm_, PacingRate(_)) 727 EXPECT_CALL(*send_algorithm_, PacingRate(_))
730 .WillRepeatedly(Return(QuicBandwidth::Zero())); 728 .WillRepeatedly(Return(QuicBandwidth::Zero()));
731 ON_CALL(*send_algorithm_, OnPacketSent(_, _, _, _, _)) 729 ON_CALL(*send_algorithm_, OnPacketSent(_, _, _, _, _))
732 .WillByDefault(Return(true)); 730 .WillByDefault(Return(true));
733 EXPECT_CALL(*send_algorithm_, HasReliableBandwidthEstimate()) 731 EXPECT_CALL(*send_algorithm_, HasReliableBandwidthEstimate())
734 .Times(AnyNumber()); 732 .Times(AnyNumber());
735 EXPECT_CALL(*send_algorithm_, BandwidthEstimate()) 733 EXPECT_CALL(*send_algorithm_, BandwidthEstimate())
736 .Times(AnyNumber()) 734 .Times(AnyNumber())
(...skipping 2030 matching lines...) Expand 10 before | Expand all | Expand 10 after
2767 EXPECT_TRUE(retransmission_alarm->IsSet()); 2765 EXPECT_TRUE(retransmission_alarm->IsSet());
2768 EXPECT_EQ(clock_.Now() + DefaultRetransmissionTime(), 2766 EXPECT_EQ(clock_.Now() + DefaultRetransmissionTime(),
2769 retransmission_alarm->deadline()); 2767 retransmission_alarm->deadline());
2770 2768
2771 // Advance the time right before the RTO, then receive an ack for the first 2769 // Advance the time right before the RTO, then receive an ack for the first
2772 // packet to delay the RTO. 2770 // packet to delay the RTO.
2773 clock_.AdvanceTime(DefaultRetransmissionTime()); 2771 clock_.AdvanceTime(DefaultRetransmissionTime());
2774 EXPECT_CALL(*send_algorithm_, OnCongestionEvent(true, _, _, _)); 2772 EXPECT_CALL(*send_algorithm_, OnCongestionEvent(true, _, _, _));
2775 QuicAckFrame ack = InitAckFrame(1); 2773 QuicAckFrame ack = InitAckFrame(1);
2776 ProcessAckPacket(&ack); 2774 ProcessAckPacket(&ack);
2775 // Now we have an RTT sample of DefaultRetransmissionTime(500ms),
2776 // so the RTO has increased to 2 * SRTT.
2777 EXPECT_TRUE(retransmission_alarm->IsSet()); 2777 EXPECT_TRUE(retransmission_alarm->IsSet());
2778 EXPECT_GT(retransmission_alarm->deadline(), clock_.Now()); 2778 EXPECT_EQ(retransmission_alarm->deadline(),
2779 clock_.Now() + 2 * DefaultRetransmissionTime());
2779 2780
2780 // Move forward past the original RTO and ensure the RTO is still pending. 2781 // Move forward past the original RTO and ensure the RTO is still pending.
2781 clock_.AdvanceTime(2 * DefaultRetransmissionTime()); 2782 clock_.AdvanceTime(2 * DefaultRetransmissionTime());
2782 2783
2783 // Ensure the second packet gets retransmitted when it finally fires. 2784 // Ensure the second packet gets retransmitted when it finally fires.
2784 EXPECT_TRUE(retransmission_alarm->IsSet()); 2785 EXPECT_TRUE(retransmission_alarm->IsSet());
2785 EXPECT_LT(retransmission_alarm->deadline(), clock_.ApproximateNow()); 2786 EXPECT_EQ(retransmission_alarm->deadline(), clock_.ApproximateNow());
2786 EXPECT_CALL(*send_algorithm_, OnPacketSent(_, _, _, _, _)); 2787 EXPECT_CALL(*send_algorithm_, OnPacketSent(_, _, _, _, _));
2787 // Manually cancel the alarm to simulate a real test. 2788 // Manually cancel the alarm to simulate a real test.
2788 connection_.GetRetransmissionAlarm()->Fire(); 2789 connection_.GetRetransmissionAlarm()->Fire();
2789 2790
2790 // The new retransmitted packet number should set the RTO to a larger value 2791 // The new retransmitted packet number should set the RTO to a larger value
2791 // than previously. 2792 // than previously.
2792 EXPECT_TRUE(retransmission_alarm->IsSet()); 2793 EXPECT_TRUE(retransmission_alarm->IsSet());
2793 QuicTime next_rto_time = retransmission_alarm->deadline(); 2794 QuicTime next_rto_time = retransmission_alarm->deadline();
2794 QuicTime expected_rto_time = 2795 QuicTime expected_rto_time =
2795 connection_.sent_packet_manager().GetRetransmissionTime(); 2796 connection_.sent_packet_manager().GetRetransmissionTime();
(...skipping 483 matching lines...) Expand 10 before | Expand all | Expand 10 after
3279 SendStreamDataToPeer(kClientDataStreamId1, "foo", 0, kFin, nullptr); 3280 SendStreamDataToPeer(kClientDataStreamId1, "foo", 0, kFin, nullptr);
3280 EXPECT_EQ(default_timeout, connection_.GetTimeoutAlarm()->deadline()); 3281 EXPECT_EQ(default_timeout, connection_.GetTimeoutAlarm()->deadline());
3281 3282
3282 // The original alarm will fire. We should not time out because we had a 3283 // The original alarm will fire. We should not time out because we had a
3283 // network event at t=5ms. The alarm will reregister. 3284 // network event at t=5ms. The alarm will reregister.
3284 clock_.AdvanceTime(initial_idle_timeout - five_ms - five_ms); 3285 clock_.AdvanceTime(initial_idle_timeout - five_ms - five_ms);
3285 EXPECT_EQ(default_timeout, clock_.ApproximateNow()); 3286 EXPECT_EQ(default_timeout, clock_.ApproximateNow());
3286 connection_.GetTimeoutAlarm()->Fire(); 3287 connection_.GetTimeoutAlarm()->Fire();
3287 EXPECT_TRUE(connection_.GetTimeoutAlarm()->IsSet()); 3288 EXPECT_TRUE(connection_.GetTimeoutAlarm()->IsSet());
3288 EXPECT_TRUE(connection_.connected()); 3289 EXPECT_TRUE(connection_.connected());
3289 if (FLAGS_quic_better_last_send_for_timeout) { 3290 EXPECT_EQ(default_timeout + five_ms,
3290 EXPECT_EQ(default_timeout + five_ms, 3291 connection_.GetTimeoutAlarm()->deadline());
3291 connection_.GetTimeoutAlarm()->deadline());
3292 } else {
3293 EXPECT_EQ(default_timeout + five_ms + five_ms,
3294 connection_.GetTimeoutAlarm()->deadline());
3295 }
3296 3292
3297 // This time, we should time out. 3293 // This time, we should time out.
3298 EXPECT_CALL(visitor_, OnConnectionClosed(QUIC_NETWORK_IDLE_TIMEOUT, _, 3294 EXPECT_CALL(visitor_, OnConnectionClosed(QUIC_NETWORK_IDLE_TIMEOUT, _,
3299 ConnectionCloseSource::FROM_SELF)); 3295 ConnectionCloseSource::FROM_SELF));
3300 EXPECT_CALL(*send_algorithm_, OnPacketSent(_, _, _, _, _)); 3296 EXPECT_CALL(*send_algorithm_, OnPacketSent(_, _, _, _, _));
3301 clock_.AdvanceTime(five_ms); 3297 clock_.AdvanceTime(five_ms);
3302 EXPECT_EQ(default_timeout + five_ms, clock_.ApproximateNow()); 3298 EXPECT_EQ(default_timeout + five_ms, clock_.ApproximateNow());
3303 connection_.GetTimeoutAlarm()->Fire(); 3299 connection_.GetTimeoutAlarm()->Fire();
3304 EXPECT_FALSE(connection_.GetTimeoutAlarm()->IsSet()); 3300 EXPECT_FALSE(connection_.GetTimeoutAlarm()->IsSet());
3305 EXPECT_FALSE(connection_.connected()); 3301 EXPECT_FALSE(connection_.connected());
3306 } 3302 }
3307 3303
3308 TEST_P(QuicConnectionTest, TimeoutAfterRetransmission) { 3304 TEST_P(QuicConnectionTest, TimeoutAfterRetransmission) {
3309 FLAGS_quic_better_last_send_for_timeout = true;
3310 EXPECT_CALL(visitor_, OnSuccessfulVersionNegotiation(_)); 3305 EXPECT_CALL(visitor_, OnSuccessfulVersionNegotiation(_));
3311 EXPECT_TRUE(connection_.connected()); 3306 EXPECT_TRUE(connection_.connected());
3312 EXPECT_CALL(*send_algorithm_, SetFromConfig(_, _)); 3307 EXPECT_CALL(*send_algorithm_, SetFromConfig(_, _));
3313 QuicConfig config; 3308 QuicConfig config;
3314 connection_.SetFromConfig(config); 3309 connection_.SetFromConfig(config);
3315 EXPECT_FALSE(QuicConnectionPeer::IsSilentCloseEnabled(&connection_)); 3310 EXPECT_FALSE(QuicConnectionPeer::IsSilentCloseEnabled(&connection_));
3316 3311
3317 const QuicTime start_time = clock_.Now(); 3312 const QuicTime start_time = clock_.Now();
3318 const QuicTime::Delta initial_idle_timeout = 3313 const QuicTime::Delta initial_idle_timeout =
3319 QuicTime::Delta::FromSeconds(kInitialIdleTimeoutSecs - 1); 3314 QuicTime::Delta::FromSeconds(kInitialIdleTimeoutSecs - 1);
(...skipping 102 matching lines...) Expand 10 before | Expand all | Expand 10 after
3422 SendStreamDataToPeer(kClientDataStreamId1, "foo", 0, kFin, nullptr); 3417 SendStreamDataToPeer(kClientDataStreamId1, "foo", 0, kFin, nullptr);
3423 EXPECT_EQ(default_timeout, connection_.GetTimeoutAlarm()->deadline()); 3418 EXPECT_EQ(default_timeout, connection_.GetTimeoutAlarm()->deadline());
3424 3419
3425 // The original alarm will fire. We should not time out because we had a 3420 // The original alarm will fire. We should not time out because we had a
3426 // network event at t=5ms. The alarm will reregister. 3421 // network event at t=5ms. The alarm will reregister.
3427 clock_.AdvanceTime(default_idle_timeout - five_ms - five_ms); 3422 clock_.AdvanceTime(default_idle_timeout - five_ms - five_ms);
3428 EXPECT_EQ(default_timeout, clock_.ApproximateNow()); 3423 EXPECT_EQ(default_timeout, clock_.ApproximateNow());
3429 connection_.GetTimeoutAlarm()->Fire(); 3424 connection_.GetTimeoutAlarm()->Fire();
3430 EXPECT_TRUE(connection_.GetTimeoutAlarm()->IsSet()); 3425 EXPECT_TRUE(connection_.GetTimeoutAlarm()->IsSet());
3431 EXPECT_TRUE(connection_.connected()); 3426 EXPECT_TRUE(connection_.connected());
3432 if (FLAGS_quic_better_last_send_for_timeout) { 3427 EXPECT_EQ(default_timeout + five_ms,
3433 EXPECT_EQ(default_timeout + five_ms, 3428 connection_.GetTimeoutAlarm()->deadline());
3434 connection_.GetTimeoutAlarm()->deadline());
3435 } else {
3436 EXPECT_EQ(default_timeout + five_ms + five_ms,
3437 connection_.GetTimeoutAlarm()->deadline());
3438 }
3439 3429
3440 // This time, we should time out. 3430 // This time, we should time out.
3441 EXPECT_CALL(visitor_, OnConnectionClosed(QUIC_NETWORK_IDLE_TIMEOUT, _, 3431 EXPECT_CALL(visitor_, OnConnectionClosed(QUIC_NETWORK_IDLE_TIMEOUT, _,
3442 ConnectionCloseSource::FROM_SELF)); 3432 ConnectionCloseSource::FROM_SELF));
3443 clock_.AdvanceTime(five_ms); 3433 clock_.AdvanceTime(five_ms);
3444 EXPECT_EQ(default_timeout + five_ms, clock_.ApproximateNow()); 3434 EXPECT_EQ(default_timeout + five_ms, clock_.ApproximateNow());
3445 connection_.GetTimeoutAlarm()->Fire(); 3435 connection_.GetTimeoutAlarm()->Fire();
3446 EXPECT_FALSE(connection_.GetTimeoutAlarm()->IsSet()); 3436 EXPECT_FALSE(connection_.GetTimeoutAlarm()->IsSet());
3447 EXPECT_FALSE(connection_.connected()); 3437 EXPECT_FALSE(connection_.connected());
3448 } 3438 }
(...skipping 786 matching lines...) Expand 10 before | Expand all | Expand 10 after
4235 &connection_, &TestConnection::SendCryptoStreamData))); 4225 &connection_, &TestConnection::SendCryptoStreamData)));
4236 // Process a packet from the crypto stream, which is frame1_'s default. 4226 // Process a packet from the crypto stream, which is frame1_'s default.
4237 // Receiving the CHLO as packet 2 first will cause the connection to 4227 // Receiving the CHLO as packet 2 first will cause the connection to
4238 // immediately send an ack, due to the packet gap. 4228 // immediately send an ack, due to the packet gap.
4239 ProcessPacket(kDefaultPathId, 2); 4229 ProcessPacket(kDefaultPathId, 2);
4240 // Check that ack is sent and that delayed ack alarm is reset. 4230 // Check that ack is sent and that delayed ack alarm is reset.
4241 EXPECT_EQ(3u, writer_->frame_count()); 4231 EXPECT_EQ(3u, writer_->frame_count());
4242 EXPECT_FALSE(writer_->stop_waiting_frames().empty()); 4232 EXPECT_FALSE(writer_->stop_waiting_frames().empty());
4243 EXPECT_EQ(1u, writer_->stream_frames().size()); 4233 EXPECT_EQ(1u, writer_->stream_frames().size());
4244 EXPECT_FALSE(writer_->ack_frames().empty()); 4234 EXPECT_FALSE(writer_->ack_frames().empty());
4235 EXPECT_EQ(2u, writer_->ack_frames().front().largest_observed);
4245 EXPECT_FALSE(connection_.GetAckAlarm()->IsSet()); 4236 EXPECT_FALSE(connection_.GetAckAlarm()->IsSet());
4246 } 4237 }
4247 4238
4248 TEST_P(QuicConnectionTest, BundleAckWithDataOnIncomingAck) { 4239 TEST_P(QuicConnectionTest, BundleAckWithDataOnIncomingAck) {
4249 EXPECT_CALL(visitor_, OnSuccessfulVersionNegotiation(_)); 4240 EXPECT_CALL(visitor_, OnSuccessfulVersionNegotiation(_));
4250 connection_.SendStreamDataWithString(kClientDataStreamId1, "foo", 0, !kFin, 4241 connection_.SendStreamDataWithString(kClientDataStreamId1, "foo", 0, !kFin,
4251 nullptr); 4242 nullptr);
4252 connection_.SendStreamDataWithString(kClientDataStreamId1, "foo", 3, !kFin, 4243 connection_.SendStreamDataWithString(kClientDataStreamId1, "foo", 3, !kFin,
4253 nullptr); 4244 nullptr);
4254 // Ack the second packet, which will retransmit the first packet. 4245 // Ack the second packet, which will retransmit the first packet.
(...skipping 29 matching lines...) Expand all
4284 EXPECT_CALL(visitor_, OnCanWrite()) 4275 EXPECT_CALL(visitor_, OnCanWrite())
4285 .WillOnce(IgnoreResult(InvokeWithoutArgs( 4276 .WillOnce(IgnoreResult(InvokeWithoutArgs(
4286 &connection_, &TestConnection::EnsureWritableAndSendStreamData5))); 4277 &connection_, &TestConnection::EnsureWritableAndSendStreamData5)));
4287 ProcessAckPacket(&ack); 4278 ProcessAckPacket(&ack);
4288 4279
4289 // Check that ack is bundled with outgoing data and the delayed ack 4280 // Check that ack is bundled with outgoing data and the delayed ack
4290 // alarm is reset. 4281 // alarm is reset.
4291 EXPECT_EQ(3u, writer_->frame_count()); 4282 EXPECT_EQ(3u, writer_->frame_count());
4292 EXPECT_FALSE(writer_->stop_waiting_frames().empty()); 4283 EXPECT_FALSE(writer_->stop_waiting_frames().empty());
4293 EXPECT_FALSE(writer_->ack_frames().empty()); 4284 EXPECT_FALSE(writer_->ack_frames().empty());
4285 EXPECT_EQ(3u, writer_->ack_frames().front().largest_observed);
4294 EXPECT_EQ(1u, writer_->stream_frames().size()); 4286 EXPECT_EQ(1u, writer_->stream_frames().size());
4295 EXPECT_FALSE(connection_.GetAckAlarm()->IsSet()); 4287 EXPECT_FALSE(connection_.GetAckAlarm()->IsSet());
4296 } 4288 }
4297 4289
4298 TEST_P(QuicConnectionTest, NoAckSentForClose) { 4290 TEST_P(QuicConnectionTest, NoAckSentForClose) {
4299 EXPECT_CALL(visitor_, OnSuccessfulVersionNegotiation(_)); 4291 EXPECT_CALL(visitor_, OnSuccessfulVersionNegotiation(_));
4300 ProcessPacket(kDefaultPathId, 1); 4292 ProcessPacket(kDefaultPathId, 1);
4301 EXPECT_CALL(visitor_, OnConnectionClosed(QUIC_PEER_GOING_AWAY, _, 4293 EXPECT_CALL(visitor_, OnConnectionClosed(QUIC_PEER_GOING_AWAY, _,
4302 ConnectionCloseSource::FROM_PEER)); 4294 ConnectionCloseSource::FROM_PEER));
4303 EXPECT_CALL(*send_algorithm_, OnPacketSent(_, _, _, _, _)).Times(0); 4295 EXPECT_CALL(*send_algorithm_, OnPacketSent(_, _, _, _, _)).Times(0);
(...skipping 620 matching lines...) Expand 10 before | Expand all | Expand 10 after
4924 // Verify that the listener is not notified again when the 4916 // Verify that the listener is not notified again when the
4925 // retransmit is acked. 4917 // retransmit is acked.
4926 EXPECT_CALL(*loss_algorithm_, DetectLosses(_, _, _, _, _)); 4918 EXPECT_CALL(*loss_algorithm_, DetectLosses(_, _, _, _, _));
4927 EXPECT_CALL(*send_algorithm_, OnCongestionEvent(true, _, _, _)); 4919 EXPECT_CALL(*send_algorithm_, OnCongestionEvent(true, _, _, _));
4928 QuicAckFrame third_ack_frame = InitAckFrame(5); 4920 QuicAckFrame third_ack_frame = InitAckFrame(5);
4929 ProcessAckPacket(&third_ack_frame); 4921 ProcessAckPacket(&third_ack_frame);
4930 } 4922 }
4931 4923
4932 TEST_P(QuicConnectionTest, OnPacketHeaderDebugVisitor) { 4924 TEST_P(QuicConnectionTest, OnPacketHeaderDebugVisitor) {
4933 QuicPacketHeader header; 4925 QuicPacketHeader header;
4926 header.packet_number = 1;
4934 4927
4935 MockQuicConnectionDebugVisitor debug_visitor; 4928 MockQuicConnectionDebugVisitor debug_visitor;
4936 connection_.set_debug_visitor(&debug_visitor); 4929 connection_.set_debug_visitor(&debug_visitor);
4937 EXPECT_CALL(debug_visitor, OnPacketHeader(Ref(header))).Times(1); 4930 EXPECT_CALL(debug_visitor, OnPacketHeader(Ref(header))).Times(1);
4938 EXPECT_CALL(visitor_, OnSuccessfulVersionNegotiation(_)).Times(1); 4931 EXPECT_CALL(visitor_, OnSuccessfulVersionNegotiation(_)).Times(1);
4939 EXPECT_CALL(debug_visitor, OnSuccessfulVersionNegotiation(_)).Times(1); 4932 EXPECT_CALL(debug_visitor, OnSuccessfulVersionNegotiation(_)).Times(1);
4940 connection_.OnPacketHeader(header); 4933 connection_.OnPacketHeader(header);
4941 } 4934 }
4942 4935
4943 TEST_P(QuicConnectionTest, Pacing) { 4936 TEST_P(QuicConnectionTest, Pacing) {
(...skipping 319 matching lines...) Expand 10 before | Expand all | Expand 10 after
5263 connection_.SendStreamDataWithString(3, "foo", 0, !kFin, nullptr); 5256 connection_.SendStreamDataWithString(3, "foo", 0, !kFin, nullptr);
5264 EXPECT_EQ(1u, writer_->frame_count()); 5257 EXPECT_EQ(1u, writer_->frame_count());
5265 EXPECT_FALSE(writer_->connection_close_frames().empty()); 5258 EXPECT_FALSE(writer_->connection_close_frames().empty());
5266 // Ack frame is not bundled in connection close packet. 5259 // Ack frame is not bundled in connection close packet.
5267 EXPECT_TRUE(writer_->ack_frames().empty()); 5260 EXPECT_TRUE(writer_->ack_frames().empty());
5268 } 5261 }
5269 5262
5270 } // namespace 5263 } // namespace
5271 } // namespace test 5264 } // namespace test
5272 } // namespace net 5265 } // namespace net
OLDNEW
« no previous file with comments | « net/quic/core/quic_connection.cc ('k') | net/quic/core/quic_crypto_client_stream_test.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698