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/quic/core/quic_framer.h" | 5 #include "net/quic/core/quic_framer.h" |
6 | 6 |
7 #include <string.h> | 7 #include <string.h> |
8 | 8 |
9 #include <algorithm> | 9 #include <algorithm> |
10 #include <map> | 10 #include <map> |
(...skipping 225 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
236 return accept_public_header_; | 236 return accept_public_header_; |
237 } | 237 } |
238 | 238 |
239 bool OnUnauthenticatedHeader(const QuicPacketHeader& header) override { | 239 bool OnUnauthenticatedHeader(const QuicPacketHeader& header) override { |
240 return true; | 240 return true; |
241 } | 241 } |
242 | 242 |
243 void OnDecryptedPacket(EncryptionLevel level) override {} | 243 void OnDecryptedPacket(EncryptionLevel level) override {} |
244 | 244 |
245 bool OnPacketHeader(const QuicPacketHeader& header) override { | 245 bool OnPacketHeader(const QuicPacketHeader& header) override { |
246 if (header.fec_flag) { | |
247 // Drop any FEC packet. | |
248 return false; | |
249 } | |
250 ++packet_count_; | 246 ++packet_count_; |
251 header_.reset(new QuicPacketHeader(header)); | 247 header_.reset(new QuicPacketHeader(header)); |
252 return accept_packet_; | 248 return accept_packet_; |
253 } | 249 } |
254 | 250 |
255 bool OnStreamFrame(const QuicStreamFrame& frame) override { | 251 bool OnStreamFrame(const QuicStreamFrame& frame) override { |
256 ++frame_count_; | 252 ++frame_count_; |
257 // Save a copy of the data so it is valid after the packet is processed. | 253 // Save a copy of the data so it is valid after the packet is processed. |
258 string* string_data = new string(); | 254 string* string_data = new string(); |
259 StringPiece(frame.data_buffer, frame.data_length) | 255 StringPiece(frame.data_buffer, frame.data_length) |
(...skipping 419 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
679 framer_.version() <= QUIC_VERSION_33 ? arraysize(packet) | 675 framer_.version() <= QUIC_VERSION_33 ? arraysize(packet) |
680 : arraysize(packet_34), | 676 : arraysize(packet_34), |
681 false); | 677 false); |
682 EXPECT_FALSE(framer_.ProcessPacket(encrypted)); | 678 EXPECT_FALSE(framer_.ProcessPacket(encrypted)); |
683 EXPECT_EQ(QUIC_MISSING_PAYLOAD, framer_.error()); | 679 EXPECT_EQ(QUIC_MISSING_PAYLOAD, framer_.error()); |
684 ASSERT_TRUE(visitor_.header_.get()); | 680 ASSERT_TRUE(visitor_.header_.get()); |
685 EXPECT_EQ(kConnectionId, visitor_.header_->public_header.connection_id); | 681 EXPECT_EQ(kConnectionId, visitor_.header_->public_header.connection_id); |
686 EXPECT_FALSE(visitor_.header_->public_header.multipath_flag); | 682 EXPECT_FALSE(visitor_.header_->public_header.multipath_flag); |
687 EXPECT_FALSE(visitor_.header_->public_header.reset_flag); | 683 EXPECT_FALSE(visitor_.header_->public_header.reset_flag); |
688 EXPECT_FALSE(visitor_.header_->public_header.version_flag); | 684 EXPECT_FALSE(visitor_.header_->public_header.version_flag); |
689 EXPECT_FALSE(visitor_.header_->fec_flag); | |
690 EXPECT_FALSE(visitor_.header_->entropy_flag); | 685 EXPECT_FALSE(visitor_.header_->entropy_flag); |
691 EXPECT_EQ(0, visitor_.header_->entropy_hash); | 686 EXPECT_EQ(0, visitor_.header_->entropy_hash); |
692 EXPECT_EQ(kPacketNumber, visitor_.header_->packet_number); | 687 EXPECT_EQ(kPacketNumber, visitor_.header_->packet_number); |
693 | 688 |
694 // Now test framing boundaries. | 689 // Now test framing boundaries. |
695 for (size_t i = 0; | 690 for (size_t i = 0; |
696 i < GetPacketHeaderSize(framer_.version(), PACKET_8BYTE_CONNECTION_ID, | 691 i < GetPacketHeaderSize(framer_.version(), PACKET_8BYTE_CONNECTION_ID, |
697 !kIncludeVersion, !kIncludePathId, | 692 !kIncludeVersion, !kIncludePathId, |
698 !kIncludeDiversificationNonce, | 693 !kIncludeDiversificationNonce, |
699 PACKET_6BYTE_PACKET_NUMBER); | 694 PACKET_6BYTE_PACKET_NUMBER); |
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
749 framer_.version() <= QUIC_VERSION_33 ? arraysize(packet) | 744 framer_.version() <= QUIC_VERSION_33 ? arraysize(packet) |
750 : arraysize(packet_34), | 745 : arraysize(packet_34), |
751 false); | 746 false); |
752 EXPECT_FALSE(framer_.ProcessPacket(encrypted)); | 747 EXPECT_FALSE(framer_.ProcessPacket(encrypted)); |
753 EXPECT_EQ(QUIC_MISSING_PAYLOAD, framer_.error()); | 748 EXPECT_EQ(QUIC_MISSING_PAYLOAD, framer_.error()); |
754 ASSERT_TRUE(visitor_.header_.get()); | 749 ASSERT_TRUE(visitor_.header_.get()); |
755 EXPECT_EQ(kConnectionId, visitor_.header_->public_header.connection_id); | 750 EXPECT_EQ(kConnectionId, visitor_.header_->public_header.connection_id); |
756 EXPECT_FALSE(visitor_.header_->public_header.multipath_flag); | 751 EXPECT_FALSE(visitor_.header_->public_header.multipath_flag); |
757 EXPECT_FALSE(visitor_.header_->public_header.reset_flag); | 752 EXPECT_FALSE(visitor_.header_->public_header.reset_flag); |
758 EXPECT_FALSE(visitor_.header_->public_header.version_flag); | 753 EXPECT_FALSE(visitor_.header_->public_header.version_flag); |
759 EXPECT_FALSE(visitor_.header_->fec_flag); | |
760 EXPECT_FALSE(visitor_.header_->entropy_flag); | 754 EXPECT_FALSE(visitor_.header_->entropy_flag); |
761 EXPECT_EQ(0, visitor_.header_->entropy_hash); | 755 EXPECT_EQ(0, visitor_.header_->entropy_hash); |
762 EXPECT_EQ(kPacketNumber, visitor_.header_->packet_number); | 756 EXPECT_EQ(kPacketNumber, visitor_.header_->packet_number); |
763 | 757 |
764 // Now test framing boundaries. | 758 // Now test framing boundaries. |
765 for (size_t i = 0; | 759 for (size_t i = 0; |
766 i < GetPacketHeaderSize(framer_.version(), PACKET_0BYTE_CONNECTION_ID, | 760 i < GetPacketHeaderSize(framer_.version(), PACKET_0BYTE_CONNECTION_ID, |
767 !kIncludeVersion, !kIncludePathId, | 761 !kIncludeVersion, !kIncludePathId, |
768 !kIncludeDiversificationNonce, | 762 !kIncludeDiversificationNonce, |
769 PACKET_6BYTE_PACKET_NUMBER); | 763 PACKET_6BYTE_PACKET_NUMBER); |
(...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
824 : arraysize(packet_34), | 818 : arraysize(packet_34), |
825 false); | 819 false); |
826 EXPECT_FALSE(framer_.ProcessPacket(encrypted)); | 820 EXPECT_FALSE(framer_.ProcessPacket(encrypted)); |
827 EXPECT_EQ(QUIC_MISSING_PAYLOAD, framer_.error()); | 821 EXPECT_EQ(QUIC_MISSING_PAYLOAD, framer_.error()); |
828 ASSERT_TRUE(visitor_.header_.get()); | 822 ASSERT_TRUE(visitor_.header_.get()); |
829 EXPECT_EQ(kConnectionId, visitor_.header_->public_header.connection_id); | 823 EXPECT_EQ(kConnectionId, visitor_.header_->public_header.connection_id); |
830 EXPECT_FALSE(visitor_.header_->public_header.multipath_flag); | 824 EXPECT_FALSE(visitor_.header_->public_header.multipath_flag); |
831 EXPECT_FALSE(visitor_.header_->public_header.reset_flag); | 825 EXPECT_FALSE(visitor_.header_->public_header.reset_flag); |
832 EXPECT_TRUE(visitor_.header_->public_header.version_flag); | 826 EXPECT_TRUE(visitor_.header_->public_header.version_flag); |
833 EXPECT_EQ(GetParam(), visitor_.header_->public_header.versions[0]); | 827 EXPECT_EQ(GetParam(), visitor_.header_->public_header.versions[0]); |
834 EXPECT_FALSE(visitor_.header_->fec_flag); | |
835 EXPECT_FALSE(visitor_.header_->entropy_flag); | 828 EXPECT_FALSE(visitor_.header_->entropy_flag); |
836 EXPECT_EQ(0, visitor_.header_->entropy_hash); | 829 EXPECT_EQ(0, visitor_.header_->entropy_hash); |
837 EXPECT_EQ(kPacketNumber, visitor_.header_->packet_number); | 830 EXPECT_EQ(kPacketNumber, visitor_.header_->packet_number); |
838 | 831 |
839 // Now test framing boundaries. | 832 // Now test framing boundaries. |
840 for (size_t i = 0; | 833 for (size_t i = 0; |
841 i < GetPacketHeaderSize(framer_.version(), PACKET_8BYTE_CONNECTION_ID, | 834 i < GetPacketHeaderSize(framer_.version(), PACKET_8BYTE_CONNECTION_ID, |
842 kIncludeVersion, !kIncludePathId, | 835 kIncludeVersion, !kIncludePathId, |
843 !kIncludeDiversificationNonce, | 836 !kIncludeDiversificationNonce, |
844 PACKET_6BYTE_PACKET_NUMBER); | 837 PACKET_6BYTE_PACKET_NUMBER); |
(...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
900 false); | 893 false); |
901 EXPECT_FALSE(framer_.ProcessPacket(encrypted)); | 894 EXPECT_FALSE(framer_.ProcessPacket(encrypted)); |
902 EXPECT_EQ(QUIC_MISSING_PAYLOAD, framer_.error()); | 895 EXPECT_EQ(QUIC_MISSING_PAYLOAD, framer_.error()); |
903 ASSERT_TRUE(visitor_.header_.get()); | 896 ASSERT_TRUE(visitor_.header_.get()); |
904 EXPECT_TRUE(CheckDecryption(encrypted, !kIncludeVersion, kIncludePathId, | 897 EXPECT_TRUE(CheckDecryption(encrypted, !kIncludeVersion, kIncludePathId, |
905 !kIncludeDiversificationNonce)); | 898 !kIncludeDiversificationNonce)); |
906 EXPECT_EQ(kConnectionId, visitor_.header_->public_header.connection_id); | 899 EXPECT_EQ(kConnectionId, visitor_.header_->public_header.connection_id); |
907 EXPECT_TRUE(visitor_.header_->public_header.multipath_flag); | 900 EXPECT_TRUE(visitor_.header_->public_header.multipath_flag); |
908 EXPECT_FALSE(visitor_.header_->public_header.reset_flag); | 901 EXPECT_FALSE(visitor_.header_->public_header.reset_flag); |
909 EXPECT_FALSE(visitor_.header_->public_header.version_flag); | 902 EXPECT_FALSE(visitor_.header_->public_header.version_flag); |
910 EXPECT_FALSE(visitor_.header_->fec_flag); | |
911 EXPECT_FALSE(visitor_.header_->entropy_flag); | 903 EXPECT_FALSE(visitor_.header_->entropy_flag); |
912 EXPECT_EQ(0, visitor_.header_->entropy_hash); | 904 EXPECT_EQ(0, visitor_.header_->entropy_hash); |
913 EXPECT_EQ(kPathId, visitor_.header_->path_id); | 905 EXPECT_EQ(kPathId, visitor_.header_->path_id); |
914 EXPECT_EQ(kPacketNumber, visitor_.header_->packet_number); | 906 EXPECT_EQ(kPacketNumber, visitor_.header_->packet_number); |
915 | 907 |
916 // Now test framing boundaries. | 908 // Now test framing boundaries. |
917 for (size_t i = 0; | 909 for (size_t i = 0; |
918 i < GetPacketHeaderSize(framer_.version(), PACKET_8BYTE_CONNECTION_ID, | 910 i < GetPacketHeaderSize(framer_.version(), PACKET_8BYTE_CONNECTION_ID, |
919 !kIncludeVersion, kIncludePathId, | 911 !kIncludeVersion, kIncludePathId, |
920 !kIncludeDiversificationNonce, | 912 !kIncludeDiversificationNonce, |
(...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
983 EXPECT_FALSE(framer_.ProcessPacket(encrypted)); | 975 EXPECT_FALSE(framer_.ProcessPacket(encrypted)); |
984 EXPECT_EQ(QUIC_MISSING_PAYLOAD, framer_.error()); | 976 EXPECT_EQ(QUIC_MISSING_PAYLOAD, framer_.error()); |
985 ASSERT_TRUE(visitor_.header_.get()); | 977 ASSERT_TRUE(visitor_.header_.get()); |
986 EXPECT_TRUE(CheckDecryption(encrypted, kIncludeVersion, kIncludePathId, | 978 EXPECT_TRUE(CheckDecryption(encrypted, kIncludeVersion, kIncludePathId, |
987 !kIncludeDiversificationNonce)); | 979 !kIncludeDiversificationNonce)); |
988 EXPECT_EQ(kConnectionId, visitor_.header_->public_header.connection_id); | 980 EXPECT_EQ(kConnectionId, visitor_.header_->public_header.connection_id); |
989 EXPECT_TRUE(visitor_.header_->public_header.multipath_flag); | 981 EXPECT_TRUE(visitor_.header_->public_header.multipath_flag); |
990 EXPECT_FALSE(visitor_.header_->public_header.reset_flag); | 982 EXPECT_FALSE(visitor_.header_->public_header.reset_flag); |
991 EXPECT_TRUE(visitor_.header_->public_header.version_flag); | 983 EXPECT_TRUE(visitor_.header_->public_header.version_flag); |
992 EXPECT_EQ(GetParam(), visitor_.header_->public_header.versions[0]); | 984 EXPECT_EQ(GetParam(), visitor_.header_->public_header.versions[0]); |
993 EXPECT_FALSE(visitor_.header_->fec_flag); | |
994 EXPECT_FALSE(visitor_.header_->entropy_flag); | 985 EXPECT_FALSE(visitor_.header_->entropy_flag); |
995 EXPECT_EQ(0, visitor_.header_->entropy_hash); | 986 EXPECT_EQ(0, visitor_.header_->entropy_hash); |
996 EXPECT_EQ(kPathId, visitor_.header_->path_id); | 987 EXPECT_EQ(kPathId, visitor_.header_->path_id); |
997 EXPECT_EQ(kPacketNumber, visitor_.header_->packet_number); | 988 EXPECT_EQ(kPacketNumber, visitor_.header_->packet_number); |
998 | 989 |
999 // Now test framing boundaries. | 990 // Now test framing boundaries. |
1000 for (size_t i = 0; | 991 for (size_t i = 0; |
1001 i < GetPacketHeaderSize(framer_.version(), PACKET_8BYTE_CONNECTION_ID, | 992 i < GetPacketHeaderSize(framer_.version(), PACKET_8BYTE_CONNECTION_ID, |
1002 !kIncludeVersion, kIncludePathId, | 993 !kIncludeVersion, kIncludePathId, |
1003 !kIncludeDiversificationNonce, | 994 !kIncludeDiversificationNonce, |
(...skipping 224 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1228 framer_.version() <= QUIC_VERSION_33 ? arraysize(packet) | 1219 framer_.version() <= QUIC_VERSION_33 ? arraysize(packet) |
1229 : arraysize(packet_34), | 1220 : arraysize(packet_34), |
1230 false); | 1221 false); |
1231 EXPECT_FALSE(framer_.ProcessPacket(encrypted)); | 1222 EXPECT_FALSE(framer_.ProcessPacket(encrypted)); |
1232 EXPECT_EQ(QUIC_MISSING_PAYLOAD, framer_.error()); | 1223 EXPECT_EQ(QUIC_MISSING_PAYLOAD, framer_.error()); |
1233 ASSERT_TRUE(visitor_.header_.get()); | 1224 ASSERT_TRUE(visitor_.header_.get()); |
1234 EXPECT_EQ(kConnectionId, visitor_.header_->public_header.connection_id); | 1225 EXPECT_EQ(kConnectionId, visitor_.header_->public_header.connection_id); |
1235 EXPECT_FALSE(visitor_.header_->public_header.multipath_flag); | 1226 EXPECT_FALSE(visitor_.header_->public_header.multipath_flag); |
1236 EXPECT_FALSE(visitor_.header_->public_header.reset_flag); | 1227 EXPECT_FALSE(visitor_.header_->public_header.reset_flag); |
1237 EXPECT_FALSE(visitor_.header_->public_header.version_flag); | 1228 EXPECT_FALSE(visitor_.header_->public_header.version_flag); |
1238 EXPECT_FALSE(visitor_.header_->fec_flag); | |
1239 EXPECT_FALSE(visitor_.header_->entropy_flag); | 1229 EXPECT_FALSE(visitor_.header_->entropy_flag); |
1240 EXPECT_EQ(0, visitor_.header_->entropy_hash); | 1230 EXPECT_EQ(0, visitor_.header_->entropy_hash); |
1241 EXPECT_EQ(kPacketNumber, visitor_.header_->packet_number); | 1231 EXPECT_EQ(kPacketNumber, visitor_.header_->packet_number); |
1242 | 1232 |
1243 // Now test framing boundaries. | 1233 // Now test framing boundaries. |
1244 for (size_t i = 0; | 1234 for (size_t i = 0; |
1245 i < GetPacketHeaderSize(framer_.version(), PACKET_8BYTE_CONNECTION_ID, | 1235 i < GetPacketHeaderSize(framer_.version(), PACKET_8BYTE_CONNECTION_ID, |
1246 !kIncludeVersion, !kIncludePathId, | 1236 !kIncludeVersion, !kIncludePathId, |
1247 !kIncludeDiversificationNonce, | 1237 !kIncludeDiversificationNonce, |
1248 PACKET_4BYTE_PACKET_NUMBER); | 1238 PACKET_4BYTE_PACKET_NUMBER); |
(...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1305 false); | 1295 false); |
1306 EXPECT_FALSE(framer_.ProcessPacket(encrypted)); | 1296 EXPECT_FALSE(framer_.ProcessPacket(encrypted)); |
1307 EXPECT_EQ(QUIC_MISSING_PAYLOAD, framer_.error()); | 1297 EXPECT_EQ(QUIC_MISSING_PAYLOAD, framer_.error()); |
1308 ASSERT_TRUE(visitor_.header_.get()); | 1298 ASSERT_TRUE(visitor_.header_.get()); |
1309 EXPECT_EQ(kConnectionId, visitor_.header_->public_header.connection_id); | 1299 EXPECT_EQ(kConnectionId, visitor_.header_->public_header.connection_id); |
1310 EXPECT_FALSE(visitor_.header_->public_header.multipath_flag); | 1300 EXPECT_FALSE(visitor_.header_->public_header.multipath_flag); |
1311 EXPECT_FALSE(visitor_.header_->public_header.reset_flag); | 1301 EXPECT_FALSE(visitor_.header_->public_header.reset_flag); |
1312 EXPECT_FALSE(visitor_.header_->public_header.version_flag); | 1302 EXPECT_FALSE(visitor_.header_->public_header.version_flag); |
1313 EXPECT_EQ(PACKET_2BYTE_PACKET_NUMBER, | 1303 EXPECT_EQ(PACKET_2BYTE_PACKET_NUMBER, |
1314 visitor_.header_->public_header.packet_number_length); | 1304 visitor_.header_->public_header.packet_number_length); |
1315 EXPECT_FALSE(visitor_.header_->fec_flag); | |
1316 EXPECT_FALSE(visitor_.header_->entropy_flag); | 1305 EXPECT_FALSE(visitor_.header_->entropy_flag); |
1317 EXPECT_EQ(0, visitor_.header_->entropy_hash); | 1306 EXPECT_EQ(0, visitor_.header_->entropy_hash); |
1318 EXPECT_EQ(kPacketNumber, visitor_.header_->packet_number); | 1307 EXPECT_EQ(kPacketNumber, visitor_.header_->packet_number); |
1319 | 1308 |
1320 // Now test framing boundaries. | 1309 // Now test framing boundaries. |
1321 for (size_t i = 0; | 1310 for (size_t i = 0; |
1322 i < GetPacketHeaderSize(framer_.version(), PACKET_8BYTE_CONNECTION_ID, | 1311 i < GetPacketHeaderSize(framer_.version(), PACKET_8BYTE_CONNECTION_ID, |
1323 !kIncludeVersion, !kIncludePathId, | 1312 !kIncludeVersion, !kIncludePathId, |
1324 !kIncludeDiversificationNonce, | 1313 !kIncludeDiversificationNonce, |
1325 PACKET_2BYTE_PACKET_NUMBER); | 1314 PACKET_2BYTE_PACKET_NUMBER); |
(...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1382 false); | 1371 false); |
1383 EXPECT_FALSE(framer_.ProcessPacket(encrypted)); | 1372 EXPECT_FALSE(framer_.ProcessPacket(encrypted)); |
1384 EXPECT_EQ(QUIC_MISSING_PAYLOAD, framer_.error()); | 1373 EXPECT_EQ(QUIC_MISSING_PAYLOAD, framer_.error()); |
1385 ASSERT_TRUE(visitor_.header_.get()); | 1374 ASSERT_TRUE(visitor_.header_.get()); |
1386 EXPECT_EQ(kConnectionId, visitor_.header_->public_header.connection_id); | 1375 EXPECT_EQ(kConnectionId, visitor_.header_->public_header.connection_id); |
1387 EXPECT_FALSE(visitor_.header_->public_header.multipath_flag); | 1376 EXPECT_FALSE(visitor_.header_->public_header.multipath_flag); |
1388 EXPECT_FALSE(visitor_.header_->public_header.reset_flag); | 1377 EXPECT_FALSE(visitor_.header_->public_header.reset_flag); |
1389 EXPECT_FALSE(visitor_.header_->public_header.version_flag); | 1378 EXPECT_FALSE(visitor_.header_->public_header.version_flag); |
1390 EXPECT_EQ(PACKET_1BYTE_PACKET_NUMBER, | 1379 EXPECT_EQ(PACKET_1BYTE_PACKET_NUMBER, |
1391 visitor_.header_->public_header.packet_number_length); | 1380 visitor_.header_->public_header.packet_number_length); |
1392 EXPECT_FALSE(visitor_.header_->fec_flag); | |
1393 EXPECT_FALSE(visitor_.header_->entropy_flag); | 1381 EXPECT_FALSE(visitor_.header_->entropy_flag); |
1394 EXPECT_EQ(0, visitor_.header_->entropy_hash); | 1382 EXPECT_EQ(0, visitor_.header_->entropy_hash); |
1395 EXPECT_EQ(kPacketNumber, visitor_.header_->packet_number); | 1383 EXPECT_EQ(kPacketNumber, visitor_.header_->packet_number); |
1396 | 1384 |
1397 // Now test framing boundaries. | 1385 // Now test framing boundaries. |
1398 for (size_t i = 0; | 1386 for (size_t i = 0; |
1399 i < GetPacketHeaderSize(framer_.version(), PACKET_8BYTE_CONNECTION_ID, | 1387 i < GetPacketHeaderSize(framer_.version(), PACKET_8BYTE_CONNECTION_ID, |
1400 !kIncludeVersion, !kIncludePathId, | 1388 !kIncludeVersion, !kIncludePathId, |
1401 !kIncludeDiversificationNonce, | 1389 !kIncludeDiversificationNonce, |
1402 PACKET_1BYTE_PACKET_NUMBER); | 1390 PACKET_1BYTE_PACKET_NUMBER); |
(...skipping 22 matching lines...) Expand all Loading... |
1425 } | 1413 } |
1426 | 1414 |
1427 TEST_P(QuicFramerTest, PacketNumberDecreasesThenIncreases) { | 1415 TEST_P(QuicFramerTest, PacketNumberDecreasesThenIncreases) { |
1428 FLAGS_quic_packet_numbers_largest_received = true; | 1416 FLAGS_quic_packet_numbers_largest_received = true; |
1429 // Test the case when a packet is received from the past and future packet | 1417 // Test the case when a packet is received from the past and future packet |
1430 // numbers are still calculated relative to the largest received packet. | 1418 // numbers are still calculated relative to the largest received packet. |
1431 QuicPacketHeader header; | 1419 QuicPacketHeader header; |
1432 header.public_header.connection_id = kConnectionId; | 1420 header.public_header.connection_id = kConnectionId; |
1433 header.public_header.reset_flag = false; | 1421 header.public_header.reset_flag = false; |
1434 header.public_header.version_flag = false; | 1422 header.public_header.version_flag = false; |
1435 header.fec_flag = false; | |
1436 header.entropy_flag = false; | 1423 header.entropy_flag = false; |
1437 header.packet_number = kPacketNumber - 2; | 1424 header.packet_number = kPacketNumber - 2; |
1438 | 1425 |
1439 QuicPaddingFrame padding_frame; | 1426 QuicPaddingFrame padding_frame; |
1440 QuicFrames frames; | 1427 QuicFrames frames; |
1441 frames.push_back(QuicFrame(padding_frame)); | 1428 frames.push_back(QuicFrame(padding_frame)); |
1442 std::unique_ptr<QuicPacket> data(BuildDataPacket(header, frames)); | 1429 std::unique_ptr<QuicPacket> data(BuildDataPacket(header, frames)); |
1443 ASSERT_TRUE(data != nullptr); | 1430 ASSERT_TRUE(data != nullptr); |
1444 | 1431 |
1445 QuicEncryptedPacket encrypted(data->data(), data->length(), false); | 1432 QuicEncryptedPacket encrypted(data->data(), data->length(), false); |
(...skipping 231 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1677 // frame type (padding) | 1664 // frame type (padding) |
1678 0x00, | 1665 0x00, |
1679 0x00, 0x00, 0x00, 0x00 | 1666 0x00, 0x00, 0x00, 0x00 |
1680 }; | 1667 }; |
1681 // clang-format on | 1668 // clang-format on |
1682 CheckProcessingFails(packet, arraysize(packet), | 1669 CheckProcessingFails(packet, arraysize(packet), |
1683 "Illegal private flags value.", | 1670 "Illegal private flags value.", |
1684 QUIC_INVALID_PACKET_HEADER); | 1671 QUIC_INVALID_PACKET_HEADER); |
1685 }; | 1672 }; |
1686 | 1673 |
1687 TEST_P(QuicFramerTest, InvalidFECGroupOffset) { | |
1688 if (framer_.version() > QUIC_VERSION_33) { | |
1689 return; | |
1690 } | |
1691 // clang-format off | |
1692 unsigned char packet[] = { | |
1693 // public flags (8 byte connection_id) | |
1694 0x38, | |
1695 // connection_id | |
1696 0x10, 0x32, 0x54, 0x76, | |
1697 0x98, 0xBA, 0xDC, 0xFE, | |
1698 // packet number | |
1699 0x01, 0x00, 0x00, 0x00, | |
1700 0x00, 0x00, | |
1701 // private flags (fec group) | |
1702 0x02, | |
1703 // first fec protected packet offset | |
1704 0x10 | |
1705 }; | |
1706 // clang-format on | |
1707 CheckProcessingFails(packet, arraysize(packet), | |
1708 "Illegal private flags value.", | |
1709 QUIC_INVALID_PACKET_HEADER); | |
1710 | |
1711 }; | |
1712 | |
1713 TEST_P(QuicFramerTest, PaddingFrame) { | 1674 TEST_P(QuicFramerTest, PaddingFrame) { |
1714 // clang-format off | 1675 // clang-format off |
1715 unsigned char packet[] = { | 1676 unsigned char packet[] = { |
1716 // public flags (8 byte connection_id) | 1677 // public flags (8 byte connection_id) |
1717 0x38, | 1678 0x38, |
1718 // connection_id | 1679 // connection_id |
1719 0x10, 0x32, 0x54, 0x76, | 1680 0x10, 0x32, 0x54, 0x76, |
1720 0x98, 0xBA, 0xDC, 0xFE, | 1681 0x98, 0xBA, 0xDC, 0xFE, |
1721 // packet number | 1682 // packet number |
1722 0xBC, 0x9A, 0x78, 0x56, | 1683 0xBC, 0x9A, 0x78, 0x56, |
(...skipping 2192 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3915 } else if (i < kVersionOffset) { | 3876 } else if (i < kVersionOffset) { |
3916 expected_error = "Unable to read ConnectionId."; | 3877 expected_error = "Unable to read ConnectionId."; |
3917 } else { | 3878 } else { |
3918 expected_error = "Unable to read supported version in negotiation."; | 3879 expected_error = "Unable to read supported version in negotiation."; |
3919 error_code = QUIC_INVALID_VERSION_NEGOTIATION_PACKET; | 3880 error_code = QUIC_INVALID_VERSION_NEGOTIATION_PACKET; |
3920 } | 3881 } |
3921 CheckProcessingFails(packet, i, expected_error, error_code); | 3882 CheckProcessingFails(packet, i, expected_error, error_code); |
3922 } | 3883 } |
3923 } | 3884 } |
3924 | 3885 |
3925 TEST_P(QuicFramerTest, DropFecPacket) { | |
3926 // clang-format off | |
3927 unsigned char packet[] = { | |
3928 // public flags (8 byte connection_id) | |
3929 0x38, | |
3930 // connection_id | |
3931 0x10, 0x32, 0x54, 0x76, | |
3932 0x98, 0xBA, 0xDC, 0xFE, | |
3933 // packet number | |
3934 0xBC, 0x9A, 0x78, 0x56, | |
3935 0x34, 0x12, | |
3936 // private flags (fec group & FEC) | |
3937 0x06, | |
3938 // first fec protected packet offset | |
3939 0x01, | |
3940 | |
3941 // redundancy | |
3942 'a', 'b', 'c', 'd', | |
3943 'e', 'f', 'g', 'h', | |
3944 'i', 'j', 'k', 'l', | |
3945 'm', 'n', 'o', 'p', | |
3946 }; | |
3947 if (framer_.version() > QUIC_VERSION_33) { | |
3948 return; | |
3949 } | |
3950 QuicEncryptedPacket encrypted(AsChars(packet), arraysize(packet), false); | |
3951 EXPECT_FALSE(framer_.ProcessPacket(encrypted)); | |
3952 EXPECT_EQ(QUIC_INVALID_PACKET_HEADER, framer_.error()); | |
3953 EXPECT_FALSE(visitor_.header_.get()); | |
3954 } | |
3955 | |
3956 TEST_P(QuicFramerTest, BuildPaddingFramePacket) { | 3886 TEST_P(QuicFramerTest, BuildPaddingFramePacket) { |
3957 QuicPacketHeader header; | 3887 QuicPacketHeader header; |
3958 header.public_header.connection_id = kConnectionId; | 3888 header.public_header.connection_id = kConnectionId; |
3959 header.public_header.reset_flag = false; | 3889 header.public_header.reset_flag = false; |
3960 header.public_header.version_flag = false; | 3890 header.public_header.version_flag = false; |
3961 header.fec_flag = false; | |
3962 header.entropy_flag = false; | 3891 header.entropy_flag = false; |
3963 header.packet_number = kPacketNumber; | 3892 header.packet_number = kPacketNumber; |
3964 | 3893 |
3965 QuicPaddingFrame padding_frame; | 3894 QuicPaddingFrame padding_frame; |
3966 | 3895 |
3967 QuicFrames frames; | 3896 QuicFrames frames; |
3968 frames.push_back(QuicFrame(padding_frame)); | 3897 frames.push_back(QuicFrame(padding_frame)); |
3969 | 3898 |
3970 // clang-format off | 3899 // clang-format off |
3971 unsigned char packet[kMaxPacketSize] = { | 3900 unsigned char packet[kMaxPacketSize] = { |
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
4017 AsChars(framer_.version() <= QUIC_VERSION_33 ? packet : packet_34), | 3946 AsChars(framer_.version() <= QUIC_VERSION_33 ? packet : packet_34), |
4018 framer_.version() <= QUIC_VERSION_33 ? arraysize(packet) | 3947 framer_.version() <= QUIC_VERSION_33 ? arraysize(packet) |
4019 : arraysize(packet_34)); | 3948 : arraysize(packet_34)); |
4020 } | 3949 } |
4021 | 3950 |
4022 TEST_P(QuicFramerTest, Build4ByteSequenceNumberPaddingFramePacket) { | 3951 TEST_P(QuicFramerTest, Build4ByteSequenceNumberPaddingFramePacket) { |
4023 QuicPacketHeader header; | 3952 QuicPacketHeader header; |
4024 header.public_header.connection_id = kConnectionId; | 3953 header.public_header.connection_id = kConnectionId; |
4025 header.public_header.reset_flag = false; | 3954 header.public_header.reset_flag = false; |
4026 header.public_header.version_flag = false; | 3955 header.public_header.version_flag = false; |
4027 header.fec_flag = false; | |
4028 header.entropy_flag = false; | 3956 header.entropy_flag = false; |
4029 header.public_header.packet_number_length = PACKET_4BYTE_PACKET_NUMBER; | 3957 header.public_header.packet_number_length = PACKET_4BYTE_PACKET_NUMBER; |
4030 header.packet_number = kPacketNumber; | 3958 header.packet_number = kPacketNumber; |
4031 | 3959 |
4032 QuicPaddingFrame padding_frame; | 3960 QuicPaddingFrame padding_frame; |
4033 | 3961 |
4034 QuicFrames frames; | 3962 QuicFrames frames; |
4035 frames.push_back(QuicFrame(padding_frame)); | 3963 frames.push_back(QuicFrame(padding_frame)); |
4036 | 3964 |
4037 // clang-format off | 3965 // clang-format off |
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
4082 AsChars(framer_.version() <= QUIC_VERSION_33 ? packet : packet_34), | 4010 AsChars(framer_.version() <= QUIC_VERSION_33 ? packet : packet_34), |
4083 framer_.version() <= QUIC_VERSION_33 ? arraysize(packet) | 4011 framer_.version() <= QUIC_VERSION_33 ? arraysize(packet) |
4084 : arraysize(packet_34)); | 4012 : arraysize(packet_34)); |
4085 } | 4013 } |
4086 | 4014 |
4087 TEST_P(QuicFramerTest, Build2ByteSequenceNumberPaddingFramePacket) { | 4015 TEST_P(QuicFramerTest, Build2ByteSequenceNumberPaddingFramePacket) { |
4088 QuicPacketHeader header; | 4016 QuicPacketHeader header; |
4089 header.public_header.connection_id = kConnectionId; | 4017 header.public_header.connection_id = kConnectionId; |
4090 header.public_header.reset_flag = false; | 4018 header.public_header.reset_flag = false; |
4091 header.public_header.version_flag = false; | 4019 header.public_header.version_flag = false; |
4092 header.fec_flag = false; | |
4093 header.entropy_flag = false; | 4020 header.entropy_flag = false; |
4094 header.public_header.packet_number_length = PACKET_2BYTE_PACKET_NUMBER; | 4021 header.public_header.packet_number_length = PACKET_2BYTE_PACKET_NUMBER; |
4095 header.packet_number = kPacketNumber; | 4022 header.packet_number = kPacketNumber; |
4096 | 4023 |
4097 QuicPaddingFrame padding_frame; | 4024 QuicPaddingFrame padding_frame; |
4098 | 4025 |
4099 QuicFrames frames; | 4026 QuicFrames frames; |
4100 frames.push_back(QuicFrame(padding_frame)); | 4027 frames.push_back(QuicFrame(padding_frame)); |
4101 | 4028 |
4102 // clang-format off | 4029 // clang-format off |
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
4147 AsChars(framer_.version() <= QUIC_VERSION_33 ? packet : packet_34), | 4074 AsChars(framer_.version() <= QUIC_VERSION_33 ? packet : packet_34), |
4148 framer_.version() <= QUIC_VERSION_33 ? arraysize(packet) | 4075 framer_.version() <= QUIC_VERSION_33 ? arraysize(packet) |
4149 : arraysize(packet_34)); | 4076 : arraysize(packet_34)); |
4150 } | 4077 } |
4151 | 4078 |
4152 TEST_P(QuicFramerTest, Build1ByteSequenceNumberPaddingFramePacket) { | 4079 TEST_P(QuicFramerTest, Build1ByteSequenceNumberPaddingFramePacket) { |
4153 QuicPacketHeader header; | 4080 QuicPacketHeader header; |
4154 header.public_header.connection_id = kConnectionId; | 4081 header.public_header.connection_id = kConnectionId; |
4155 header.public_header.reset_flag = false; | 4082 header.public_header.reset_flag = false; |
4156 header.public_header.version_flag = false; | 4083 header.public_header.version_flag = false; |
4157 header.fec_flag = false; | |
4158 header.entropy_flag = false; | 4084 header.entropy_flag = false; |
4159 header.public_header.packet_number_length = PACKET_1BYTE_PACKET_NUMBER; | 4085 header.public_header.packet_number_length = PACKET_1BYTE_PACKET_NUMBER; |
4160 header.packet_number = kPacketNumber; | 4086 header.packet_number = kPacketNumber; |
4161 | 4087 |
4162 QuicPaddingFrame padding_frame; | 4088 QuicPaddingFrame padding_frame; |
4163 | 4089 |
4164 QuicFrames frames; | 4090 QuicFrames frames; |
4165 frames.push_back(QuicFrame(padding_frame)); | 4091 frames.push_back(QuicFrame(padding_frame)); |
4166 | 4092 |
4167 // clang-format off | 4093 // clang-format off |
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
4212 AsChars(framer_.version() <= QUIC_VERSION_33 ? packet : packet_34), | 4138 AsChars(framer_.version() <= QUIC_VERSION_33 ? packet : packet_34), |
4213 framer_.version() <= QUIC_VERSION_33 ? arraysize(packet) | 4139 framer_.version() <= QUIC_VERSION_33 ? arraysize(packet) |
4214 : arraysize(packet_34)); | 4140 : arraysize(packet_34)); |
4215 } | 4141 } |
4216 | 4142 |
4217 TEST_P(QuicFramerTest, BuildStreamFramePacket) { | 4143 TEST_P(QuicFramerTest, BuildStreamFramePacket) { |
4218 QuicPacketHeader header; | 4144 QuicPacketHeader header; |
4219 header.public_header.connection_id = kConnectionId; | 4145 header.public_header.connection_id = kConnectionId; |
4220 header.public_header.reset_flag = false; | 4146 header.public_header.reset_flag = false; |
4221 header.public_header.version_flag = false; | 4147 header.public_header.version_flag = false; |
4222 header.fec_flag = false; | |
4223 header.entropy_flag = true; | 4148 header.entropy_flag = true; |
4224 header.packet_number = kPacketNumber; | 4149 header.packet_number = kPacketNumber; |
4225 | 4150 |
4226 QuicStreamFrame stream_frame(kStreamId, true, kStreamOffset, | 4151 QuicStreamFrame stream_frame(kStreamId, true, kStreamOffset, |
4227 StringPiece("hello world!")); | 4152 StringPiece("hello world!")); |
4228 | 4153 |
4229 QuicFrames frames; | 4154 QuicFrames frames; |
4230 frames.push_back(QuicFrame(&stream_frame)); | 4155 frames.push_back(QuicFrame(&stream_frame)); |
4231 | 4156 |
4232 // clang-format off | 4157 // clang-format off |
(...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
4287 AsChars(framer_.version() <= QUIC_VERSION_33 ? packet : packet_34), | 4212 AsChars(framer_.version() <= QUIC_VERSION_33 ? packet : packet_34), |
4288 framer_.version() <= QUIC_VERSION_33 ? arraysize(packet) | 4213 framer_.version() <= QUIC_VERSION_33 ? arraysize(packet) |
4289 : arraysize(packet_34)); | 4214 : arraysize(packet_34)); |
4290 } | 4215 } |
4291 | 4216 |
4292 TEST_P(QuicFramerTest, BuildStreamFramePacketWithVersionFlag) { | 4217 TEST_P(QuicFramerTest, BuildStreamFramePacketWithVersionFlag) { |
4293 QuicPacketHeader header; | 4218 QuicPacketHeader header; |
4294 header.public_header.connection_id = kConnectionId; | 4219 header.public_header.connection_id = kConnectionId; |
4295 header.public_header.reset_flag = false; | 4220 header.public_header.reset_flag = false; |
4296 header.public_header.version_flag = true; | 4221 header.public_header.version_flag = true; |
4297 header.fec_flag = false; | |
4298 header.entropy_flag = true; | 4222 header.entropy_flag = true; |
4299 header.packet_number = kPacketNumber; | 4223 header.packet_number = kPacketNumber; |
4300 | 4224 |
4301 QuicStreamFrame stream_frame(kStreamId, true, kStreamOffset, | 4225 QuicStreamFrame stream_frame(kStreamId, true, kStreamOffset, |
4302 StringPiece("hello world!")); | 4226 StringPiece("hello world!")); |
4303 | 4227 |
4304 QuicFrames frames; | 4228 QuicFrames frames; |
4305 frames.push_back(QuicFrame(&stream_frame)); | 4229 frames.push_back(QuicFrame(&stream_frame)); |
4306 | 4230 |
4307 // clang-format off | 4231 // clang-format off |
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
4358 framer_.version() <= QUIC_VERSION_33 ? arraysize(packet) | 4282 framer_.version() <= QUIC_VERSION_33 ? arraysize(packet) |
4359 : arraysize(packet_34)); | 4283 : arraysize(packet_34)); |
4360 } | 4284 } |
4361 | 4285 |
4362 TEST_P(QuicFramerTest, BuildStreamFramePacketWithMultipathFlag) { | 4286 TEST_P(QuicFramerTest, BuildStreamFramePacketWithMultipathFlag) { |
4363 QuicPacketHeader header; | 4287 QuicPacketHeader header; |
4364 header.public_header.connection_id = kConnectionId; | 4288 header.public_header.connection_id = kConnectionId; |
4365 header.public_header.multipath_flag = true; | 4289 header.public_header.multipath_flag = true; |
4366 header.public_header.reset_flag = false; | 4290 header.public_header.reset_flag = false; |
4367 header.public_header.version_flag = false; | 4291 header.public_header.version_flag = false; |
4368 header.fec_flag = false; | |
4369 header.entropy_flag = true; | 4292 header.entropy_flag = true; |
4370 header.path_id = kPathId; | 4293 header.path_id = kPathId; |
4371 header.packet_number = kPacketNumber; | 4294 header.packet_number = kPacketNumber; |
4372 | 4295 |
4373 QuicStreamFrame stream_frame(kStreamId, true, kStreamOffset, | 4296 QuicStreamFrame stream_frame(kStreamId, true, kStreamOffset, |
4374 StringPiece("hello world!")); | 4297 StringPiece("hello world!")); |
4375 | 4298 |
4376 QuicFrames frames; | 4299 QuicFrames frames; |
4377 frames.push_back(QuicFrame(&stream_frame)); | 4300 frames.push_back(QuicFrame(&stream_frame)); |
4378 | 4301 |
(...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
4439 framer_.version() <= QUIC_VERSION_33 ? arraysize(packet) | 4362 framer_.version() <= QUIC_VERSION_33 ? arraysize(packet) |
4440 : arraysize(packet_34)); | 4363 : arraysize(packet_34)); |
4441 } | 4364 } |
4442 | 4365 |
4443 TEST_P(QuicFramerTest, BuildStreamFramePacketWithBothVersionAndMultipathFlag) { | 4366 TEST_P(QuicFramerTest, BuildStreamFramePacketWithBothVersionAndMultipathFlag) { |
4444 QuicPacketHeader header; | 4367 QuicPacketHeader header; |
4445 header.public_header.connection_id = kConnectionId; | 4368 header.public_header.connection_id = kConnectionId; |
4446 header.public_header.multipath_flag = true; | 4369 header.public_header.multipath_flag = true; |
4447 header.public_header.reset_flag = false; | 4370 header.public_header.reset_flag = false; |
4448 header.public_header.version_flag = true; | 4371 header.public_header.version_flag = true; |
4449 header.fec_flag = false; | |
4450 header.entropy_flag = true; | 4372 header.entropy_flag = true; |
4451 header.path_id = kPathId; | 4373 header.path_id = kPathId; |
4452 header.packet_number = kPacketNumber; | 4374 header.packet_number = kPacketNumber; |
4453 | 4375 |
4454 QuicStreamFrame stream_frame(kStreamId, true, kStreamOffset, | 4376 QuicStreamFrame stream_frame(kStreamId, true, kStreamOffset, |
4455 StringPiece("hello world!")); | 4377 StringPiece("hello world!")); |
4456 | 4378 |
4457 QuicFrames frames; | 4379 QuicFrames frames; |
4458 frames.push_back(QuicFrame(&stream_frame)); | 4380 frames.push_back(QuicFrame(&stream_frame)); |
4459 | 4381 |
(...skipping 89 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
4549 | 4471 |
4550 TEST_P(QuicFramerTest, BuildAckFramePacket) { | 4472 TEST_P(QuicFramerTest, BuildAckFramePacket) { |
4551 if (framer_.version() > QUIC_VERSION_33) { | 4473 if (framer_.version() > QUIC_VERSION_33) { |
4552 return; | 4474 return; |
4553 } | 4475 } |
4554 | 4476 |
4555 QuicPacketHeader header; | 4477 QuicPacketHeader header; |
4556 header.public_header.connection_id = kConnectionId; | 4478 header.public_header.connection_id = kConnectionId; |
4557 header.public_header.reset_flag = false; | 4479 header.public_header.reset_flag = false; |
4558 header.public_header.version_flag = false; | 4480 header.public_header.version_flag = false; |
4559 header.fec_flag = false; | |
4560 header.entropy_flag = true; | 4481 header.entropy_flag = true; |
4561 header.packet_number = kPacketNumber; | 4482 header.packet_number = kPacketNumber; |
4562 | 4483 |
4563 QuicAckFrame ack_frame; | 4484 QuicAckFrame ack_frame; |
4564 ack_frame.entropy_hash = 0x43; | 4485 ack_frame.entropy_hash = 0x43; |
4565 ack_frame.largest_observed = kLargestObserved; | 4486 ack_frame.largest_observed = kLargestObserved; |
4566 ack_frame.ack_delay_time = QuicTime::Delta::Zero(); | 4487 ack_frame.ack_delay_time = QuicTime::Delta::Zero(); |
4567 ack_frame.packets.Add(kMissingPacket); | 4488 ack_frame.packets.Add(kMissingPacket); |
4568 | 4489 |
4569 QuicFrames frames; | 4490 QuicFrames frames; |
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
4614 | 4535 |
4615 TEST_P(QuicFramerTest, BuildTruncatedAckFrameLargePacket) { | 4536 TEST_P(QuicFramerTest, BuildTruncatedAckFrameLargePacket) { |
4616 if (framer_.version() > QUIC_VERSION_33) { | 4537 if (framer_.version() > QUIC_VERSION_33) { |
4617 return; | 4538 return; |
4618 } | 4539 } |
4619 | 4540 |
4620 QuicPacketHeader header; | 4541 QuicPacketHeader header; |
4621 header.public_header.connection_id = kConnectionId; | 4542 header.public_header.connection_id = kConnectionId; |
4622 header.public_header.reset_flag = false; | 4543 header.public_header.reset_flag = false; |
4623 header.public_header.version_flag = false; | 4544 header.public_header.version_flag = false; |
4624 header.fec_flag = false; | |
4625 header.entropy_flag = true; | 4545 header.entropy_flag = true; |
4626 header.packet_number = kPacketNumber; | 4546 header.packet_number = kPacketNumber; |
4627 | 4547 |
4628 QuicAckFrame ack_frame; | 4548 QuicAckFrame ack_frame; |
4629 // This entropy hash is different from what shows up in the packet below, | 4549 // This entropy hash is different from what shows up in the packet below, |
4630 // since entropy is recomputed by the framer on ack truncation (by | 4550 // since entropy is recomputed by the framer on ack truncation (by |
4631 // TestEntropyCalculator for this test.) | 4551 // TestEntropyCalculator for this test.) |
4632 ack_frame.entropy_hash = 0x43; | 4552 ack_frame.entropy_hash = 0x43; |
4633 ack_frame.largest_observed = 2 * 300; | 4553 ack_frame.largest_observed = 2 * 300; |
4634 ack_frame.ack_delay_time = QuicTime::Delta::Zero(); | 4554 ack_frame.ack_delay_time = QuicTime::Delta::Zero(); |
(...skipping 91 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
4726 | 4646 |
4727 TEST_P(QuicFramerTest, BuildTruncatedAckFrameSmallPacket) { | 4647 TEST_P(QuicFramerTest, BuildTruncatedAckFrameSmallPacket) { |
4728 if (framer_.version() > QUIC_VERSION_33) { | 4648 if (framer_.version() > QUIC_VERSION_33) { |
4729 return; | 4649 return; |
4730 } | 4650 } |
4731 | 4651 |
4732 QuicPacketHeader header; | 4652 QuicPacketHeader header; |
4733 header.public_header.connection_id = kConnectionId; | 4653 header.public_header.connection_id = kConnectionId; |
4734 header.public_header.reset_flag = false; | 4654 header.public_header.reset_flag = false; |
4735 header.public_header.version_flag = false; | 4655 header.public_header.version_flag = false; |
4736 header.fec_flag = false; | |
4737 header.entropy_flag = true; | 4656 header.entropy_flag = true; |
4738 header.packet_number = kPacketNumber; | 4657 header.packet_number = kPacketNumber; |
4739 | 4658 |
4740 QuicAckFrame ack_frame; | 4659 QuicAckFrame ack_frame; |
4741 // This entropy hash is different from what shows up in the packet below, | 4660 // This entropy hash is different from what shows up in the packet below, |
4742 // since entropy is recomputed by the framer on ack truncation (by | 4661 // since entropy is recomputed by the framer on ack truncation (by |
4743 // TestEntropyCalculator for this test.) | 4662 // TestEntropyCalculator for this test.) |
4744 ack_frame.entropy_hash = 0x43; | 4663 ack_frame.entropy_hash = 0x43; |
4745 ack_frame.largest_observed = 2 * 300; | 4664 ack_frame.largest_observed = 2 * 300; |
4746 ack_frame.ack_delay_time = QuicTime::Delta::Zero(); | 4665 ack_frame.ack_delay_time = QuicTime::Delta::Zero(); |
(...skipping 297 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
5044 } | 4963 } |
5045 | 4964 |
5046 TEST_P(QuicFramerTest, BuildStopWaitingPacket) { | 4965 TEST_P(QuicFramerTest, BuildStopWaitingPacket) { |
5047 if (framer_.version() > QUIC_VERSION_33) { | 4966 if (framer_.version() > QUIC_VERSION_33) { |
5048 return; | 4967 return; |
5049 } | 4968 } |
5050 QuicPacketHeader header; | 4969 QuicPacketHeader header; |
5051 header.public_header.connection_id = kConnectionId; | 4970 header.public_header.connection_id = kConnectionId; |
5052 header.public_header.reset_flag = false; | 4971 header.public_header.reset_flag = false; |
5053 header.public_header.version_flag = false; | 4972 header.public_header.version_flag = false; |
5054 header.fec_flag = false; | |
5055 header.entropy_flag = true; | 4973 header.entropy_flag = true; |
5056 header.packet_number = kPacketNumber; | 4974 header.packet_number = kPacketNumber; |
5057 | 4975 |
5058 QuicStopWaitingFrame stop_waiting_frame; | 4976 QuicStopWaitingFrame stop_waiting_frame; |
5059 stop_waiting_frame.entropy_hash = 0x14; | 4977 stop_waiting_frame.entropy_hash = 0x14; |
5060 stop_waiting_frame.least_unacked = kLeastUnacked; | 4978 stop_waiting_frame.least_unacked = kLeastUnacked; |
5061 | 4979 |
5062 QuicFrames frames; | 4980 QuicFrames frames; |
5063 frames.push_back(QuicFrame(&stop_waiting_frame)); | 4981 frames.push_back(QuicFrame(&stop_waiting_frame)); |
5064 | 4982 |
(...skipping 29 matching lines...) Expand all Loading... |
5094 } | 5012 } |
5095 | 5013 |
5096 TEST_P(QuicFramerTest, BuildNewStopWaitingPacket) { | 5014 TEST_P(QuicFramerTest, BuildNewStopWaitingPacket) { |
5097 if (framer_.version() <= QUIC_VERSION_33) { | 5015 if (framer_.version() <= QUIC_VERSION_33) { |
5098 return; | 5016 return; |
5099 } | 5017 } |
5100 QuicPacketHeader header; | 5018 QuicPacketHeader header; |
5101 header.public_header.connection_id = kConnectionId; | 5019 header.public_header.connection_id = kConnectionId; |
5102 header.public_header.reset_flag = false; | 5020 header.public_header.reset_flag = false; |
5103 header.public_header.version_flag = false; | 5021 header.public_header.version_flag = false; |
5104 header.fec_flag = false; | |
5105 header.entropy_flag = false; | 5022 header.entropy_flag = false; |
5106 header.packet_number = kPacketNumber; | 5023 header.packet_number = kPacketNumber; |
5107 | 5024 |
5108 QuicStopWaitingFrame stop_waiting_frame; | 5025 QuicStopWaitingFrame stop_waiting_frame; |
5109 stop_waiting_frame.least_unacked = kLeastUnacked; | 5026 stop_waiting_frame.least_unacked = kLeastUnacked; |
5110 | 5027 |
5111 QuicFrames frames; | 5028 QuicFrames frames; |
5112 frames.push_back(QuicFrame(&stop_waiting_frame)); | 5029 frames.push_back(QuicFrame(&stop_waiting_frame)); |
5113 | 5030 |
5114 // clang-format off | 5031 // clang-format off |
(...skipping 20 matching lines...) Expand all Loading... |
5135 test::CompareCharArraysWithHexError("constructed packet", data->data(), | 5052 test::CompareCharArraysWithHexError("constructed packet", data->data(), |
5136 data->length(), AsChars(packet), | 5053 data->length(), AsChars(packet), |
5137 arraysize(packet)); | 5054 arraysize(packet)); |
5138 } | 5055 } |
5139 | 5056 |
5140 TEST_P(QuicFramerTest, BuildRstFramePacketQuic) { | 5057 TEST_P(QuicFramerTest, BuildRstFramePacketQuic) { |
5141 QuicPacketHeader header; | 5058 QuicPacketHeader header; |
5142 header.public_header.connection_id = kConnectionId; | 5059 header.public_header.connection_id = kConnectionId; |
5143 header.public_header.reset_flag = false; | 5060 header.public_header.reset_flag = false; |
5144 header.public_header.version_flag = false; | 5061 header.public_header.version_flag = false; |
5145 header.fec_flag = false; | |
5146 header.entropy_flag = false; | 5062 header.entropy_flag = false; |
5147 header.packet_number = kPacketNumber; | 5063 header.packet_number = kPacketNumber; |
5148 | 5064 |
5149 QuicRstStreamFrame rst_frame; | 5065 QuicRstStreamFrame rst_frame; |
5150 rst_frame.stream_id = kStreamId; | 5066 rst_frame.stream_id = kStreamId; |
5151 rst_frame.error_code = static_cast<QuicRstStreamErrorCode>(0x05060708); | 5067 rst_frame.error_code = static_cast<QuicRstStreamErrorCode>(0x05060708); |
5152 rst_frame.byte_offset = 0x0807060504030201; | 5068 rst_frame.byte_offset = 0x0807060504030201; |
5153 | 5069 |
5154 // clang-format off | 5070 // clang-format off |
5155 unsigned char packet[] = { | 5071 unsigned char packet[] = { |
(...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
5208 AsChars(framer_.version() <= QUIC_VERSION_33 ? packet : packet_34), | 5124 AsChars(framer_.version() <= QUIC_VERSION_33 ? packet : packet_34), |
5209 framer_.version() <= QUIC_VERSION_33 ? arraysize(packet) | 5125 framer_.version() <= QUIC_VERSION_33 ? arraysize(packet) |
5210 : arraysize(packet_34)); | 5126 : arraysize(packet_34)); |
5211 } | 5127 } |
5212 | 5128 |
5213 TEST_P(QuicFramerTest, BuildCloseFramePacket) { | 5129 TEST_P(QuicFramerTest, BuildCloseFramePacket) { |
5214 QuicPacketHeader header; | 5130 QuicPacketHeader header; |
5215 header.public_header.connection_id = kConnectionId; | 5131 header.public_header.connection_id = kConnectionId; |
5216 header.public_header.reset_flag = false; | 5132 header.public_header.reset_flag = false; |
5217 header.public_header.version_flag = false; | 5133 header.public_header.version_flag = false; |
5218 header.fec_flag = false; | |
5219 header.entropy_flag = true; | 5134 header.entropy_flag = true; |
5220 header.packet_number = kPacketNumber; | 5135 header.packet_number = kPacketNumber; |
5221 | 5136 |
5222 QuicConnectionCloseFrame close_frame; | 5137 QuicConnectionCloseFrame close_frame; |
5223 close_frame.error_code = static_cast<QuicErrorCode>(0x05060708); | 5138 close_frame.error_code = static_cast<QuicErrorCode>(0x05060708); |
5224 close_frame.error_details = "because I can"; | 5139 close_frame.error_details = "because I can"; |
5225 | 5140 |
5226 QuicFrames frames; | 5141 QuicFrames frames; |
5227 frames.push_back(QuicFrame(&close_frame)); | 5142 frames.push_back(QuicFrame(&close_frame)); |
5228 | 5143 |
(...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
5285 AsChars(framer_.version() <= QUIC_VERSION_33 ? packet : packet_34), | 5200 AsChars(framer_.version() <= QUIC_VERSION_33 ? packet : packet_34), |
5286 framer_.version() <= QUIC_VERSION_33 ? arraysize(packet) | 5201 framer_.version() <= QUIC_VERSION_33 ? arraysize(packet) |
5287 : arraysize(packet_34)); | 5202 : arraysize(packet_34)); |
5288 } | 5203 } |
5289 | 5204 |
5290 TEST_P(QuicFramerTest, BuildGoAwayPacket) { | 5205 TEST_P(QuicFramerTest, BuildGoAwayPacket) { |
5291 QuicPacketHeader header; | 5206 QuicPacketHeader header; |
5292 header.public_header.connection_id = kConnectionId; | 5207 header.public_header.connection_id = kConnectionId; |
5293 header.public_header.reset_flag = false; | 5208 header.public_header.reset_flag = false; |
5294 header.public_header.version_flag = false; | 5209 header.public_header.version_flag = false; |
5295 header.fec_flag = false; | |
5296 header.entropy_flag = true; | 5210 header.entropy_flag = true; |
5297 header.packet_number = kPacketNumber; | 5211 header.packet_number = kPacketNumber; |
5298 | 5212 |
5299 QuicGoAwayFrame goaway_frame; | 5213 QuicGoAwayFrame goaway_frame; |
5300 goaway_frame.error_code = static_cast<QuicErrorCode>(0x05060708); | 5214 goaway_frame.error_code = static_cast<QuicErrorCode>(0x05060708); |
5301 goaway_frame.last_good_stream_id = kStreamId; | 5215 goaway_frame.last_good_stream_id = kStreamId; |
5302 goaway_frame.reason_phrase = "because I can"; | 5216 goaway_frame.reason_phrase = "because I can"; |
5303 | 5217 |
5304 QuicFrames frames; | 5218 QuicFrames frames; |
5305 frames.push_back(QuicFrame(&goaway_frame)); | 5219 frames.push_back(QuicFrame(&goaway_frame)); |
(...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
5366 AsChars(framer_.version() <= QUIC_VERSION_33 ? packet : packet_34), | 5280 AsChars(framer_.version() <= QUIC_VERSION_33 ? packet : packet_34), |
5367 framer_.version() <= QUIC_VERSION_33 ? arraysize(packet) | 5281 framer_.version() <= QUIC_VERSION_33 ? arraysize(packet) |
5368 : arraysize(packet_34)); | 5282 : arraysize(packet_34)); |
5369 } | 5283 } |
5370 | 5284 |
5371 TEST_P(QuicFramerTest, BuildWindowUpdatePacket) { | 5285 TEST_P(QuicFramerTest, BuildWindowUpdatePacket) { |
5372 QuicPacketHeader header; | 5286 QuicPacketHeader header; |
5373 header.public_header.connection_id = kConnectionId; | 5287 header.public_header.connection_id = kConnectionId; |
5374 header.public_header.reset_flag = false; | 5288 header.public_header.reset_flag = false; |
5375 header.public_header.version_flag = false; | 5289 header.public_header.version_flag = false; |
5376 header.fec_flag = false; | |
5377 header.entropy_flag = true; | 5290 header.entropy_flag = true; |
5378 header.packet_number = kPacketNumber; | 5291 header.packet_number = kPacketNumber; |
5379 | 5292 |
5380 QuicWindowUpdateFrame window_update_frame; | 5293 QuicWindowUpdateFrame window_update_frame; |
5381 window_update_frame.stream_id = kStreamId; | 5294 window_update_frame.stream_id = kStreamId; |
5382 window_update_frame.byte_offset = 0x1122334455667788; | 5295 window_update_frame.byte_offset = 0x1122334455667788; |
5383 | 5296 |
5384 QuicFrames frames; | 5297 QuicFrames frames; |
5385 frames.push_back(QuicFrame(&window_update_frame)); | 5298 frames.push_back(QuicFrame(&window_update_frame)); |
5386 | 5299 |
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
5434 AsChars(framer_.version() <= QUIC_VERSION_33 ? packet : packet_34), | 5347 AsChars(framer_.version() <= QUIC_VERSION_33 ? packet : packet_34), |
5435 framer_.version() <= QUIC_VERSION_33 ? arraysize(packet) | 5348 framer_.version() <= QUIC_VERSION_33 ? arraysize(packet) |
5436 : arraysize(packet_34)); | 5349 : arraysize(packet_34)); |
5437 } | 5350 } |
5438 | 5351 |
5439 TEST_P(QuicFramerTest, BuildBlockedPacket) { | 5352 TEST_P(QuicFramerTest, BuildBlockedPacket) { |
5440 QuicPacketHeader header; | 5353 QuicPacketHeader header; |
5441 header.public_header.connection_id = kConnectionId; | 5354 header.public_header.connection_id = kConnectionId; |
5442 header.public_header.reset_flag = false; | 5355 header.public_header.reset_flag = false; |
5443 header.public_header.version_flag = false; | 5356 header.public_header.version_flag = false; |
5444 header.fec_flag = false; | |
5445 header.entropy_flag = true; | 5357 header.entropy_flag = true; |
5446 header.packet_number = kPacketNumber; | 5358 header.packet_number = kPacketNumber; |
5447 | 5359 |
5448 QuicBlockedFrame blocked_frame; | 5360 QuicBlockedFrame blocked_frame; |
5449 blocked_frame.stream_id = kStreamId; | 5361 blocked_frame.stream_id = kStreamId; |
5450 | 5362 |
5451 QuicFrames frames; | 5363 QuicFrames frames; |
5452 frames.push_back(QuicFrame(&blocked_frame)); | 5364 frames.push_back(QuicFrame(&blocked_frame)); |
5453 | 5365 |
5454 // clang-format off | 5366 // clang-format off |
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
5495 AsChars(framer_.version() <= QUIC_VERSION_33 ? packet : packet_34), | 5407 AsChars(framer_.version() <= QUIC_VERSION_33 ? packet : packet_34), |
5496 framer_.version() <= QUIC_VERSION_33 ? arraysize(packet) | 5408 framer_.version() <= QUIC_VERSION_33 ? arraysize(packet) |
5497 : arraysize(packet_34)); | 5409 : arraysize(packet_34)); |
5498 } | 5410 } |
5499 | 5411 |
5500 TEST_P(QuicFramerTest, BuildPingPacket) { | 5412 TEST_P(QuicFramerTest, BuildPingPacket) { |
5501 QuicPacketHeader header; | 5413 QuicPacketHeader header; |
5502 header.public_header.connection_id = kConnectionId; | 5414 header.public_header.connection_id = kConnectionId; |
5503 header.public_header.reset_flag = false; | 5415 header.public_header.reset_flag = false; |
5504 header.public_header.version_flag = false; | 5416 header.public_header.version_flag = false; |
5505 header.fec_flag = false; | |
5506 header.entropy_flag = true; | 5417 header.entropy_flag = true; |
5507 header.packet_number = kPacketNumber; | 5418 header.packet_number = kPacketNumber; |
5508 | 5419 |
5509 QuicPingFrame ping_frame; | 5420 QuicPingFrame ping_frame; |
5510 | 5421 |
5511 QuicFrames frames; | 5422 QuicFrames frames; |
5512 frames.push_back(QuicFrame(ping_frame)); | 5423 frames.push_back(QuicFrame(ping_frame)); |
5513 | 5424 |
5514 // clang-format off | 5425 // clang-format off |
5515 unsigned char packet[] = { | 5426 unsigned char packet[] = { |
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
5553 framer_.version() <= QUIC_VERSION_33 ? arraysize(packet) | 5464 framer_.version() <= QUIC_VERSION_33 ? arraysize(packet) |
5554 : arraysize(packet_34)); | 5465 : arraysize(packet_34)); |
5555 } | 5466 } |
5556 | 5467 |
5557 TEST_P(QuicFramerTest, BuildPathClosePacket) { | 5468 TEST_P(QuicFramerTest, BuildPathClosePacket) { |
5558 QuicPacketHeader header; | 5469 QuicPacketHeader header; |
5559 header.public_header.connection_id = kConnectionId; | 5470 header.public_header.connection_id = kConnectionId; |
5560 header.public_header.multipath_flag = true; | 5471 header.public_header.multipath_flag = true; |
5561 header.public_header.reset_flag = false; | 5472 header.public_header.reset_flag = false; |
5562 header.public_header.version_flag = false; | 5473 header.public_header.version_flag = false; |
5563 header.fec_flag = false; | |
5564 header.entropy_flag = true; | 5474 header.entropy_flag = true; |
5565 header.path_id = kDefaultPathId; | 5475 header.path_id = kDefaultPathId; |
5566 header.packet_number = kPacketNumber; | 5476 header.packet_number = kPacketNumber; |
5567 | 5477 |
5568 QuicPathCloseFrame path_close; | 5478 QuicPathCloseFrame path_close; |
5569 path_close.path_id = kPathId; | 5479 path_close.path_id = kPathId; |
5570 QuicFrames frames; | 5480 QuicFrames frames; |
5571 frames.push_back(QuicFrame(&path_close)); | 5481 frames.push_back(QuicFrame(&path_close)); |
5572 | 5482 |
5573 // clang-format off | 5483 // clang-format off |
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
5616 framer_.version() <= QUIC_VERSION_33 ? arraysize(packet) | 5526 framer_.version() <= QUIC_VERSION_33 ? arraysize(packet) |
5617 : arraysize(packet_34)); | 5527 : arraysize(packet_34)); |
5618 } | 5528 } |
5619 | 5529 |
5620 // Test that the MTU discovery packet is serialized correctly as a PING packet. | 5530 // Test that the MTU discovery packet is serialized correctly as a PING packet. |
5621 TEST_P(QuicFramerTest, BuildMtuDiscoveryPacket) { | 5531 TEST_P(QuicFramerTest, BuildMtuDiscoveryPacket) { |
5622 QuicPacketHeader header; | 5532 QuicPacketHeader header; |
5623 header.public_header.connection_id = kConnectionId; | 5533 header.public_header.connection_id = kConnectionId; |
5624 header.public_header.reset_flag = false; | 5534 header.public_header.reset_flag = false; |
5625 header.public_header.version_flag = false; | 5535 header.public_header.version_flag = false; |
5626 header.fec_flag = false; | |
5627 header.entropy_flag = true; | 5536 header.entropy_flag = true; |
5628 header.packet_number = kPacketNumber; | 5537 header.packet_number = kPacketNumber; |
5629 | 5538 |
5630 QuicMtuDiscoveryFrame mtu_discovery_frame; | 5539 QuicMtuDiscoveryFrame mtu_discovery_frame; |
5631 | 5540 |
5632 QuicFrames frames; | 5541 QuicFrames frames; |
5633 frames.push_back(QuicFrame(mtu_discovery_frame)); | 5542 frames.push_back(QuicFrame(mtu_discovery_frame)); |
5634 | 5543 |
5635 // clang-format off | 5544 // clang-format off |
5636 unsigned char packet[] = { | 5545 unsigned char packet[] = { |
(...skipping 415 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
6052 | 5961 |
6053 ASSERT_NE(0u, encrypted_length); | 5962 ASSERT_NE(0u, encrypted_length); |
6054 EXPECT_TRUE(CheckEncryption(kPathId, packet_number, raw.get())); | 5963 EXPECT_TRUE(CheckEncryption(kPathId, packet_number, raw.get())); |
6055 } | 5964 } |
6056 | 5965 |
6057 TEST_P(QuicFramerTest, AckTruncationLargePacket) { | 5966 TEST_P(QuicFramerTest, AckTruncationLargePacket) { |
6058 QuicPacketHeader header; | 5967 QuicPacketHeader header; |
6059 header.public_header.connection_id = kConnectionId; | 5968 header.public_header.connection_id = kConnectionId; |
6060 header.public_header.reset_flag = false; | 5969 header.public_header.reset_flag = false; |
6061 header.public_header.version_flag = false; | 5970 header.public_header.version_flag = false; |
6062 header.fec_flag = false; | |
6063 header.entropy_flag = false; | 5971 header.entropy_flag = false; |
6064 header.packet_number = kPacketNumber; | 5972 header.packet_number = kPacketNumber; |
6065 | 5973 |
6066 QuicAckFrame ack_frame; | 5974 QuicAckFrame ack_frame; |
6067 // Create a packet with just the ack. | 5975 // Create a packet with just the ack. |
6068 if (framer_.version() <= QUIC_VERSION_33) { | 5976 if (framer_.version() <= QUIC_VERSION_33) { |
6069 ack_frame = MakeAckFrameWithNackRanges(300, 0u); | 5977 ack_frame = MakeAckFrameWithNackRanges(300, 0u); |
6070 } else { | 5978 } else { |
6071 ack_frame = MakeAckFrameWithAckBlocks(300, 0u); | 5979 ack_frame = MakeAckFrameWithAckBlocks(300, 0u); |
6072 } | 5980 } |
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
6104 EXPECT_EQ(90u, processed_ack_frame.packets.Min()); | 6012 EXPECT_EQ(90u, processed_ack_frame.packets.Min()); |
6105 EXPECT_EQ(600u, processed_ack_frame.packets.Max()); | 6013 EXPECT_EQ(600u, processed_ack_frame.packets.Max()); |
6106 } | 6014 } |
6107 } | 6015 } |
6108 | 6016 |
6109 TEST_P(QuicFramerTest, AckTruncationSmallPacket) { | 6017 TEST_P(QuicFramerTest, AckTruncationSmallPacket) { |
6110 QuicPacketHeader header; | 6018 QuicPacketHeader header; |
6111 header.public_header.connection_id = kConnectionId; | 6019 header.public_header.connection_id = kConnectionId; |
6112 header.public_header.reset_flag = false; | 6020 header.public_header.reset_flag = false; |
6113 header.public_header.version_flag = false; | 6021 header.public_header.version_flag = false; |
6114 header.fec_flag = false; | |
6115 header.entropy_flag = false; | 6022 header.entropy_flag = false; |
6116 header.packet_number = kPacketNumber; | 6023 header.packet_number = kPacketNumber; |
6117 | 6024 |
6118 // Create a packet with just the ack. | 6025 // Create a packet with just the ack. |
6119 QuicAckFrame ack_frame; | 6026 QuicAckFrame ack_frame; |
6120 if (framer_.version() <= QUIC_VERSION_33) { | 6027 if (framer_.version() <= QUIC_VERSION_33) { |
6121 ack_frame = MakeAckFrameWithNackRanges(300, 0u); | 6028 ack_frame = MakeAckFrameWithNackRanges(300, 0u); |
6122 } else { | 6029 } else { |
6123 ack_frame = MakeAckFrameWithAckBlocks(300, 0u); | 6030 ack_frame = MakeAckFrameWithAckBlocks(300, 0u); |
6124 } | 6031 } |
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
6157 EXPECT_EQ(124u, processed_ack_frame.packets.Min()); | 6064 EXPECT_EQ(124u, processed_ack_frame.packets.Min()); |
6158 EXPECT_EQ(600u, processed_ack_frame.packets.Max()); | 6065 EXPECT_EQ(600u, processed_ack_frame.packets.Max()); |
6159 } | 6066 } |
6160 } | 6067 } |
6161 | 6068 |
6162 TEST_P(QuicFramerTest, CleanTruncation) { | 6069 TEST_P(QuicFramerTest, CleanTruncation) { |
6163 QuicPacketHeader header; | 6070 QuicPacketHeader header; |
6164 header.public_header.connection_id = kConnectionId; | 6071 header.public_header.connection_id = kConnectionId; |
6165 header.public_header.reset_flag = false; | 6072 header.public_header.reset_flag = false; |
6166 header.public_header.version_flag = false; | 6073 header.public_header.version_flag = false; |
6167 header.fec_flag = false; | |
6168 header.entropy_flag = true; | 6074 header.entropy_flag = true; |
6169 header.packet_number = kPacketNumber; | 6075 header.packet_number = kPacketNumber; |
6170 | 6076 |
6171 QuicAckFrame ack_frame; | 6077 QuicAckFrame ack_frame; |
6172 ack_frame.largest_observed = 201; | 6078 ack_frame.largest_observed = 201; |
6173 ack_frame.packets.Add(1, ack_frame.largest_observed); | 6079 ack_frame.packets.Add(1, ack_frame.largest_observed); |
6174 | 6080 |
6175 // Create a packet with just the ack. | 6081 // Create a packet with just the ack. |
6176 QuicFrame frame; | 6082 QuicFrame frame; |
6177 frame.type = ACK_FRAME; | 6083 frame.type = ACK_FRAME; |
(...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
6237 'r', 'l', 'd', '!', | 6143 'r', 'l', 'd', '!', |
6238 }; | 6144 }; |
6239 // clang-format on | 6145 // clang-format on |
6240 | 6146 |
6241 QuicEncryptedPacket encrypted(AsChars(packet), arraysize(packet), false); | 6147 QuicEncryptedPacket encrypted(AsChars(packet), arraysize(packet), false); |
6242 EXPECT_TRUE(framer_.ProcessPacket(encrypted)); | 6148 EXPECT_TRUE(framer_.ProcessPacket(encrypted)); |
6243 EXPECT_EQ(QUIC_NO_ERROR, framer_.error()); | 6149 EXPECT_EQ(QUIC_NO_ERROR, framer_.error()); |
6244 ASSERT_TRUE(visitor_.header_.get()); | 6150 ASSERT_TRUE(visitor_.header_.get()); |
6245 EXPECT_TRUE(visitor_.header_->entropy_flag); | 6151 EXPECT_TRUE(visitor_.header_->entropy_flag); |
6246 EXPECT_EQ(1 << 4, visitor_.header_->entropy_hash); | 6152 EXPECT_EQ(1 << 4, visitor_.header_->entropy_hash); |
6247 EXPECT_FALSE(visitor_.header_->fec_flag); | |
6248 }; | 6153 }; |
6249 | 6154 |
6250 TEST_P(QuicFramerTest, StopPacketProcessing) { | 6155 TEST_P(QuicFramerTest, StopPacketProcessing) { |
6251 // clang-format off | 6156 // clang-format off |
6252 unsigned char packet[] = { | 6157 unsigned char packet[] = { |
6253 // public flags (8 byte connection_id) | 6158 // public flags (8 byte connection_id) |
6254 static_cast<unsigned char>( | 6159 static_cast<unsigned char>( |
6255 framer_.version() > QUIC_VERSION_32 ? 0x38 : 0x3C), | 6160 framer_.version() > QUIC_VERSION_32 ? 0x38 : 0x3C), |
6256 // connection_id | 6161 // connection_id |
6257 0x10, 0x32, 0x54, 0x76, | 6162 0x10, 0x32, 0x54, 0x76, |
(...skipping 243 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
6501 'o', ' ', 'w', 'o', | 6406 'o', ' ', 'w', 'o', |
6502 'r', 'l', 'd', '!', | 6407 'r', 'l', 'd', '!', |
6503 }; | 6408 }; |
6504 // clang-format on | 6409 // clang-format on |
6505 | 6410 |
6506 QuicFramerFuzzFunc(packet, arraysize(packet)); | 6411 QuicFramerFuzzFunc(packet, arraysize(packet)); |
6507 } | 6412 } |
6508 | 6413 |
6509 } // namespace test | 6414 } // namespace test |
6510 } // namespace net | 6415 } // namespace net |
OLD | NEW |