| OLD | NEW |
| 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/tools/quic/quic_dispatcher.h" | 5 #include "net/tools/quic/quic_dispatcher.h" |
| 6 | 6 |
| 7 #include <memory> | 7 #include <memory> |
| 8 #include <ostream> | 8 #include <ostream> |
| 9 #include <string> | 9 #include <string> |
| 10 | 10 |
| (...skipping 709 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 720 client_hello.GetSerialized().AsStringPiece().as_string()); | 720 client_hello.GetSerialized().AsStringPiece().as_string()); |
| 721 | 721 |
| 722 if (GetParam().enable_stateless_rejects_via_flag) { | 722 if (GetParam().enable_stateless_rejects_via_flag) { |
| 723 EXPECT_EQ(true, | 723 EXPECT_EQ(true, |
| 724 time_wait_list_manager_->IsConnectionIdInTimeWait(connection_id)); | 724 time_wait_list_manager_->IsConnectionIdInTimeWait(connection_id)); |
| 725 } | 725 } |
| 726 } | 726 } |
| 727 | 727 |
| 728 TEST_P(QuicDispatcherStatelessRejectTest, BufferNonChlo) { | 728 TEST_P(QuicDispatcherStatelessRejectTest, BufferNonChlo) { |
| 729 FLAGS_quic_use_cheap_stateless_rejects = true; | 729 FLAGS_quic_use_cheap_stateless_rejects = true; |
| 730 FLAGS_quic_always_log_bugs_for_tests = true; | |
| 731 CreateTimeWaitListManager(); | 730 CreateTimeWaitListManager(); |
| 732 | 731 |
| 733 const IPEndPoint client_address(net::test::Loopback4(), 1); | 732 const IPEndPoint client_address(net::test::Loopback4(), 1); |
| 734 const QuicConnectionId connection_id = 1; | 733 const QuicConnectionId connection_id = 1; |
| 735 | 734 |
| 736 if (!GetParam().enable_stateless_rejects_via_flag && | 735 if (!GetParam().enable_stateless_rejects_via_flag && |
| 737 !FLAGS_quic_buffer_packet_till_chlo) { | 736 !FLAGS_quic_buffer_packet_till_chlo) { |
| 738 // If stateless rejects are not being used and early arrived packets are not | 737 // If stateless rejects are not being used and early arrived packets are not |
| 739 // buffered, then a connection will be created immediately. | 738 // buffered, then a connection will be created immediately. |
| 740 EXPECT_CALL(*dispatcher_, CreateQuicSession(connection_id, client_address)) | 739 EXPECT_CALL(*dispatcher_, CreateQuicSession(connection_id, client_address)) |
| 741 .WillOnce(testing::Return( | 740 .WillOnce(testing::Return( |
| 742 CreateSessionBasedOnTestParams(connection_id, client_address))); | 741 CreateSessionBasedOnTestParams(connection_id, client_address))); |
| 743 EXPECT_CALL(*reinterpret_cast<MockQuicConnection*>(session1_->connection()), | 742 EXPECT_CALL(*reinterpret_cast<MockQuicConnection*>(session1_->connection()), |
| 744 ProcessUdpPacket(_, client_address, _)) | 743 ProcessUdpPacket(_, client_address, _)) |
| 745 .WillOnce(testing::WithArg<2>( | 744 .WillOnce(testing::WithArg<2>( |
| 746 Invoke(CreateFunctor(&QuicDispatcherTest::ValidatePacket, | 745 Invoke(CreateFunctor(&QuicDispatcherTest::ValidatePacket, |
| 747 base::Unretained(this), connection_id)))); | 746 base::Unretained(this), connection_id)))); |
| 748 } | 747 } |
| 749 bool first_packet_dropped = GetParam().enable_stateless_rejects_via_flag && | 748 bool first_packet_dropped = GetParam().enable_stateless_rejects_via_flag && |
| 750 !FLAGS_quic_buffer_packet_till_chlo; | 749 !FLAGS_quic_buffer_packet_till_chlo; |
| 751 if (first_packet_dropped) { | 750 if (first_packet_dropped) { |
| 752 // Never do stateless reject while | 751 // Never do stateless reject while |
| 753 // FLAGS_quic_buffer_packet_till_chlo is off. | 752 // FLAGS_quic_buffer_packet_till_chlo is off. |
| 754 EXPECT_DFATAL( | 753 EXPECT_QUIC_BUG( |
| 755 ProcessPacket(client_address, connection_id, true, false, | 754 ProcessPacket(client_address, connection_id, true, false, |
| 756 "NOT DATA FOR A CHLO"), | 755 "NOT DATA FOR A CHLO"), |
| 757 "Have to drop packet because buffering non-chlo packet is " | 756 "Have to drop packet because buffering non-chlo packet is " |
| 758 "not supported while trying to do stateless reject. " | 757 "not supported while trying to do stateless reject. " |
| 759 "--gfe2_reloadable_flag_quic_buffer_packet_till_chlo false " | 758 "--gfe2_reloadable_flag_quic_buffer_packet_till_chlo false " |
| 760 "--gfe2_reloadable_flag_quic_use_cheap_stateless_rejects true"); | 759 "--gfe2_reloadable_flag_quic_use_cheap_stateless_rejects true"); |
| 761 } else { | 760 } else { |
| 762 ProcessPacket(client_address, connection_id, true, false, | 761 ProcessPacket(client_address, connection_id, true, false, |
| 763 "NOT DATA FOR A CHLO"); | 762 "NOT DATA FOR A CHLO"); |
| 764 } | 763 } |
| (...skipping 513 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1278 // New arrived CHLO will be dropped because this connection is in time wait | 1277 // New arrived CHLO will be dropped because this connection is in time wait |
| 1279 // list. | 1278 // list. |
| 1280 ASSERT_TRUE(time_wait_list_manager_->IsConnectionIdInTimeWait(conn_id)); | 1279 ASSERT_TRUE(time_wait_list_manager_->IsConnectionIdInTimeWait(conn_id)); |
| 1281 EXPECT_CALL(*time_wait_list_manager_, ProcessPacket(_, _, conn_id, _, _)); | 1280 EXPECT_CALL(*time_wait_list_manager_, ProcessPacket(_, _, conn_id, _, _)); |
| 1282 ProcessPacket(client_address, conn_id, true, false, SerializeFullCHLO()); | 1281 ProcessPacket(client_address, conn_id, true, false, SerializeFullCHLO()); |
| 1283 } | 1282 } |
| 1284 | 1283 |
| 1285 } // namespace | 1284 } // namespace |
| 1286 } // namespace test | 1285 } // namespace test |
| 1287 } // namespace net | 1286 } // namespace net |
| OLD | NEW |