| 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 |