| 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 <algorithm> | 7 #include <algorithm> |
| 8 #include <cstdint> | 8 #include <cstdint> |
| 9 #include <map> | 9 #include <map> |
| 10 #include <memory> | 10 #include <memory> |
| (...skipping 573 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 584 }; | 584 }; |
| 585 // clang-format on | 585 // clang-format on |
| 586 | 586 |
| 587 const size_t header_size = GetPacketHeaderSize( | 587 const size_t header_size = GetPacketHeaderSize( |
| 588 framer_.version(), PACKET_8BYTE_CONNECTION_ID, !kIncludeVersion, | 588 framer_.version(), PACKET_8BYTE_CONNECTION_ID, !kIncludeVersion, |
| 589 !kIncludeDiversificationNonce, PACKET_6BYTE_PACKET_NUMBER); | 589 !kIncludeDiversificationNonce, PACKET_6BYTE_PACKET_NUMBER); |
| 590 | 590 |
| 591 memset(packet + header_size, 0, kMaxPacketSize - header_size); | 591 memset(packet + header_size, 0, kMaxPacketSize - header_size); |
| 592 | 592 |
| 593 QuicEncryptedPacket encrypted( | 593 QuicEncryptedPacket encrypted( |
| 594 AsChars(FLAGS_quic_restart_flag_quic_big_endian_connection_id | 594 AsChars( |
| 595 ? packet_cid_be | 595 QuicUtils::IsConnectionIdWireFormatBigEndian(framer_.perspective()) |
| 596 : packet), | 596 ? packet_cid_be |
| 597 FLAGS_quic_restart_flag_quic_big_endian_connection_id | 597 : packet), |
| 598 QuicUtils::IsConnectionIdWireFormatBigEndian(framer_.perspective()) |
| 598 ? arraysize(packet_cid_be) | 599 ? arraysize(packet_cid_be) |
| 599 : arraysize(packet), | 600 : arraysize(packet), |
| 600 false); | 601 false); |
| 601 EXPECT_QUIC_BUG(framer_.ProcessPacket(encrypted), "Packet too large:1"); | 602 EXPECT_QUIC_BUG(framer_.ProcessPacket(encrypted), "Packet too large:1"); |
| 602 | 603 |
| 603 ASSERT_TRUE(visitor_.header_.get()); | 604 ASSERT_TRUE(visitor_.header_.get()); |
| 604 // Make sure we've parsed the packet header, so we can send an error. | 605 // Make sure we've parsed the packet header, so we can send an error. |
| 605 EXPECT_EQ(kConnectionId, visitor_.header_->public_header.connection_id); | 606 EXPECT_EQ(kConnectionId, visitor_.header_->public_header.connection_id); |
| 606 // Make sure the correct error is propagated. | 607 // Make sure the correct error is propagated. |
| 607 EXPECT_EQ(QUIC_PACKET_TOO_LARGE, framer_.error()); | 608 EXPECT_EQ(QUIC_PACKET_TOO_LARGE, framer_.error()); |
| (...skipping 14 matching lines...) Expand all Loading... |
| 622 // public flags (8 byte connection_id) | 623 // public flags (8 byte connection_id) |
| 623 0x38, | 624 0x38, |
| 624 // connection_id | 625 // connection_id |
| 625 0xFE, 0xDC, 0xBA, 0x98, 0x76, 0x54, 0x32, 0x10, | 626 0xFE, 0xDC, 0xBA, 0x98, 0x76, 0x54, 0x32, 0x10, |
| 626 // packet number | 627 // packet number |
| 627 0xBC, 0x9A, 0x78, 0x56, 0x34, 0x12, | 628 0xBC, 0x9A, 0x78, 0x56, 0x34, 0x12, |
| 628 }; | 629 }; |
| 629 // clang-format on | 630 // clang-format on |
| 630 | 631 |
| 631 QuicEncryptedPacket encrypted( | 632 QuicEncryptedPacket encrypted( |
| 632 AsChars(FLAGS_quic_restart_flag_quic_big_endian_connection_id | 633 AsChars( |
| 633 ? packet_cid_be | 634 QuicUtils::IsConnectionIdWireFormatBigEndian(framer_.perspective()) |
| 634 : packet), | 635 ? packet_cid_be |
| 635 FLAGS_quic_restart_flag_quic_big_endian_connection_id | 636 : packet), |
| 637 QuicUtils::IsConnectionIdWireFormatBigEndian(framer_.perspective()) |
| 636 ? arraysize(packet_cid_be) | 638 ? arraysize(packet_cid_be) |
| 637 : arraysize(packet), | 639 : arraysize(packet), |
| 638 false); | 640 false); |
| 639 EXPECT_FALSE(framer_.ProcessPacket(encrypted)); | 641 EXPECT_FALSE(framer_.ProcessPacket(encrypted)); |
| 640 EXPECT_EQ(QUIC_MISSING_PAYLOAD, framer_.error()); | 642 EXPECT_EQ(QUIC_MISSING_PAYLOAD, framer_.error()); |
| 641 ASSERT_TRUE(visitor_.header_.get()); | 643 ASSERT_TRUE(visitor_.header_.get()); |
| 642 EXPECT_EQ(kConnectionId, visitor_.header_->public_header.connection_id); | 644 EXPECT_EQ(kConnectionId, visitor_.header_->public_header.connection_id); |
| 643 EXPECT_FALSE(visitor_.header_->public_header.multipath_flag); | 645 EXPECT_FALSE(visitor_.header_->public_header.multipath_flag); |
| 644 EXPECT_FALSE(visitor_.header_->public_header.reset_flag); | 646 EXPECT_FALSE(visitor_.header_->public_header.reset_flag); |
| 645 EXPECT_FALSE(visitor_.header_->public_header.version_flag); | 647 EXPECT_FALSE(visitor_.header_->public_header.version_flag); |
| 646 EXPECT_EQ(kPacketNumber, visitor_.header_->packet_number); | 648 EXPECT_EQ(kPacketNumber, visitor_.header_->packet_number); |
| 647 | 649 |
| 648 // Now test framing boundaries. | 650 // Now test framing boundaries. |
| 649 for (size_t i = 0; | 651 for (size_t i = 0; |
| 650 i < GetPacketHeaderSize(framer_.version(), PACKET_8BYTE_CONNECTION_ID, | 652 i < GetPacketHeaderSize(framer_.version(), PACKET_8BYTE_CONNECTION_ID, |
| 651 !kIncludeVersion, !kIncludeDiversificationNonce, | 653 !kIncludeVersion, !kIncludeDiversificationNonce, |
| 652 PACKET_6BYTE_PACKET_NUMBER); | 654 PACKET_6BYTE_PACKET_NUMBER); |
| 653 ++i) { | 655 ++i) { |
| 654 string expected_error; | 656 string expected_error; |
| 655 if (i < kConnectionIdOffset) { | 657 if (i < kConnectionIdOffset) { |
| 656 expected_error = "Unable to read public flags."; | 658 expected_error = "Unable to read public flags."; |
| 657 } else if (i < GetPacketNumberOffset(!kIncludeVersion)) { | 659 } else if (i < GetPacketNumberOffset(!kIncludeVersion)) { |
| 658 expected_error = "Unable to read ConnectionId."; | 660 expected_error = "Unable to read ConnectionId."; |
| 659 } else { | 661 } else { |
| 660 expected_error = "Unable to read packet number."; | 662 expected_error = "Unable to read packet number."; |
| 661 } | 663 } |
| 662 CheckProcessingFails(FLAGS_quic_restart_flag_quic_big_endian_connection_id | 664 CheckProcessingFails( |
| 663 ? packet_cid_be | 665 QuicUtils::IsConnectionIdWireFormatBigEndian(framer_.perspective()) |
| 664 : packet, | 666 ? packet_cid_be |
| 665 i, expected_error, QUIC_INVALID_PACKET_HEADER); | 667 : packet, |
| 668 i, expected_error, QUIC_INVALID_PACKET_HEADER); |
| 666 } | 669 } |
| 667 } | 670 } |
| 668 | 671 |
| 669 TEST_P(QuicFramerTest, PacketHeaderWith0ByteConnectionId) { | 672 TEST_P(QuicFramerTest, PacketHeaderWith0ByteConnectionId) { |
| 670 QuicFramerPeer::SetLastSerializedConnectionId(&framer_, kConnectionId); | 673 QuicFramerPeer::SetLastSerializedConnectionId(&framer_, kConnectionId); |
| 671 | 674 |
| 672 // clang-format off | 675 // clang-format off |
| 673 unsigned char packet[] = { | 676 unsigned char packet[] = { |
| 674 // public flags (0 byte connection_id) | 677 // public flags (0 byte connection_id) |
| 675 0x30, | 678 0x30, |
| (...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 728 // connection_id | 731 // connection_id |
| 729 0xFE, 0xDC, 0xBA, 0x98, 0x76, 0x54, 0x32, 0x10, | 732 0xFE, 0xDC, 0xBA, 0x98, 0x76, 0x54, 0x32, 0x10, |
| 730 // version tag | 733 // version tag |
| 731 'Q', '0', GetQuicVersionDigitTens(), GetQuicVersionDigitOnes(), | 734 'Q', '0', GetQuicVersionDigitTens(), GetQuicVersionDigitOnes(), |
| 732 // packet number | 735 // packet number |
| 733 0xBC, 0x9A, 0x78, 0x56, 0x34, 0x12, | 736 0xBC, 0x9A, 0x78, 0x56, 0x34, 0x12, |
| 734 }; | 737 }; |
| 735 // clang-format on | 738 // clang-format on |
| 736 | 739 |
| 737 QuicEncryptedPacket encrypted( | 740 QuicEncryptedPacket encrypted( |
| 738 AsChars(FLAGS_quic_restart_flag_quic_big_endian_connection_id | 741 AsChars( |
| 739 ? packet_cid_be | 742 QuicUtils::IsConnectionIdWireFormatBigEndian(framer_.perspective()) |
| 740 : packet), | 743 ? packet_cid_be |
| 741 FLAGS_quic_restart_flag_quic_big_endian_connection_id | 744 : packet), |
| 745 QuicUtils::IsConnectionIdWireFormatBigEndian(framer_.perspective()) |
| 742 ? arraysize(packet_cid_be) | 746 ? arraysize(packet_cid_be) |
| 743 : arraysize(packet), | 747 : arraysize(packet), |
| 744 false); | 748 false); |
| 745 EXPECT_FALSE(framer_.ProcessPacket(encrypted)); | 749 EXPECT_FALSE(framer_.ProcessPacket(encrypted)); |
| 746 EXPECT_EQ(QUIC_MISSING_PAYLOAD, framer_.error()); | 750 EXPECT_EQ(QUIC_MISSING_PAYLOAD, framer_.error()); |
| 747 ASSERT_TRUE(visitor_.header_.get()); | 751 ASSERT_TRUE(visitor_.header_.get()); |
| 748 EXPECT_EQ(kConnectionId, visitor_.header_->public_header.connection_id); | 752 EXPECT_EQ(kConnectionId, visitor_.header_->public_header.connection_id); |
| 749 EXPECT_FALSE(visitor_.header_->public_header.multipath_flag); | 753 EXPECT_FALSE(visitor_.header_->public_header.multipath_flag); |
| 750 EXPECT_FALSE(visitor_.header_->public_header.reset_flag); | 754 EXPECT_FALSE(visitor_.header_->public_header.reset_flag); |
| 751 EXPECT_TRUE(visitor_.header_->public_header.version_flag); | 755 EXPECT_TRUE(visitor_.header_->public_header.version_flag); |
| 752 EXPECT_EQ(GetParam(), visitor_.header_->public_header.versions[0]); | 756 EXPECT_EQ(GetParam(), visitor_.header_->public_header.versions[0]); |
| 753 EXPECT_EQ(kPacketNumber, visitor_.header_->packet_number); | 757 EXPECT_EQ(kPacketNumber, visitor_.header_->packet_number); |
| 754 | 758 |
| 755 // Now test framing boundaries. | 759 // Now test framing boundaries. |
| 756 for (size_t i = 0; | 760 for (size_t i = 0; |
| 757 i < GetPacketHeaderSize(framer_.version(), PACKET_8BYTE_CONNECTION_ID, | 761 i < GetPacketHeaderSize(framer_.version(), PACKET_8BYTE_CONNECTION_ID, |
| 758 kIncludeVersion, !kIncludeDiversificationNonce, | 762 kIncludeVersion, !kIncludeDiversificationNonce, |
| 759 PACKET_6BYTE_PACKET_NUMBER); | 763 PACKET_6BYTE_PACKET_NUMBER); |
| 760 ++i) { | 764 ++i) { |
| 761 string expected_error; | 765 string expected_error; |
| 762 if (i < kConnectionIdOffset) { | 766 if (i < kConnectionIdOffset) { |
| 763 expected_error = "Unable to read public flags."; | 767 expected_error = "Unable to read public flags."; |
| 764 } else if (i < kVersionOffset) { | 768 } else if (i < kVersionOffset) { |
| 765 expected_error = "Unable to read ConnectionId."; | 769 expected_error = "Unable to read ConnectionId."; |
| 766 } else if (i < GetPacketNumberOffset(kIncludeVersion)) { | 770 } else if (i < GetPacketNumberOffset(kIncludeVersion)) { |
| 767 expected_error = "Unable to read protocol version."; | 771 expected_error = "Unable to read protocol version."; |
| 768 } else { | 772 } else { |
| 769 expected_error = "Unable to read packet number."; | 773 expected_error = "Unable to read packet number."; |
| 770 } | 774 } |
| 771 CheckProcessingFails(FLAGS_quic_restart_flag_quic_big_endian_connection_id | 775 CheckProcessingFails( |
| 772 ? packet_cid_be | 776 QuicUtils::IsConnectionIdWireFormatBigEndian(framer_.perspective()) |
| 773 : packet, | 777 ? packet_cid_be |
| 774 i, expected_error, QUIC_INVALID_PACKET_HEADER); | 778 : packet, |
| 779 i, expected_error, QUIC_INVALID_PACKET_HEADER); |
| 775 } | 780 } |
| 776 } | 781 } |
| 777 | 782 |
| 778 TEST_P(QuicFramerTest, PacketHeaderWith4BytePacketNumber) { | 783 TEST_P(QuicFramerTest, PacketHeaderWith4BytePacketNumber) { |
| 779 QuicFramerPeer::SetLargestPacketNumber(&framer_, kPacketNumber - 2); | 784 QuicFramerPeer::SetLargestPacketNumber(&framer_, kPacketNumber - 2); |
| 780 | 785 |
| 781 // clang-format off | 786 // clang-format off |
| 782 unsigned char packet[] = { | 787 unsigned char packet[] = { |
| 783 // public flags (8 byte connection_id and 4 byte packet number) | 788 // public flags (8 byte connection_id and 4 byte packet number) |
| 784 0x28, | 789 0x28, |
| 785 // connection_id | 790 // connection_id |
| 786 0x10, 0x32, 0x54, 0x76, 0x98, 0xBA, 0xDC, 0xFE, | 791 0x10, 0x32, 0x54, 0x76, 0x98, 0xBA, 0xDC, 0xFE, |
| 787 // packet number | 792 // packet number |
| 788 0xBC, 0x9A, 0x78, 0x56, | 793 0xBC, 0x9A, 0x78, 0x56, |
| 789 }; | 794 }; |
| 790 | 795 |
| 791 unsigned char packet_cid_be[] = { | 796 unsigned char packet_cid_be[] = { |
| 792 // public flags (8 byte connection_id and 4 byte packet number) | 797 // public flags (8 byte connection_id and 4 byte packet number) |
| 793 0x28, | 798 0x28, |
| 794 // connection_id | 799 // connection_id |
| 795 0xFE, 0xDC, 0xBA, 0x98, 0x76, 0x54, 0x32, 0x10, | 800 0xFE, 0xDC, 0xBA, 0x98, 0x76, 0x54, 0x32, 0x10, |
| 796 // packet number | 801 // packet number |
| 797 0xBC, 0x9A, 0x78, 0x56, | 802 0xBC, 0x9A, 0x78, 0x56, |
| 798 }; | 803 }; |
| 799 // clang-format on | 804 // clang-format on |
| 800 | 805 |
| 801 QuicEncryptedPacket encrypted( | 806 QuicEncryptedPacket encrypted( |
| 802 AsChars(FLAGS_quic_restart_flag_quic_big_endian_connection_id | 807 AsChars( |
| 803 ? packet_cid_be | 808 QuicUtils::IsConnectionIdWireFormatBigEndian(framer_.perspective()) |
| 804 : packet), | 809 ? packet_cid_be |
| 805 FLAGS_quic_restart_flag_quic_big_endian_connection_id | 810 : packet), |
| 811 QuicUtils::IsConnectionIdWireFormatBigEndian(framer_.perspective()) |
| 806 ? arraysize(packet_cid_be) | 812 ? arraysize(packet_cid_be) |
| 807 : arraysize(packet), | 813 : arraysize(packet), |
| 808 false); | 814 false); |
| 809 EXPECT_FALSE(framer_.ProcessPacket(encrypted)); | 815 EXPECT_FALSE(framer_.ProcessPacket(encrypted)); |
| 810 EXPECT_EQ(QUIC_MISSING_PAYLOAD, framer_.error()); | 816 EXPECT_EQ(QUIC_MISSING_PAYLOAD, framer_.error()); |
| 811 ASSERT_TRUE(visitor_.header_.get()); | 817 ASSERT_TRUE(visitor_.header_.get()); |
| 812 EXPECT_EQ(kConnectionId, visitor_.header_->public_header.connection_id); | 818 EXPECT_EQ(kConnectionId, visitor_.header_->public_header.connection_id); |
| 813 EXPECT_FALSE(visitor_.header_->public_header.multipath_flag); | 819 EXPECT_FALSE(visitor_.header_->public_header.multipath_flag); |
| 814 EXPECT_FALSE(visitor_.header_->public_header.reset_flag); | 820 EXPECT_FALSE(visitor_.header_->public_header.reset_flag); |
| 815 EXPECT_FALSE(visitor_.header_->public_header.version_flag); | 821 EXPECT_FALSE(visitor_.header_->public_header.version_flag); |
| 816 EXPECT_EQ(kPacketNumber, visitor_.header_->packet_number); | 822 EXPECT_EQ(kPacketNumber, visitor_.header_->packet_number); |
| 817 | 823 |
| 818 // Now test framing boundaries. | 824 // Now test framing boundaries. |
| 819 for (size_t i = 0; | 825 for (size_t i = 0; |
| 820 i < GetPacketHeaderSize(framer_.version(), PACKET_8BYTE_CONNECTION_ID, | 826 i < GetPacketHeaderSize(framer_.version(), PACKET_8BYTE_CONNECTION_ID, |
| 821 !kIncludeVersion, !kIncludeDiversificationNonce, | 827 !kIncludeVersion, !kIncludeDiversificationNonce, |
| 822 PACKET_4BYTE_PACKET_NUMBER); | 828 PACKET_4BYTE_PACKET_NUMBER); |
| 823 ++i) { | 829 ++i) { |
| 824 string expected_error; | 830 string expected_error; |
| 825 if (i < kConnectionIdOffset) { | 831 if (i < kConnectionIdOffset) { |
| 826 expected_error = "Unable to read public flags."; | 832 expected_error = "Unable to read public flags."; |
| 827 } else if (i < GetPacketNumberOffset(!kIncludeVersion)) { | 833 } else if (i < GetPacketNumberOffset(!kIncludeVersion)) { |
| 828 expected_error = "Unable to read ConnectionId."; | 834 expected_error = "Unable to read ConnectionId."; |
| 829 } else { | 835 } else { |
| 830 expected_error = "Unable to read packet number."; | 836 expected_error = "Unable to read packet number."; |
| 831 } | 837 } |
| 832 CheckProcessingFails(FLAGS_quic_restart_flag_quic_big_endian_connection_id | 838 CheckProcessingFails( |
| 833 ? packet_cid_be | 839 QuicUtils::IsConnectionIdWireFormatBigEndian(framer_.perspective()) |
| 834 : packet, | 840 ? packet_cid_be |
| 835 i, expected_error, QUIC_INVALID_PACKET_HEADER); | 841 : packet, |
| 842 i, expected_error, QUIC_INVALID_PACKET_HEADER); |
| 836 } | 843 } |
| 837 } | 844 } |
| 838 | 845 |
| 839 TEST_P(QuicFramerTest, PacketHeaderWith2BytePacketNumber) { | 846 TEST_P(QuicFramerTest, PacketHeaderWith2BytePacketNumber) { |
| 840 QuicFramerPeer::SetLargestPacketNumber(&framer_, kPacketNumber - 2); | 847 QuicFramerPeer::SetLargestPacketNumber(&framer_, kPacketNumber - 2); |
| 841 | 848 |
| 842 // clang-format off | 849 // clang-format off |
| 843 unsigned char packet[] = { | 850 unsigned char packet[] = { |
| 844 // public flags (8 byte connection_id and 2 byte packet number) | 851 // public flags (8 byte connection_id and 2 byte packet number) |
| 845 0x18, | 852 0x18, |
| 846 // connection_id | 853 // connection_id |
| 847 0x10, 0x32, 0x54, 0x76, 0x98, 0xBA, 0xDC, 0xFE, | 854 0x10, 0x32, 0x54, 0x76, 0x98, 0xBA, 0xDC, 0xFE, |
| 848 // packet number | 855 // packet number |
| 849 0xBC, 0x9A, | 856 0xBC, 0x9A, |
| 850 }; | 857 }; |
| 851 | 858 |
| 852 unsigned char packet_cid_be[] = { | 859 unsigned char packet_cid_be[] = { |
| 853 // public flags (8 byte connection_id and 2 byte packet number) | 860 // public flags (8 byte connection_id and 2 byte packet number) |
| 854 0x18, | 861 0x18, |
| 855 // connection_id | 862 // connection_id |
| 856 0xFE, 0xDC, 0xBA, 0x98, 0x76, 0x54, 0x32, 0x10, | 863 0xFE, 0xDC, 0xBA, 0x98, 0x76, 0x54, 0x32, 0x10, |
| 857 // packet number | 864 // packet number |
| 858 0xBC, 0x9A, | 865 0xBC, 0x9A, |
| 859 }; | 866 }; |
| 860 // clang-format on | 867 // clang-format on |
| 861 | 868 |
| 862 QuicEncryptedPacket encrypted( | 869 QuicEncryptedPacket encrypted( |
| 863 AsChars(FLAGS_quic_restart_flag_quic_big_endian_connection_id | 870 AsChars( |
| 864 ? packet_cid_be | 871 QuicUtils::IsConnectionIdWireFormatBigEndian(framer_.perspective()) |
| 865 : packet), | 872 ? packet_cid_be |
| 866 FLAGS_quic_restart_flag_quic_big_endian_connection_id | 873 : packet), |
| 874 QuicUtils::IsConnectionIdWireFormatBigEndian(framer_.perspective()) |
| 867 ? arraysize(packet_cid_be) | 875 ? arraysize(packet_cid_be) |
| 868 : arraysize(packet), | 876 : arraysize(packet), |
| 869 false); | 877 false); |
| 870 EXPECT_FALSE(framer_.ProcessPacket(encrypted)); | 878 EXPECT_FALSE(framer_.ProcessPacket(encrypted)); |
| 871 EXPECT_EQ(QUIC_MISSING_PAYLOAD, framer_.error()); | 879 EXPECT_EQ(QUIC_MISSING_PAYLOAD, framer_.error()); |
| 872 ASSERT_TRUE(visitor_.header_.get()); | 880 ASSERT_TRUE(visitor_.header_.get()); |
| 873 EXPECT_EQ(kConnectionId, visitor_.header_->public_header.connection_id); | 881 EXPECT_EQ(kConnectionId, visitor_.header_->public_header.connection_id); |
| 874 EXPECT_FALSE(visitor_.header_->public_header.multipath_flag); | 882 EXPECT_FALSE(visitor_.header_->public_header.multipath_flag); |
| 875 EXPECT_FALSE(visitor_.header_->public_header.reset_flag); | 883 EXPECT_FALSE(visitor_.header_->public_header.reset_flag); |
| 876 EXPECT_FALSE(visitor_.header_->public_header.version_flag); | 884 EXPECT_FALSE(visitor_.header_->public_header.version_flag); |
| 877 EXPECT_EQ(PACKET_2BYTE_PACKET_NUMBER, | 885 EXPECT_EQ(PACKET_2BYTE_PACKET_NUMBER, |
| 878 visitor_.header_->public_header.packet_number_length); | 886 visitor_.header_->public_header.packet_number_length); |
| 879 EXPECT_EQ(kPacketNumber, visitor_.header_->packet_number); | 887 EXPECT_EQ(kPacketNumber, visitor_.header_->packet_number); |
| 880 | 888 |
| 881 // Now test framing boundaries. | 889 // Now test framing boundaries. |
| 882 for (size_t i = 0; | 890 for (size_t i = 0; |
| 883 i < GetPacketHeaderSize(framer_.version(), PACKET_8BYTE_CONNECTION_ID, | 891 i < GetPacketHeaderSize(framer_.version(), PACKET_8BYTE_CONNECTION_ID, |
| 884 !kIncludeVersion, !kIncludeDiversificationNonce, | 892 !kIncludeVersion, !kIncludeDiversificationNonce, |
| 885 PACKET_2BYTE_PACKET_NUMBER); | 893 PACKET_2BYTE_PACKET_NUMBER); |
| 886 ++i) { | 894 ++i) { |
| 887 string expected_error; | 895 string expected_error; |
| 888 if (i < kConnectionIdOffset) { | 896 if (i < kConnectionIdOffset) { |
| 889 expected_error = "Unable to read public flags."; | 897 expected_error = "Unable to read public flags."; |
| 890 } else if (i < GetPacketNumberOffset(!kIncludeVersion)) { | 898 } else if (i < GetPacketNumberOffset(!kIncludeVersion)) { |
| 891 expected_error = "Unable to read ConnectionId."; | 899 expected_error = "Unable to read ConnectionId."; |
| 892 } else { | 900 } else { |
| 893 expected_error = "Unable to read packet number."; | 901 expected_error = "Unable to read packet number."; |
| 894 } | 902 } |
| 895 CheckProcessingFails(FLAGS_quic_restart_flag_quic_big_endian_connection_id | 903 CheckProcessingFails( |
| 896 ? packet_cid_be | 904 QuicUtils::IsConnectionIdWireFormatBigEndian(framer_.perspective()) |
| 897 : packet, | 905 ? packet_cid_be |
| 898 i, expected_error, QUIC_INVALID_PACKET_HEADER); | 906 : packet, |
| 907 i, expected_error, QUIC_INVALID_PACKET_HEADER); |
| 899 } | 908 } |
| 900 } | 909 } |
| 901 | 910 |
| 902 TEST_P(QuicFramerTest, PacketHeaderWith1BytePacketNumber) { | 911 TEST_P(QuicFramerTest, PacketHeaderWith1BytePacketNumber) { |
| 903 QuicFramerPeer::SetLargestPacketNumber(&framer_, kPacketNumber - 2); | 912 QuicFramerPeer::SetLargestPacketNumber(&framer_, kPacketNumber - 2); |
| 904 | 913 |
| 905 // clang-format off | 914 // clang-format off |
| 906 unsigned char packet[] = { | 915 unsigned char packet[] = { |
| 907 // public flags (8 byte connection_id and 1 byte packet number) | 916 // public flags (8 byte connection_id and 1 byte packet number) |
| 908 0x08, | 917 0x08, |
| 909 // connection_id | 918 // connection_id |
| 910 0x10, 0x32, 0x54, 0x76, 0x98, 0xBA, 0xDC, 0xFE, | 919 0x10, 0x32, 0x54, 0x76, 0x98, 0xBA, 0xDC, 0xFE, |
| 911 // packet number | 920 // packet number |
| 912 0xBC, | 921 0xBC, |
| 913 }; | 922 }; |
| 914 | 923 |
| 915 unsigned char packet_cid_be[] = { | 924 unsigned char packet_cid_be[] = { |
| 916 // public flags (8 byte connection_id and 1 byte packet number) | 925 // public flags (8 byte connection_id and 1 byte packet number) |
| 917 0x08, | 926 0x08, |
| 918 // connection_id | 927 // connection_id |
| 919 0xFE, 0xDC, 0xBA, 0x98, 0x76, 0x54, 0x32, 0x10, | 928 0xFE, 0xDC, 0xBA, 0x98, 0x76, 0x54, 0x32, 0x10, |
| 920 // packet number | 929 // packet number |
| 921 0xBC, | 930 0xBC, |
| 922 }; | 931 }; |
| 923 // clang-format on | 932 // clang-format on |
| 924 | 933 |
| 925 QuicEncryptedPacket encrypted( | 934 QuicEncryptedPacket encrypted( |
| 926 AsChars(FLAGS_quic_restart_flag_quic_big_endian_connection_id | 935 AsChars( |
| 927 ? packet_cid_be | 936 QuicUtils::IsConnectionIdWireFormatBigEndian(framer_.perspective()) |
| 928 : packet), | 937 ? packet_cid_be |
| 929 FLAGS_quic_restart_flag_quic_big_endian_connection_id | 938 : packet), |
| 939 QuicUtils::IsConnectionIdWireFormatBigEndian(framer_.perspective()) |
| 930 ? arraysize(packet_cid_be) | 940 ? arraysize(packet_cid_be) |
| 931 : arraysize(packet), | 941 : arraysize(packet), |
| 932 false); | 942 false); |
| 933 EXPECT_FALSE(framer_.ProcessPacket(encrypted)); | 943 EXPECT_FALSE(framer_.ProcessPacket(encrypted)); |
| 934 EXPECT_EQ(QUIC_MISSING_PAYLOAD, framer_.error()); | 944 EXPECT_EQ(QUIC_MISSING_PAYLOAD, framer_.error()); |
| 935 ASSERT_TRUE(visitor_.header_.get()); | 945 ASSERT_TRUE(visitor_.header_.get()); |
| 936 EXPECT_EQ(kConnectionId, visitor_.header_->public_header.connection_id); | 946 EXPECT_EQ(kConnectionId, visitor_.header_->public_header.connection_id); |
| 937 EXPECT_FALSE(visitor_.header_->public_header.multipath_flag); | 947 EXPECT_FALSE(visitor_.header_->public_header.multipath_flag); |
| 938 EXPECT_FALSE(visitor_.header_->public_header.reset_flag); | 948 EXPECT_FALSE(visitor_.header_->public_header.reset_flag); |
| 939 EXPECT_FALSE(visitor_.header_->public_header.version_flag); | 949 EXPECT_FALSE(visitor_.header_->public_header.version_flag); |
| 940 EXPECT_EQ(PACKET_1BYTE_PACKET_NUMBER, | 950 EXPECT_EQ(PACKET_1BYTE_PACKET_NUMBER, |
| 941 visitor_.header_->public_header.packet_number_length); | 951 visitor_.header_->public_header.packet_number_length); |
| 942 EXPECT_EQ(kPacketNumber, visitor_.header_->packet_number); | 952 EXPECT_EQ(kPacketNumber, visitor_.header_->packet_number); |
| 943 | 953 |
| 944 // Now test framing boundaries. | 954 // Now test framing boundaries. |
| 945 for (size_t i = 0; | 955 for (size_t i = 0; |
| 946 i < GetPacketHeaderSize(framer_.version(), PACKET_8BYTE_CONNECTION_ID, | 956 i < GetPacketHeaderSize(framer_.version(), PACKET_8BYTE_CONNECTION_ID, |
| 947 !kIncludeVersion, !kIncludeDiversificationNonce, | 957 !kIncludeVersion, !kIncludeDiversificationNonce, |
| 948 PACKET_1BYTE_PACKET_NUMBER); | 958 PACKET_1BYTE_PACKET_NUMBER); |
| 949 ++i) { | 959 ++i) { |
| 950 string expected_error; | 960 string expected_error; |
| 951 if (i < kConnectionIdOffset) { | 961 if (i < kConnectionIdOffset) { |
| 952 expected_error = "Unable to read public flags."; | 962 expected_error = "Unable to read public flags."; |
| 953 } else if (i < GetPacketNumberOffset(!kIncludeVersion)) { | 963 } else if (i < GetPacketNumberOffset(!kIncludeVersion)) { |
| 954 expected_error = "Unable to read ConnectionId."; | 964 expected_error = "Unable to read ConnectionId."; |
| 955 } else { | 965 } else { |
| 956 expected_error = "Unable to read packet number."; | 966 expected_error = "Unable to read packet number."; |
| 957 } | 967 } |
| 958 CheckProcessingFails(FLAGS_quic_restart_flag_quic_big_endian_connection_id | 968 CheckProcessingFails( |
| 959 ? packet_cid_be | 969 QuicUtils::IsConnectionIdWireFormatBigEndian(framer_.perspective()) |
| 960 : packet, | 970 ? packet_cid_be |
| 961 i, expected_error, QUIC_INVALID_PACKET_HEADER); | 971 : packet, |
| 972 i, expected_error, QUIC_INVALID_PACKET_HEADER); |
| 962 } | 973 } |
| 963 } | 974 } |
| 964 | 975 |
| 965 TEST_P(QuicFramerTest, PacketNumberDecreasesThenIncreases) { | 976 TEST_P(QuicFramerTest, PacketNumberDecreasesThenIncreases) { |
| 966 // Test the case when a packet is received from the past and future packet | 977 // Test the case when a packet is received from the past and future packet |
| 967 // numbers are still calculated relative to the largest received packet. | 978 // numbers are still calculated relative to the largest received packet. |
| 968 QuicPacketHeader header; | 979 QuicPacketHeader header; |
| 969 header.public_header.connection_id = kConnectionId; | 980 header.public_header.connection_id = kConnectionId; |
| 970 header.public_header.reset_flag = false; | 981 header.public_header.reset_flag = false; |
| 971 header.public_header.version_flag = false; | 982 header.public_header.version_flag = false; |
| (...skipping 83 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1055 // packet number | 1066 // packet number |
| 1056 0xBC, 0x9A, 0x78, 0x56, 0x34, 0x12, | 1067 0xBC, 0x9A, 0x78, 0x56, 0x34, 0x12, |
| 1057 | 1068 |
| 1058 // frame type (padding) | 1069 // frame type (padding) |
| 1059 0x00, | 1070 0x00, |
| 1060 0x00, 0x00, 0x00, 0x00 | 1071 0x00, 0x00, 0x00, 0x00 |
| 1061 }; | 1072 }; |
| 1062 // clang-format on | 1073 // clang-format on |
| 1063 | 1074 |
| 1064 QuicEncryptedPacket encrypted( | 1075 QuicEncryptedPacket encrypted( |
| 1065 AsChars(FLAGS_quic_restart_flag_quic_big_endian_connection_id | 1076 AsChars( |
| 1066 ? packet_cid_be | 1077 QuicUtils::IsConnectionIdWireFormatBigEndian(framer_.perspective()) |
| 1067 : packet), | 1078 ? packet_cid_be |
| 1068 FLAGS_quic_restart_flag_quic_big_endian_connection_id | 1079 : packet), |
| 1080 QuicUtils::IsConnectionIdWireFormatBigEndian(framer_.perspective()) |
| 1069 ? arraysize(packet_cid_be) | 1081 ? arraysize(packet_cid_be) |
| 1070 : arraysize(packet), | 1082 : arraysize(packet), |
| 1071 false); | 1083 false); |
| 1072 QuicFramerPeer::SetPerspective(&framer_, Perspective::IS_CLIENT); | 1084 QuicFramerPeer::SetPerspective(&framer_, Perspective::IS_CLIENT); |
| 1073 EXPECT_TRUE(framer_.ProcessPacket(encrypted)); | 1085 EXPECT_TRUE(framer_.ProcessPacket(encrypted)); |
| 1074 ASSERT_TRUE(visitor_.public_header_->nonce != nullptr); | 1086 ASSERT_TRUE(visitor_.public_header_->nonce != nullptr); |
| 1075 for (char i = 0; i < 32; ++i) { | 1087 for (char i = 0; i < 32; ++i) { |
| 1076 EXPECT_EQ(i, (*visitor_.public_header_->nonce)[static_cast<size_t>(i)]); | 1088 EXPECT_EQ(i, (*visitor_.public_header_->nonce)[static_cast<size_t>(i)]); |
| 1077 } | 1089 } |
| 1078 EXPECT_EQ(1u, visitor_.padding_frames_.size()); | 1090 EXPECT_EQ(1u, visitor_.padding_frames_.size()); |
| (...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1110 // packet number | 1122 // packet number |
| 1111 0xBC, 0x9A, 0x78, 0x56, | 1123 0xBC, 0x9A, 0x78, 0x56, |
| 1112 0x34, 0x12, | 1124 0x34, 0x12, |
| 1113 | 1125 |
| 1114 // frame type (padding frame) | 1126 // frame type (padding frame) |
| 1115 0x00, | 1127 0x00, |
| 1116 0x00, 0x00, 0x00, 0x00 | 1128 0x00, 0x00, 0x00, 0x00 |
| 1117 }; | 1129 }; |
| 1118 // clang-format on | 1130 // clang-format on |
| 1119 QuicEncryptedPacket encrypted( | 1131 QuicEncryptedPacket encrypted( |
| 1120 AsChars(FLAGS_quic_restart_flag_quic_big_endian_connection_id | 1132 AsChars( |
| 1121 ? packet_cid_be | 1133 QuicUtils::IsConnectionIdWireFormatBigEndian(framer_.perspective()) |
| 1122 : packet), | 1134 ? packet_cid_be |
| 1123 FLAGS_quic_restart_flag_quic_big_endian_connection_id | 1135 : packet), |
| 1136 QuicUtils::IsConnectionIdWireFormatBigEndian(framer_.perspective()) |
| 1124 ? arraysize(packet_cid_be) | 1137 ? arraysize(packet_cid_be) |
| 1125 : arraysize(packet), | 1138 : arraysize(packet), |
| 1126 false); | 1139 false); |
| 1127 EXPECT_TRUE(framer_.ProcessPacket(encrypted)); | 1140 EXPECT_TRUE(framer_.ProcessPacket(encrypted)); |
| 1128 EXPECT_EQ(QUIC_NO_ERROR, framer_.error()); | 1141 EXPECT_EQ(QUIC_NO_ERROR, framer_.error()); |
| 1129 ASSERT_TRUE(visitor_.header_.get()); | 1142 ASSERT_TRUE(visitor_.header_.get()); |
| 1130 EXPECT_EQ(0, visitor_.frame_count_); | 1143 EXPECT_EQ(0, visitor_.frame_count_); |
| 1131 EXPECT_EQ(1, visitor_.version_mismatch_); | 1144 EXPECT_EQ(1, visitor_.version_mismatch_); |
| 1132 EXPECT_EQ(1u, visitor_.padding_frames_.size()); | 1145 EXPECT_EQ(1u, visitor_.padding_frames_.size()); |
| 1133 EXPECT_EQ(5, visitor_.padding_frames_[0]->num_padding_bytes); | 1146 EXPECT_EQ(5, visitor_.padding_frames_[0]->num_padding_bytes); |
| (...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1189 'o', ' ', 'w', 'o', | 1202 'o', ' ', 'w', 'o', |
| 1190 'r', 'l', 'd', '!', | 1203 'r', 'l', 'd', '!', |
| 1191 }; | 1204 }; |
| 1192 // clang-format on | 1205 // clang-format on |
| 1193 | 1206 |
| 1194 if (framer_.version() > QUIC_VERSION_37) { | 1207 if (framer_.version() > QUIC_VERSION_37) { |
| 1195 return; | 1208 return; |
| 1196 } | 1209 } |
| 1197 | 1210 |
| 1198 QuicEncryptedPacket encrypted( | 1211 QuicEncryptedPacket encrypted( |
| 1199 AsChars(FLAGS_quic_restart_flag_quic_big_endian_connection_id | 1212 AsChars( |
| 1200 ? packet_cid_be | 1213 QuicUtils::IsConnectionIdWireFormatBigEndian(framer_.perspective()) |
| 1201 : packet), | 1214 ? packet_cid_be |
| 1202 FLAGS_quic_restart_flag_quic_big_endian_connection_id | 1215 : packet), |
| 1216 QuicUtils::IsConnectionIdWireFormatBigEndian(framer_.perspective()) |
| 1203 ? arraysize(packet_cid_be) | 1217 ? arraysize(packet_cid_be) |
| 1204 : arraysize(packet), | 1218 : arraysize(packet), |
| 1205 false); | 1219 false); |
| 1206 EXPECT_TRUE(framer_.ProcessPacket(encrypted)); | 1220 EXPECT_TRUE(framer_.ProcessPacket(encrypted)); |
| 1207 EXPECT_EQ(QUIC_NO_ERROR, framer_.error()); | 1221 EXPECT_EQ(QUIC_NO_ERROR, framer_.error()); |
| 1208 ASSERT_TRUE(visitor_.header_.get()); | 1222 ASSERT_TRUE(visitor_.header_.get()); |
| 1209 EXPECT_TRUE(CheckDecryption(encrypted, !kIncludeVersion, | 1223 EXPECT_TRUE(CheckDecryption(encrypted, !kIncludeVersion, |
| 1210 !kIncludeDiversificationNonce)); | 1224 !kIncludeDiversificationNonce)); |
| 1211 | 1225 |
| 1212 ASSERT_EQ(0u, visitor_.stream_frames_.size()); | 1226 ASSERT_EQ(0u, visitor_.stream_frames_.size()); |
| 1213 EXPECT_EQ(0u, visitor_.ack_frames_.size()); | 1227 EXPECT_EQ(0u, visitor_.ack_frames_.size()); |
| 1214 EXPECT_EQ(1u, visitor_.padding_frames_.size()); | 1228 EXPECT_EQ(1u, visitor_.padding_frames_.size()); |
| 1215 EXPECT_EQ(28, visitor_.padding_frames_[0]->num_padding_bytes); | 1229 EXPECT_EQ(28, visitor_.padding_frames_[0]->num_padding_bytes); |
| 1216 // A packet with no frames is not acceptable. | 1230 // A packet with no frames is not acceptable. |
| 1217 CheckProcessingFails( | 1231 CheckProcessingFails( |
| 1218 FLAGS_quic_restart_flag_quic_big_endian_connection_id ? packet_cid_be | 1232 QuicUtils::IsConnectionIdWireFormatBigEndian(framer_.perspective()) |
| 1219 : packet, | 1233 ? packet_cid_be |
| 1234 : packet, |
| 1220 GetPacketHeaderSize(framer_.version(), PACKET_8BYTE_CONNECTION_ID, | 1235 GetPacketHeaderSize(framer_.version(), PACKET_8BYTE_CONNECTION_ID, |
| 1221 !kIncludeVersion, !kIncludeDiversificationNonce, | 1236 !kIncludeVersion, !kIncludeDiversificationNonce, |
| 1222 PACKET_6BYTE_PACKET_NUMBER), | 1237 PACKET_6BYTE_PACKET_NUMBER), |
| 1223 "Packet has no frames.", QUIC_MISSING_PAYLOAD); | 1238 "Packet has no frames.", QUIC_MISSING_PAYLOAD); |
| 1224 } | 1239 } |
| 1225 | 1240 |
| 1226 TEST_P(QuicFramerTest, NewPaddingFrame) { | 1241 TEST_P(QuicFramerTest, NewPaddingFrame) { |
| 1227 // clang-format off | 1242 // clang-format off |
| 1228 unsigned char packet[] = { | 1243 unsigned char packet[] = { |
| 1229 // public flags (8 byte connection_id) | 1244 // public flags (8 byte connection_id) |
| (...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1281 // paddings | 1296 // paddings |
| 1282 0x00, 0x00, | 1297 0x00, 0x00, |
| 1283 }; | 1298 }; |
| 1284 // clang-format on | 1299 // clang-format on |
| 1285 | 1300 |
| 1286 if (framer_.version() <= QUIC_VERSION_37) { | 1301 if (framer_.version() <= QUIC_VERSION_37) { |
| 1287 return; | 1302 return; |
| 1288 } | 1303 } |
| 1289 | 1304 |
| 1290 QuicEncryptedPacket encrypted( | 1305 QuicEncryptedPacket encrypted( |
| 1291 AsChars(FLAGS_quic_restart_flag_quic_big_endian_connection_id | 1306 AsChars( |
| 1292 ? packet_cid_be | 1307 QuicUtils::IsConnectionIdWireFormatBigEndian(framer_.perspective()) |
| 1293 : packet), | 1308 ? packet_cid_be |
| 1294 FLAGS_quic_restart_flag_quic_big_endian_connection_id | 1309 : packet), |
| 1310 QuicUtils::IsConnectionIdWireFormatBigEndian(framer_.perspective()) |
| 1295 ? arraysize(packet_cid_be) | 1311 ? arraysize(packet_cid_be) |
| 1296 : arraysize(packet), | 1312 : arraysize(packet), |
| 1297 false); | 1313 false); |
| 1298 EXPECT_TRUE(framer_.ProcessPacket(encrypted)); | 1314 EXPECT_TRUE(framer_.ProcessPacket(encrypted)); |
| 1299 EXPECT_EQ(QUIC_NO_ERROR, framer_.error()); | 1315 EXPECT_EQ(QUIC_NO_ERROR, framer_.error()); |
| 1300 ASSERT_TRUE(visitor_.header_.get()); | 1316 ASSERT_TRUE(visitor_.header_.get()); |
| 1301 EXPECT_TRUE(CheckDecryption(encrypted, !kIncludeVersion, | 1317 EXPECT_TRUE(CheckDecryption(encrypted, !kIncludeVersion, |
| 1302 !kIncludeDiversificationNonce)); | 1318 !kIncludeDiversificationNonce)); |
| 1303 | 1319 |
| 1304 ASSERT_EQ(1u, visitor_.stream_frames_.size()); | 1320 ASSERT_EQ(1u, visitor_.stream_frames_.size()); |
| (...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1358 // data length | 1374 // data length |
| 1359 0x0c, 0x00, | 1375 0x0c, 0x00, |
| 1360 // data | 1376 // data |
| 1361 'h', 'e', 'l', 'l', | 1377 'h', 'e', 'l', 'l', |
| 1362 'o', ' ', 'w', 'o', | 1378 'o', ' ', 'w', 'o', |
| 1363 'r', 'l', 'd', '!', | 1379 'r', 'l', 'd', '!', |
| 1364 }; | 1380 }; |
| 1365 // clang-format on | 1381 // clang-format on |
| 1366 | 1382 |
| 1367 QuicEncryptedPacket encrypted( | 1383 QuicEncryptedPacket encrypted( |
| 1368 AsChars(FLAGS_quic_restart_flag_quic_big_endian_connection_id | 1384 AsChars( |
| 1369 ? packet_cid_be | 1385 QuicUtils::IsConnectionIdWireFormatBigEndian(framer_.perspective()) |
| 1370 : packet), | 1386 ? packet_cid_be |
| 1371 FLAGS_quic_restart_flag_quic_big_endian_connection_id | 1387 : packet), |
| 1388 QuicUtils::IsConnectionIdWireFormatBigEndian(framer_.perspective()) |
| 1372 ? arraysize(packet_cid_be) | 1389 ? arraysize(packet_cid_be) |
| 1373 : arraysize(packet), | 1390 : arraysize(packet), |
| 1374 false); | 1391 false); |
| 1375 EXPECT_TRUE(framer_.ProcessPacket(encrypted)); | 1392 EXPECT_TRUE(framer_.ProcessPacket(encrypted)); |
| 1376 | 1393 |
| 1377 EXPECT_EQ(QUIC_NO_ERROR, framer_.error()); | 1394 EXPECT_EQ(QUIC_NO_ERROR, framer_.error()); |
| 1378 ASSERT_TRUE(visitor_.header_.get()); | 1395 ASSERT_TRUE(visitor_.header_.get()); |
| 1379 EXPECT_TRUE(CheckDecryption(encrypted, !kIncludeVersion, | 1396 EXPECT_TRUE(CheckDecryption(encrypted, !kIncludeVersion, |
| 1380 !kIncludeDiversificationNonce)); | 1397 !kIncludeDiversificationNonce)); |
| 1381 | 1398 |
| 1382 ASSERT_EQ(1u, visitor_.stream_frames_.size()); | 1399 ASSERT_EQ(1u, visitor_.stream_frames_.size()); |
| 1383 EXPECT_EQ(0u, visitor_.ack_frames_.size()); | 1400 EXPECT_EQ(0u, visitor_.ack_frames_.size()); |
| 1384 EXPECT_EQ(kStreamId, visitor_.stream_frames_[0]->stream_id); | 1401 EXPECT_EQ(kStreamId, visitor_.stream_frames_[0]->stream_id); |
| 1385 EXPECT_TRUE(visitor_.stream_frames_[0]->fin); | 1402 EXPECT_TRUE(visitor_.stream_frames_[0]->fin); |
| 1386 EXPECT_EQ(kStreamOffset, visitor_.stream_frames_[0]->offset); | 1403 EXPECT_EQ(kStreamOffset, visitor_.stream_frames_[0]->offset); |
| 1387 CheckStreamFrameData("hello world!", visitor_.stream_frames_[0].get()); | 1404 CheckStreamFrameData("hello world!", visitor_.stream_frames_[0].get()); |
| 1388 | 1405 |
| 1389 // Now test framing boundaries. | 1406 // Now test framing boundaries. |
| 1390 CheckStreamFrameBoundaries( | 1407 CheckStreamFrameBoundaries( |
| 1391 FLAGS_quic_restart_flag_quic_big_endian_connection_id ? packet_cid_be | 1408 QuicUtils::IsConnectionIdWireFormatBigEndian(framer_.perspective()) |
| 1392 : packet, | 1409 ? packet_cid_be |
| 1410 : packet, |
| 1393 kQuicMaxStreamIdSize, !kIncludeVersion); | 1411 kQuicMaxStreamIdSize, !kIncludeVersion); |
| 1394 } | 1412 } |
| 1395 | 1413 |
| 1396 TEST_P(QuicFramerTest, MissingDiversificationNonce) { | 1414 TEST_P(QuicFramerTest, MissingDiversificationNonce) { |
| 1397 QuicFramerPeer::SetPerspective(&framer_, Perspective::IS_CLIENT); | 1415 QuicFramerPeer::SetPerspective(&framer_, Perspective::IS_CLIENT); |
| 1398 framer_.SetDecrypter(ENCRYPTION_NONE, | 1416 framer_.SetDecrypter(ENCRYPTION_NONE, |
| 1399 new NullDecrypter(Perspective::IS_CLIENT)); | 1417 new NullDecrypter(Perspective::IS_CLIENT)); |
| 1400 decrypter_ = new test::TestDecrypter(); | 1418 decrypter_ = new test::TestDecrypter(); |
| 1401 framer_.SetAlternativeDecrypter(ENCRYPTION_INITIAL, decrypter_, false); | 1419 framer_.SetAlternativeDecrypter(ENCRYPTION_INITIAL, decrypter_, false); |
| 1402 | 1420 |
| (...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1445 // data length | 1463 // data length |
| 1446 0x0c, 0x00, | 1464 0x0c, 0x00, |
| 1447 // data | 1465 // data |
| 1448 'h', 'e', 'l', 'l', | 1466 'h', 'e', 'l', 'l', |
| 1449 'o', ' ', 'w', 'o', | 1467 'o', ' ', 'w', 'o', |
| 1450 'r', 'l', 'd', '!', | 1468 'r', 'l', 'd', '!', |
| 1451 }; | 1469 }; |
| 1452 // clang-format on | 1470 // clang-format on |
| 1453 | 1471 |
| 1454 QuicEncryptedPacket encrypted( | 1472 QuicEncryptedPacket encrypted( |
| 1455 AsChars(FLAGS_quic_restart_flag_quic_big_endian_connection_id | 1473 AsChars( |
| 1456 ? packet_cid_be | 1474 QuicUtils::IsConnectionIdWireFormatBigEndian(framer_.perspective()) |
| 1457 : packet), | 1475 ? packet_cid_be |
| 1458 FLAGS_quic_restart_flag_quic_big_endian_connection_id | 1476 : packet), |
| 1477 QuicUtils::IsConnectionIdWireFormatBigEndian(framer_.perspective()) |
| 1459 ? arraysize(packet_cid_be) | 1478 ? arraysize(packet_cid_be) |
| 1460 : arraysize(packet), | 1479 : arraysize(packet), |
| 1461 false); | 1480 false); |
| 1462 EXPECT_FALSE(framer_.ProcessPacket(encrypted)); | 1481 EXPECT_FALSE(framer_.ProcessPacket(encrypted)); |
| 1463 EXPECT_EQ(QUIC_DECRYPTION_FAILURE, framer_.error()); | 1482 EXPECT_EQ(QUIC_DECRYPTION_FAILURE, framer_.error()); |
| 1464 } | 1483 } |
| 1465 | 1484 |
| 1466 TEST_P(QuicFramerTest, StreamFrame3ByteStreamId) { | 1485 TEST_P(QuicFramerTest, StreamFrame3ByteStreamId) { |
| 1467 // clang-format off | 1486 // clang-format off |
| 1468 unsigned char packet[] = { | 1487 unsigned char packet[] = { |
| (...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1509 // data length | 1528 // data length |
| 1510 0x0c, 0x00, | 1529 0x0c, 0x00, |
| 1511 // data | 1530 // data |
| 1512 'h', 'e', 'l', 'l', | 1531 'h', 'e', 'l', 'l', |
| 1513 'o', ' ', 'w', 'o', | 1532 'o', ' ', 'w', 'o', |
| 1514 'r', 'l', 'd', '!', | 1533 'r', 'l', 'd', '!', |
| 1515 }; | 1534 }; |
| 1516 // clang-format on | 1535 // clang-format on |
| 1517 | 1536 |
| 1518 QuicEncryptedPacket encrypted( | 1537 QuicEncryptedPacket encrypted( |
| 1519 AsChars(FLAGS_quic_restart_flag_quic_big_endian_connection_id | 1538 AsChars( |
| 1520 ? packet_cid_be | 1539 QuicUtils::IsConnectionIdWireFormatBigEndian(framer_.perspective()) |
| 1521 : packet), | 1540 ? packet_cid_be |
| 1522 FLAGS_quic_restart_flag_quic_big_endian_connection_id | 1541 : packet), |
| 1542 QuicUtils::IsConnectionIdWireFormatBigEndian(framer_.perspective()) |
| 1523 ? arraysize(packet_cid_be) | 1543 ? arraysize(packet_cid_be) |
| 1524 : arraysize(packet), | 1544 : arraysize(packet), |
| 1525 false); | 1545 false); |
| 1526 EXPECT_TRUE(framer_.ProcessPacket(encrypted)); | 1546 EXPECT_TRUE(framer_.ProcessPacket(encrypted)); |
| 1527 | 1547 |
| 1528 EXPECT_EQ(QUIC_NO_ERROR, framer_.error()); | 1548 EXPECT_EQ(QUIC_NO_ERROR, framer_.error()); |
| 1529 ASSERT_TRUE(visitor_.header_.get()); | 1549 ASSERT_TRUE(visitor_.header_.get()); |
| 1530 EXPECT_TRUE(CheckDecryption(encrypted, !kIncludeVersion, | 1550 EXPECT_TRUE(CheckDecryption(encrypted, !kIncludeVersion, |
| 1531 !kIncludeDiversificationNonce)); | 1551 !kIncludeDiversificationNonce)); |
| 1532 | 1552 |
| 1533 ASSERT_EQ(1u, visitor_.stream_frames_.size()); | 1553 ASSERT_EQ(1u, visitor_.stream_frames_.size()); |
| 1534 EXPECT_EQ(0u, visitor_.ack_frames_.size()); | 1554 EXPECT_EQ(0u, visitor_.ack_frames_.size()); |
| 1535 // Stream ID should be the last 3 bytes of kStreamId. | 1555 // Stream ID should be the last 3 bytes of kStreamId. |
| 1536 EXPECT_EQ(0x00FFFFFF & kStreamId, visitor_.stream_frames_[0]->stream_id); | 1556 EXPECT_EQ(0x00FFFFFF & kStreamId, visitor_.stream_frames_[0]->stream_id); |
| 1537 EXPECT_TRUE(visitor_.stream_frames_[0]->fin); | 1557 EXPECT_TRUE(visitor_.stream_frames_[0]->fin); |
| 1538 EXPECT_EQ(kStreamOffset, visitor_.stream_frames_[0]->offset); | 1558 EXPECT_EQ(kStreamOffset, visitor_.stream_frames_[0]->offset); |
| 1539 CheckStreamFrameData("hello world!", visitor_.stream_frames_[0].get()); | 1559 CheckStreamFrameData("hello world!", visitor_.stream_frames_[0].get()); |
| 1540 | 1560 |
| 1541 // Now test framing boundaries. | 1561 // Now test framing boundaries. |
| 1542 const size_t stream_id_size = 3; | 1562 const size_t stream_id_size = 3; |
| 1543 CheckStreamFrameBoundaries( | 1563 CheckStreamFrameBoundaries( |
| 1544 FLAGS_quic_restart_flag_quic_big_endian_connection_id ? packet_cid_be | 1564 QuicUtils::IsConnectionIdWireFormatBigEndian(framer_.perspective()) |
| 1545 : packet, | 1565 ? packet_cid_be |
| 1566 : packet, |
| 1546 stream_id_size, !kIncludeVersion); | 1567 stream_id_size, !kIncludeVersion); |
| 1547 } | 1568 } |
| 1548 | 1569 |
| 1549 TEST_P(QuicFramerTest, StreamFrame2ByteStreamId) { | 1570 TEST_P(QuicFramerTest, StreamFrame2ByteStreamId) { |
| 1550 // clang-format off | 1571 // clang-format off |
| 1551 unsigned char packet[] = { | 1572 unsigned char packet[] = { |
| 1552 // public flags (8 byte connection_id) | 1573 // public flags (8 byte connection_id) |
| 1553 0x38, | 1574 0x38, |
| 1554 // connection_id | 1575 // connection_id |
| 1555 0x10, 0x32, 0x54, 0x76, | 1576 0x10, 0x32, 0x54, 0x76, |
| (...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1592 // data length | 1613 // data length |
| 1593 0x0c, 0x00, | 1614 0x0c, 0x00, |
| 1594 // data | 1615 // data |
| 1595 'h', 'e', 'l', 'l', | 1616 'h', 'e', 'l', 'l', |
| 1596 'o', ' ', 'w', 'o', | 1617 'o', ' ', 'w', 'o', |
| 1597 'r', 'l', 'd', '!', | 1618 'r', 'l', 'd', '!', |
| 1598 }; | 1619 }; |
| 1599 // clang-format on | 1620 // clang-format on |
| 1600 | 1621 |
| 1601 QuicEncryptedPacket encrypted( | 1622 QuicEncryptedPacket encrypted( |
| 1602 AsChars(FLAGS_quic_restart_flag_quic_big_endian_connection_id | 1623 AsChars( |
| 1603 ? packet_cid_be | 1624 QuicUtils::IsConnectionIdWireFormatBigEndian(framer_.perspective()) |
| 1604 : packet), | 1625 ? packet_cid_be |
| 1605 FLAGS_quic_restart_flag_quic_big_endian_connection_id | 1626 : packet), |
| 1627 QuicUtils::IsConnectionIdWireFormatBigEndian(framer_.perspective()) |
| 1606 ? arraysize(packet_cid_be) | 1628 ? arraysize(packet_cid_be) |
| 1607 : arraysize(packet), | 1629 : arraysize(packet), |
| 1608 false); | 1630 false); |
| 1609 EXPECT_TRUE(framer_.ProcessPacket(encrypted)); | 1631 EXPECT_TRUE(framer_.ProcessPacket(encrypted)); |
| 1610 | 1632 |
| 1611 EXPECT_EQ(QUIC_NO_ERROR, framer_.error()); | 1633 EXPECT_EQ(QUIC_NO_ERROR, framer_.error()); |
| 1612 ASSERT_TRUE(visitor_.header_.get()); | 1634 ASSERT_TRUE(visitor_.header_.get()); |
| 1613 EXPECT_TRUE(CheckDecryption(encrypted, !kIncludeVersion, | 1635 EXPECT_TRUE(CheckDecryption(encrypted, !kIncludeVersion, |
| 1614 !kIncludeDiversificationNonce)); | 1636 !kIncludeDiversificationNonce)); |
| 1615 | 1637 |
| 1616 ASSERT_EQ(1u, visitor_.stream_frames_.size()); | 1638 ASSERT_EQ(1u, visitor_.stream_frames_.size()); |
| 1617 EXPECT_EQ(0u, visitor_.ack_frames_.size()); | 1639 EXPECT_EQ(0u, visitor_.ack_frames_.size()); |
| 1618 // Stream ID should be the last 2 bytes of kStreamId. | 1640 // Stream ID should be the last 2 bytes of kStreamId. |
| 1619 EXPECT_EQ(0x0000FFFF & kStreamId, visitor_.stream_frames_[0]->stream_id); | 1641 EXPECT_EQ(0x0000FFFF & kStreamId, visitor_.stream_frames_[0]->stream_id); |
| 1620 EXPECT_TRUE(visitor_.stream_frames_[0]->fin); | 1642 EXPECT_TRUE(visitor_.stream_frames_[0]->fin); |
| 1621 EXPECT_EQ(kStreamOffset, visitor_.stream_frames_[0]->offset); | 1643 EXPECT_EQ(kStreamOffset, visitor_.stream_frames_[0]->offset); |
| 1622 CheckStreamFrameData("hello world!", visitor_.stream_frames_[0].get()); | 1644 CheckStreamFrameData("hello world!", visitor_.stream_frames_[0].get()); |
| 1623 | 1645 |
| 1624 // Now test framing boundaries. | 1646 // Now test framing boundaries. |
| 1625 const size_t stream_id_size = 2; | 1647 const size_t stream_id_size = 2; |
| 1626 CheckStreamFrameBoundaries( | 1648 CheckStreamFrameBoundaries( |
| 1627 FLAGS_quic_restart_flag_quic_big_endian_connection_id ? packet_cid_be | 1649 QuicUtils::IsConnectionIdWireFormatBigEndian(framer_.perspective()) |
| 1628 : packet, | 1650 ? packet_cid_be |
| 1651 : packet, |
| 1629 stream_id_size, !kIncludeVersion); | 1652 stream_id_size, !kIncludeVersion); |
| 1630 } | 1653 } |
| 1631 | 1654 |
| 1632 TEST_P(QuicFramerTest, StreamFrame1ByteStreamId) { | 1655 TEST_P(QuicFramerTest, StreamFrame1ByteStreamId) { |
| 1633 // clang-format off | 1656 // clang-format off |
| 1634 unsigned char packet[] = { | 1657 unsigned char packet[] = { |
| 1635 // public flags (8 byte connection_id) | 1658 // public flags (8 byte connection_id) |
| 1636 0x38, | 1659 0x38, |
| 1637 // connection_id | 1660 // connection_id |
| 1638 0x10, 0x32, 0x54, 0x76, | 1661 0x10, 0x32, 0x54, 0x76, |
| (...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1675 // data length | 1698 // data length |
| 1676 0x0c, 0x00, | 1699 0x0c, 0x00, |
| 1677 // data | 1700 // data |
| 1678 'h', 'e', 'l', 'l', | 1701 'h', 'e', 'l', 'l', |
| 1679 'o', ' ', 'w', 'o', | 1702 'o', ' ', 'w', 'o', |
| 1680 'r', 'l', 'd', '!', | 1703 'r', 'l', 'd', '!', |
| 1681 }; | 1704 }; |
| 1682 // clang-format on | 1705 // clang-format on |
| 1683 | 1706 |
| 1684 QuicEncryptedPacket encrypted( | 1707 QuicEncryptedPacket encrypted( |
| 1685 AsChars(FLAGS_quic_restart_flag_quic_big_endian_connection_id | 1708 AsChars( |
| 1686 ? packet_cid_be | 1709 QuicUtils::IsConnectionIdWireFormatBigEndian(framer_.perspective()) |
| 1687 : packet), | 1710 ? packet_cid_be |
| 1688 FLAGS_quic_restart_flag_quic_big_endian_connection_id | 1711 : packet), |
| 1712 QuicUtils::IsConnectionIdWireFormatBigEndian(framer_.perspective()) |
| 1689 ? arraysize(packet_cid_be) | 1713 ? arraysize(packet_cid_be) |
| 1690 : arraysize(packet), | 1714 : arraysize(packet), |
| 1691 false); | 1715 false); |
| 1692 EXPECT_TRUE(framer_.ProcessPacket(encrypted)); | 1716 EXPECT_TRUE(framer_.ProcessPacket(encrypted)); |
| 1693 | 1717 |
| 1694 EXPECT_EQ(QUIC_NO_ERROR, framer_.error()); | 1718 EXPECT_EQ(QUIC_NO_ERROR, framer_.error()); |
| 1695 ASSERT_TRUE(visitor_.header_.get()); | 1719 ASSERT_TRUE(visitor_.header_.get()); |
| 1696 EXPECT_TRUE(CheckDecryption(encrypted, !kIncludeVersion, | 1720 EXPECT_TRUE(CheckDecryption(encrypted, !kIncludeVersion, |
| 1697 !kIncludeDiversificationNonce)); | 1721 !kIncludeDiversificationNonce)); |
| 1698 | 1722 |
| 1699 ASSERT_EQ(1u, visitor_.stream_frames_.size()); | 1723 ASSERT_EQ(1u, visitor_.stream_frames_.size()); |
| 1700 EXPECT_EQ(0u, visitor_.ack_frames_.size()); | 1724 EXPECT_EQ(0u, visitor_.ack_frames_.size()); |
| 1701 // Stream ID should be the last byte of kStreamId. | 1725 // Stream ID should be the last byte of kStreamId. |
| 1702 EXPECT_EQ(0x000000FF & kStreamId, visitor_.stream_frames_[0]->stream_id); | 1726 EXPECT_EQ(0x000000FF & kStreamId, visitor_.stream_frames_[0]->stream_id); |
| 1703 EXPECT_TRUE(visitor_.stream_frames_[0]->fin); | 1727 EXPECT_TRUE(visitor_.stream_frames_[0]->fin); |
| 1704 EXPECT_EQ(kStreamOffset, visitor_.stream_frames_[0]->offset); | 1728 EXPECT_EQ(kStreamOffset, visitor_.stream_frames_[0]->offset); |
| 1705 CheckStreamFrameData("hello world!", visitor_.stream_frames_[0].get()); | 1729 CheckStreamFrameData("hello world!", visitor_.stream_frames_[0].get()); |
| 1706 | 1730 |
| 1707 // Now test framing boundaries. | 1731 // Now test framing boundaries. |
| 1708 const size_t stream_id_size = 1; | 1732 const size_t stream_id_size = 1; |
| 1709 CheckStreamFrameBoundaries( | 1733 CheckStreamFrameBoundaries( |
| 1710 FLAGS_quic_restart_flag_quic_big_endian_connection_id ? packet_cid_be | 1734 QuicUtils::IsConnectionIdWireFormatBigEndian(framer_.perspective()) |
| 1711 : packet, | 1735 ? packet_cid_be |
| 1736 : packet, |
| 1712 stream_id_size, !kIncludeVersion); | 1737 stream_id_size, !kIncludeVersion); |
| 1713 } | 1738 } |
| 1714 | 1739 |
| 1715 TEST_P(QuicFramerTest, StreamFrameWithVersion) { | 1740 TEST_P(QuicFramerTest, StreamFrameWithVersion) { |
| 1716 // clang-format off | 1741 // clang-format off |
| 1717 unsigned char packet[] = { | 1742 unsigned char packet[] = { |
| 1718 // public flags (version, 8 byte connection_id) | 1743 // public flags (version, 8 byte connection_id) |
| 1719 0x39, | 1744 0x39, |
| 1720 // connection_id | 1745 // connection_id |
| 1721 0x10, 0x32, 0x54, 0x76, | 1746 0x10, 0x32, 0x54, 0x76, |
| (...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1762 // data length | 1787 // data length |
| 1763 0x0c, 0x00, | 1788 0x0c, 0x00, |
| 1764 // data | 1789 // data |
| 1765 'h', 'e', 'l', 'l', | 1790 'h', 'e', 'l', 'l', |
| 1766 'o', ' ', 'w', 'o', | 1791 'o', ' ', 'w', 'o', |
| 1767 'r', 'l', 'd', '!', | 1792 'r', 'l', 'd', '!', |
| 1768 }; | 1793 }; |
| 1769 // clang-format on | 1794 // clang-format on |
| 1770 | 1795 |
| 1771 QuicEncryptedPacket encrypted( | 1796 QuicEncryptedPacket encrypted( |
| 1772 AsChars(FLAGS_quic_restart_flag_quic_big_endian_connection_id | 1797 AsChars( |
| 1773 ? packet_cid_be | 1798 QuicUtils::IsConnectionIdWireFormatBigEndian(framer_.perspective()) |
| 1774 : packet), | 1799 ? packet_cid_be |
| 1775 FLAGS_quic_restart_flag_quic_big_endian_connection_id | 1800 : packet), |
| 1801 QuicUtils::IsConnectionIdWireFormatBigEndian(framer_.perspective()) |
| 1776 ? arraysize(packet_cid_be) | 1802 ? arraysize(packet_cid_be) |
| 1777 : arraysize(packet), | 1803 : arraysize(packet), |
| 1778 false); | 1804 false); |
| 1779 EXPECT_TRUE(framer_.ProcessPacket(encrypted)); | 1805 EXPECT_TRUE(framer_.ProcessPacket(encrypted)); |
| 1780 | 1806 |
| 1781 EXPECT_EQ(QUIC_NO_ERROR, framer_.error()); | 1807 EXPECT_EQ(QUIC_NO_ERROR, framer_.error()); |
| 1782 ASSERT_TRUE(visitor_.header_.get()); | 1808 ASSERT_TRUE(visitor_.header_.get()); |
| 1783 EXPECT_TRUE(visitor_.header_->public_header.version_flag); | 1809 EXPECT_TRUE(visitor_.header_->public_header.version_flag); |
| 1784 EXPECT_EQ(GetParam(), visitor_.header_->public_header.versions[0]); | 1810 EXPECT_EQ(GetParam(), visitor_.header_->public_header.versions[0]); |
| 1785 EXPECT_TRUE(CheckDecryption(encrypted, kIncludeVersion, | 1811 EXPECT_TRUE(CheckDecryption(encrypted, kIncludeVersion, |
| 1786 !kIncludeDiversificationNonce)); | 1812 !kIncludeDiversificationNonce)); |
| 1787 | 1813 |
| 1788 ASSERT_EQ(1u, visitor_.stream_frames_.size()); | 1814 ASSERT_EQ(1u, visitor_.stream_frames_.size()); |
| 1789 EXPECT_EQ(0u, visitor_.ack_frames_.size()); | 1815 EXPECT_EQ(0u, visitor_.ack_frames_.size()); |
| 1790 EXPECT_EQ(kStreamId, visitor_.stream_frames_[0]->stream_id); | 1816 EXPECT_EQ(kStreamId, visitor_.stream_frames_[0]->stream_id); |
| 1791 EXPECT_TRUE(visitor_.stream_frames_[0]->fin); | 1817 EXPECT_TRUE(visitor_.stream_frames_[0]->fin); |
| 1792 EXPECT_EQ(kStreamOffset, visitor_.stream_frames_[0]->offset); | 1818 EXPECT_EQ(kStreamOffset, visitor_.stream_frames_[0]->offset); |
| 1793 CheckStreamFrameData("hello world!", visitor_.stream_frames_[0].get()); | 1819 CheckStreamFrameData("hello world!", visitor_.stream_frames_[0].get()); |
| 1794 | 1820 |
| 1795 // Now test framing boundaries. | 1821 // Now test framing boundaries. |
| 1796 CheckStreamFrameBoundaries( | 1822 CheckStreamFrameBoundaries( |
| 1797 FLAGS_quic_restart_flag_quic_big_endian_connection_id ? packet_cid_be | 1823 QuicUtils::IsConnectionIdWireFormatBigEndian(framer_.perspective()) |
| 1798 : packet, | 1824 ? packet_cid_be |
| 1825 : packet, |
| 1799 kQuicMaxStreamIdSize, kIncludeVersion); | 1826 kQuicMaxStreamIdSize, kIncludeVersion); |
| 1800 } | 1827 } |
| 1801 | 1828 |
| 1802 TEST_P(QuicFramerTest, RejectPacket) { | 1829 TEST_P(QuicFramerTest, RejectPacket) { |
| 1803 visitor_.accept_packet_ = false; | 1830 visitor_.accept_packet_ = false; |
| 1804 | 1831 |
| 1805 // clang-format off | 1832 // clang-format off |
| 1806 unsigned char packet[] = { | 1833 unsigned char packet[] = { |
| 1807 // public flags (8 byte connection_id) | 1834 // public flags (8 byte connection_id) |
| 1808 0x38, | 1835 0x38, |
| (...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1847 // data length | 1874 // data length |
| 1848 0x0c, 0x00, | 1875 0x0c, 0x00, |
| 1849 // data | 1876 // data |
| 1850 'h', 'e', 'l', 'l', | 1877 'h', 'e', 'l', 'l', |
| 1851 'o', ' ', 'w', 'o', | 1878 'o', ' ', 'w', 'o', |
| 1852 'r', 'l', 'd', '!', | 1879 'r', 'l', 'd', '!', |
| 1853 }; | 1880 }; |
| 1854 // clang-format on | 1881 // clang-format on |
| 1855 | 1882 |
| 1856 QuicEncryptedPacket encrypted( | 1883 QuicEncryptedPacket encrypted( |
| 1857 AsChars(FLAGS_quic_restart_flag_quic_big_endian_connection_id | 1884 AsChars( |
| 1858 ? packet_cid_be | 1885 QuicUtils::IsConnectionIdWireFormatBigEndian(framer_.perspective()) |
| 1859 : packet), | 1886 ? packet_cid_be |
| 1860 FLAGS_quic_restart_flag_quic_big_endian_connection_id | 1887 : packet), |
| 1888 QuicUtils::IsConnectionIdWireFormatBigEndian(framer_.perspective()) |
| 1861 ? arraysize(packet_cid_be) | 1889 ? arraysize(packet_cid_be) |
| 1862 : arraysize(packet), | 1890 : arraysize(packet), |
| 1863 false); | 1891 false); |
| 1864 EXPECT_TRUE(framer_.ProcessPacket(encrypted)); | 1892 EXPECT_TRUE(framer_.ProcessPacket(encrypted)); |
| 1865 | 1893 |
| 1866 EXPECT_EQ(QUIC_NO_ERROR, framer_.error()); | 1894 EXPECT_EQ(QUIC_NO_ERROR, framer_.error()); |
| 1867 ASSERT_TRUE(visitor_.header_.get()); | 1895 ASSERT_TRUE(visitor_.header_.get()); |
| 1868 EXPECT_TRUE(CheckDecryption(encrypted, !kIncludeVersion, | 1896 EXPECT_TRUE(CheckDecryption(encrypted, !kIncludeVersion, |
| 1869 !kIncludeDiversificationNonce)); | 1897 !kIncludeDiversificationNonce)); |
| 1870 | 1898 |
| (...skipping 14 matching lines...) Expand all Loading... |
| 1885 | 1913 |
| 1886 unsigned char packet_cid_be[] = { | 1914 unsigned char packet_cid_be[] = { |
| 1887 // public flags (8 byte connection_id) | 1915 // public flags (8 byte connection_id) |
| 1888 0x38, | 1916 0x38, |
| 1889 // connection_id | 1917 // connection_id |
| 1890 0xFE, 0xDC, 0xBA, 0x98, 0x76, 0x54, 0x32, 0x10, | 1918 0xFE, 0xDC, 0xBA, 0x98, 0x76, 0x54, 0x32, 0x10, |
| 1891 }; | 1919 }; |
| 1892 // clang-format on | 1920 // clang-format on |
| 1893 | 1921 |
| 1894 QuicEncryptedPacket encrypted( | 1922 QuicEncryptedPacket encrypted( |
| 1895 AsChars(FLAGS_quic_restart_flag_quic_big_endian_connection_id | 1923 AsChars( |
| 1896 ? packet_cid_be | 1924 QuicUtils::IsConnectionIdWireFormatBigEndian(framer_.perspective()) |
| 1897 : packet), | 1925 ? packet_cid_be |
| 1898 FLAGS_quic_restart_flag_quic_big_endian_connection_id | 1926 : packet), |
| 1927 QuicUtils::IsConnectionIdWireFormatBigEndian(framer_.perspective()) |
| 1899 ? arraysize(packet_cid_be) | 1928 ? arraysize(packet_cid_be) |
| 1900 : arraysize(packet), | 1929 : arraysize(packet), |
| 1901 false); | 1930 false); |
| 1902 EXPECT_TRUE(framer_.ProcessPacket(encrypted)); | 1931 EXPECT_TRUE(framer_.ProcessPacket(encrypted)); |
| 1903 | 1932 |
| 1904 EXPECT_EQ(QUIC_NO_ERROR, framer_.error()); | 1933 EXPECT_EQ(QUIC_NO_ERROR, framer_.error()); |
| 1905 ASSERT_TRUE(visitor_.public_header_.get()); | 1934 ASSERT_TRUE(visitor_.public_header_.get()); |
| 1906 ASSERT_FALSE(visitor_.header_.get()); | 1935 ASSERT_FALSE(visitor_.header_.get()); |
| 1907 } | 1936 } |
| 1908 | 1937 |
| (...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1945 // Zero delta time. | 1974 // Zero delta time. |
| 1946 0x00, 0x00, | 1975 0x00, 0x00, |
| 1947 // first ack block length. | 1976 // first ack block length. |
| 1948 0x34, 0x12, | 1977 0x34, 0x12, |
| 1949 // num timestamps. | 1978 // num timestamps. |
| 1950 0x00, | 1979 0x00, |
| 1951 }; | 1980 }; |
| 1952 // clang-format on | 1981 // clang-format on |
| 1953 | 1982 |
| 1954 QuicEncryptedPacket encrypted( | 1983 QuicEncryptedPacket encrypted( |
| 1955 AsChars(FLAGS_quic_restart_flag_quic_big_endian_connection_id | 1984 AsChars( |
| 1956 ? packet_cid_be | 1985 QuicUtils::IsConnectionIdWireFormatBigEndian(framer_.perspective()) |
| 1957 : packet), | 1986 ? packet_cid_be |
| 1958 FLAGS_quic_restart_flag_quic_big_endian_connection_id | 1987 : packet), |
| 1988 QuicUtils::IsConnectionIdWireFormatBigEndian(framer_.perspective()) |
| 1959 ? arraysize(packet_cid_be) | 1989 ? arraysize(packet_cid_be) |
| 1960 : arraysize(packet), | 1990 : arraysize(packet), |
| 1961 false); | 1991 false); |
| 1962 EXPECT_TRUE(framer_.ProcessPacket(encrypted)); | 1992 EXPECT_TRUE(framer_.ProcessPacket(encrypted)); |
| 1963 | 1993 |
| 1964 EXPECT_EQ(QUIC_NO_ERROR, framer_.error()); | 1994 EXPECT_EQ(QUIC_NO_ERROR, framer_.error()); |
| 1965 ASSERT_TRUE(visitor_.header_.get()); | 1995 ASSERT_TRUE(visitor_.header_.get()); |
| 1966 EXPECT_TRUE(CheckDecryption(encrypted, !kIncludeVersion, | 1996 EXPECT_TRUE(CheckDecryption(encrypted, !kIncludeVersion, |
| 1967 !kIncludeDiversificationNonce)); | 1997 !kIncludeDiversificationNonce)); |
| 1968 | 1998 |
| (...skipping 18 matching lines...) Expand all Loading... |
| 1987 if (i < kLargestAckedDeltaTimeOffset) { | 2017 if (i < kLargestAckedDeltaTimeOffset) { |
| 1988 expected_error = "Unable to read largest acked."; | 2018 expected_error = "Unable to read largest acked."; |
| 1989 } else if (i < kFirstAckBlockLengthOffset) { | 2019 } else if (i < kFirstAckBlockLengthOffset) { |
| 1990 expected_error = "Unable to read ack delay time."; | 2020 expected_error = "Unable to read ack delay time."; |
| 1991 } else if (i < kNumTimestampsOffset) { | 2021 } else if (i < kNumTimestampsOffset) { |
| 1992 expected_error = "Unable to read first ack block length."; | 2022 expected_error = "Unable to read first ack block length."; |
| 1993 } else { | 2023 } else { |
| 1994 expected_error = "Unable to read num received packets."; | 2024 expected_error = "Unable to read num received packets."; |
| 1995 } | 2025 } |
| 1996 CheckProcessingFails( | 2026 CheckProcessingFails( |
| 1997 FLAGS_quic_restart_flag_quic_big_endian_connection_id ? packet_cid_be | 2027 QuicUtils::IsConnectionIdWireFormatBigEndian(framer_.perspective()) |
| 1998 : packet, | 2028 ? packet_cid_be |
| 2029 : packet, |
| 1999 i + GetPacketHeaderSize(framer_.version(), PACKET_8BYTE_CONNECTION_ID, | 2030 i + GetPacketHeaderSize(framer_.version(), PACKET_8BYTE_CONNECTION_ID, |
| 2000 !kIncludeVersion, !kIncludeDiversificationNonce, | 2031 !kIncludeVersion, !kIncludeDiversificationNonce, |
| 2001 PACKET_6BYTE_PACKET_NUMBER), | 2032 PACKET_6BYTE_PACKET_NUMBER), |
| 2002 expected_error, QUIC_INVALID_ACK_DATA); | 2033 expected_error, QUIC_INVALID_ACK_DATA); |
| 2003 } | 2034 } |
| 2004 } | 2035 } |
| 2005 | 2036 |
| 2006 TEST_P(QuicFramerTest, AckFrameTwoTimeStampsMultipleAckBlocks) { | 2037 TEST_P(QuicFramerTest, AckFrameTwoTimeStampsMultipleAckBlocks) { |
| 2007 // clang-format off | 2038 // clang-format off |
| 2008 unsigned char packet[] = { | 2039 unsigned char packet[] = { |
| (...skipping 85 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2094 // Delta time. | 2125 // Delta time. |
| 2095 0x10, 0x32, 0x54, 0x76, | 2126 0x10, 0x32, 0x54, 0x76, |
| 2096 // Delta from largest observed. | 2127 // Delta from largest observed. |
| 2097 0x02, | 2128 0x02, |
| 2098 // Delta time. | 2129 // Delta time. |
| 2099 0x10, 0x32, | 2130 0x10, 0x32, |
| 2100 }; | 2131 }; |
| 2101 // clang-format on | 2132 // clang-format on |
| 2102 | 2133 |
| 2103 QuicEncryptedPacket encrypted( | 2134 QuicEncryptedPacket encrypted( |
| 2104 AsChars(FLAGS_quic_restart_flag_quic_big_endian_connection_id | 2135 AsChars( |
| 2105 ? packet_cid_be | 2136 QuicUtils::IsConnectionIdWireFormatBigEndian(framer_.perspective()) |
| 2106 : packet), | 2137 ? packet_cid_be |
| 2107 FLAGS_quic_restart_flag_quic_big_endian_connection_id | 2138 : packet), |
| 2139 QuicUtils::IsConnectionIdWireFormatBigEndian(framer_.perspective()) |
| 2108 ? arraysize(packet_cid_be) | 2140 ? arraysize(packet_cid_be) |
| 2109 : arraysize(packet), | 2141 : arraysize(packet), |
| 2110 false); | 2142 false); |
| 2111 EXPECT_TRUE(framer_.ProcessPacket(encrypted)); | 2143 EXPECT_TRUE(framer_.ProcessPacket(encrypted)); |
| 2112 | 2144 |
| 2113 EXPECT_EQ(QUIC_NO_ERROR, framer_.error()); | 2145 EXPECT_EQ(QUIC_NO_ERROR, framer_.error()); |
| 2114 ASSERT_TRUE(visitor_.header_.get()); | 2146 ASSERT_TRUE(visitor_.header_.get()); |
| 2115 EXPECT_TRUE(CheckDecryption(encrypted, !kIncludeVersion, | 2147 EXPECT_TRUE(CheckDecryption(encrypted, !kIncludeVersion, |
| 2116 !kIncludeDiversificationNonce)); | 2148 !kIncludeDiversificationNonce)); |
| 2117 | 2149 |
| (...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2187 } else if (i < kTimestampDeltaLargestObserved2) { | 2219 } else if (i < kTimestampDeltaLargestObserved2) { |
| 2188 expected_error = "Unable to read time delta in received packets."; | 2220 expected_error = "Unable to read time delta in received packets."; |
| 2189 } else if (i < kTimestampTimeDeltaLargestObserved2) { | 2221 } else if (i < kTimestampTimeDeltaLargestObserved2) { |
| 2190 expected_error = "Unable to read sequence delta in received packets."; | 2222 expected_error = "Unable to read sequence delta in received packets."; |
| 2191 } else { | 2223 } else { |
| 2192 expected_error = | 2224 expected_error = |
| 2193 "Unable to read incremental time delta in received packets."; | 2225 "Unable to read incremental time delta in received packets."; |
| 2194 } | 2226 } |
| 2195 | 2227 |
| 2196 CheckProcessingFails( | 2228 CheckProcessingFails( |
| 2197 FLAGS_quic_restart_flag_quic_big_endian_connection_id ? packet_cid_be | 2229 QuicUtils::IsConnectionIdWireFormatBigEndian(framer_.perspective()) |
| 2198 : packet, | 2230 ? packet_cid_be |
| 2231 : packet, |
| 2199 i + GetPacketHeaderSize(framer_.version(), PACKET_8BYTE_CONNECTION_ID, | 2232 i + GetPacketHeaderSize(framer_.version(), PACKET_8BYTE_CONNECTION_ID, |
| 2200 !kIncludeVersion, !kIncludeDiversificationNonce, | 2233 !kIncludeVersion, !kIncludeDiversificationNonce, |
| 2201 PACKET_6BYTE_PACKET_NUMBER), | 2234 PACKET_6BYTE_PACKET_NUMBER), |
| 2202 expected_error, QUIC_INVALID_ACK_DATA); | 2235 expected_error, QUIC_INVALID_ACK_DATA); |
| 2203 } | 2236 } |
| 2204 } | 2237 } |
| 2205 | 2238 |
| 2206 TEST_P(QuicFramerTest, NewStopWaitingFrame) { | 2239 TEST_P(QuicFramerTest, NewStopWaitingFrame) { |
| 2207 // clang-format off | 2240 // clang-format off |
| 2208 unsigned char packet[] = { | 2241 unsigned char packet[] = { |
| (...skipping 22 matching lines...) Expand all Loading... |
| 2231 0x34, 0x12, | 2264 0x34, 0x12, |
| 2232 // frame type (stop waiting frame) | 2265 // frame type (stop waiting frame) |
| 2233 0x06, | 2266 0x06, |
| 2234 // least packet number awaiting an ack, delta from packet number. | 2267 // least packet number awaiting an ack, delta from packet number. |
| 2235 0x08, 0x00, 0x00, 0x00, | 2268 0x08, 0x00, 0x00, 0x00, |
| 2236 0x00, 0x00, | 2269 0x00, 0x00, |
| 2237 }; | 2270 }; |
| 2238 // clang-format on | 2271 // clang-format on |
| 2239 | 2272 |
| 2240 QuicEncryptedPacket encrypted( | 2273 QuicEncryptedPacket encrypted( |
| 2241 AsChars(FLAGS_quic_restart_flag_quic_big_endian_connection_id | 2274 AsChars( |
| 2242 ? packet_cid_be | 2275 QuicUtils::IsConnectionIdWireFormatBigEndian(framer_.perspective()) |
| 2243 : packet), | 2276 ? packet_cid_be |
| 2244 FLAGS_quic_restart_flag_quic_big_endian_connection_id | 2277 : packet), |
| 2278 QuicUtils::IsConnectionIdWireFormatBigEndian(framer_.perspective()) |
| 2245 ? arraysize(packet_cid_be) | 2279 ? arraysize(packet_cid_be) |
| 2246 : arraysize(packet), | 2280 : arraysize(packet), |
| 2247 false); | 2281 false); |
| 2248 EXPECT_TRUE(framer_.ProcessPacket(encrypted)); | 2282 EXPECT_TRUE(framer_.ProcessPacket(encrypted)); |
| 2249 | 2283 |
| 2250 EXPECT_EQ(QUIC_NO_ERROR, framer_.error()); | 2284 EXPECT_EQ(QUIC_NO_ERROR, framer_.error()); |
| 2251 ASSERT_TRUE(visitor_.header_.get()); | 2285 ASSERT_TRUE(visitor_.header_.get()); |
| 2252 EXPECT_TRUE(CheckDecryption(encrypted, !kIncludeVersion, | 2286 EXPECT_TRUE(CheckDecryption(encrypted, !kIncludeVersion, |
| 2253 !kIncludeDiversificationNonce)); | 2287 !kIncludeDiversificationNonce)); |
| 2254 | 2288 |
| 2255 EXPECT_EQ(0u, visitor_.stream_frames_.size()); | 2289 EXPECT_EQ(0u, visitor_.stream_frames_.size()); |
| 2256 ASSERT_EQ(1u, visitor_.stop_waiting_frames_.size()); | 2290 ASSERT_EQ(1u, visitor_.stop_waiting_frames_.size()); |
| 2257 const QuicStopWaitingFrame& frame = *visitor_.stop_waiting_frames_[0]; | 2291 const QuicStopWaitingFrame& frame = *visitor_.stop_waiting_frames_[0]; |
| 2258 EXPECT_EQ(kLeastUnacked, frame.least_unacked); | 2292 EXPECT_EQ(kLeastUnacked, frame.least_unacked); |
| 2259 | 2293 |
| 2260 const size_t frame_size = 7; | 2294 const size_t frame_size = 7; |
| 2261 for (size_t i = kQuicFrameTypeSize; i < frame_size; ++i) { | 2295 for (size_t i = kQuicFrameTypeSize; i < frame_size; ++i) { |
| 2262 string expected_error; | 2296 string expected_error; |
| 2263 expected_error = "Unable to read least unacked delta."; | 2297 expected_error = "Unable to read least unacked delta."; |
| 2264 CheckProcessingFails( | 2298 CheckProcessingFails( |
| 2265 FLAGS_quic_restart_flag_quic_big_endian_connection_id ? packet_cid_be | 2299 QuicUtils::IsConnectionIdWireFormatBigEndian(framer_.perspective()) |
| 2266 : packet, | 2300 ? packet_cid_be |
| 2301 : packet, |
| 2267 i + GetPacketHeaderSize(framer_.version(), PACKET_8BYTE_CONNECTION_ID, | 2302 i + GetPacketHeaderSize(framer_.version(), PACKET_8BYTE_CONNECTION_ID, |
| 2268 !kIncludeVersion, !kIncludeDiversificationNonce, | 2303 !kIncludeVersion, !kIncludeDiversificationNonce, |
| 2269 PACKET_6BYTE_PACKET_NUMBER), | 2304 PACKET_6BYTE_PACKET_NUMBER), |
| 2270 expected_error, QUIC_INVALID_STOP_WAITING_DATA); | 2305 expected_error, QUIC_INVALID_STOP_WAITING_DATA); |
| 2271 } | 2306 } |
| 2272 } | 2307 } |
| 2273 | 2308 |
| 2274 TEST_P(QuicFramerTest, RstStreamFrameQuic) { | 2309 TEST_P(QuicFramerTest, RstStreamFrameQuic) { |
| 2275 // clang-format off | 2310 // clang-format off |
| 2276 unsigned char packet[] = { | 2311 unsigned char packet[] = { |
| (...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2313 // sent byte offset | 2348 // sent byte offset |
| 2314 0x54, 0x76, 0x10, 0x32, | 2349 0x54, 0x76, 0x10, 0x32, |
| 2315 0xDC, 0xFE, 0x98, 0xBA, | 2350 0xDC, 0xFE, 0x98, 0xBA, |
| 2316 | 2351 |
| 2317 // error code | 2352 // error code |
| 2318 0x01, 0x00, 0x00, 0x00, | 2353 0x01, 0x00, 0x00, 0x00, |
| 2319 }; | 2354 }; |
| 2320 // clang-format on | 2355 // clang-format on |
| 2321 | 2356 |
| 2322 QuicEncryptedPacket encrypted( | 2357 QuicEncryptedPacket encrypted( |
| 2323 AsChars(FLAGS_quic_restart_flag_quic_big_endian_connection_id | 2358 AsChars( |
| 2324 ? packet_cid_be | 2359 QuicUtils::IsConnectionIdWireFormatBigEndian(framer_.perspective()) |
| 2325 : packet), | 2360 ? packet_cid_be |
| 2326 FLAGS_quic_restart_flag_quic_big_endian_connection_id | 2361 : packet), |
| 2362 QuicUtils::IsConnectionIdWireFormatBigEndian(framer_.perspective()) |
| 2327 ? arraysize(packet_cid_be) | 2363 ? arraysize(packet_cid_be) |
| 2328 : arraysize(packet), | 2364 : arraysize(packet), |
| 2329 false); | 2365 false); |
| 2330 EXPECT_TRUE(framer_.ProcessPacket(encrypted)); | 2366 EXPECT_TRUE(framer_.ProcessPacket(encrypted)); |
| 2331 | 2367 |
| 2332 EXPECT_EQ(QUIC_NO_ERROR, framer_.error()); | 2368 EXPECT_EQ(QUIC_NO_ERROR, framer_.error()); |
| 2333 ASSERT_TRUE(visitor_.header_.get()); | 2369 ASSERT_TRUE(visitor_.header_.get()); |
| 2334 EXPECT_TRUE(CheckDecryption(encrypted, !kIncludeVersion, | 2370 EXPECT_TRUE(CheckDecryption(encrypted, !kIncludeVersion, |
| 2335 !kIncludeDiversificationNonce)); | 2371 !kIncludeDiversificationNonce)); |
| 2336 | 2372 |
| 2337 EXPECT_EQ(kStreamId, visitor_.rst_stream_frame_.stream_id); | 2373 EXPECT_EQ(kStreamId, visitor_.rst_stream_frame_.stream_id); |
| 2338 EXPECT_EQ(0x01, visitor_.rst_stream_frame_.error_code); | 2374 EXPECT_EQ(0x01, visitor_.rst_stream_frame_.error_code); |
| 2339 EXPECT_EQ(kStreamOffset, visitor_.rst_stream_frame_.byte_offset); | 2375 EXPECT_EQ(kStreamOffset, visitor_.rst_stream_frame_.byte_offset); |
| 2340 | 2376 |
| 2341 // Now test framing boundaries. | 2377 // Now test framing boundaries. |
| 2342 for (size_t i = kQuicFrameTypeSize; i < QuicFramer::GetRstStreamFrameSize(); | 2378 for (size_t i = kQuicFrameTypeSize; i < QuicFramer::GetRstStreamFrameSize(); |
| 2343 ++i) { | 2379 ++i) { |
| 2344 string expected_error; | 2380 string expected_error; |
| 2345 if (i < kQuicFrameTypeSize + kQuicMaxStreamIdSize) { | 2381 if (i < kQuicFrameTypeSize + kQuicMaxStreamIdSize) { |
| 2346 expected_error = "Unable to read stream_id."; | 2382 expected_error = "Unable to read stream_id."; |
| 2347 } else if (i < kQuicFrameTypeSize + kQuicMaxStreamIdSize + | 2383 } else if (i < kQuicFrameTypeSize + kQuicMaxStreamIdSize + |
| 2348 kQuicMaxStreamOffsetSize) { | 2384 kQuicMaxStreamOffsetSize) { |
| 2349 expected_error = "Unable to read rst stream sent byte offset."; | 2385 expected_error = "Unable to read rst stream sent byte offset."; |
| 2350 } else if (i < kQuicFrameTypeSize + kQuicMaxStreamIdSize + | 2386 } else if (i < kQuicFrameTypeSize + kQuicMaxStreamIdSize + |
| 2351 kQuicMaxStreamOffsetSize + kQuicErrorCodeSize) { | 2387 kQuicMaxStreamOffsetSize + kQuicErrorCodeSize) { |
| 2352 expected_error = "Unable to read rst stream error code."; | 2388 expected_error = "Unable to read rst stream error code."; |
| 2353 } | 2389 } |
| 2354 CheckProcessingFails( | 2390 CheckProcessingFails( |
| 2355 FLAGS_quic_restart_flag_quic_big_endian_connection_id ? packet_cid_be | 2391 QuicUtils::IsConnectionIdWireFormatBigEndian(framer_.perspective()) |
| 2356 : packet, | 2392 ? packet_cid_be |
| 2393 : packet, |
| 2357 i + GetPacketHeaderSize(framer_.version(), PACKET_8BYTE_CONNECTION_ID, | 2394 i + GetPacketHeaderSize(framer_.version(), PACKET_8BYTE_CONNECTION_ID, |
| 2358 !kIncludeVersion, !kIncludeDiversificationNonce, | 2395 !kIncludeVersion, !kIncludeDiversificationNonce, |
| 2359 PACKET_6BYTE_PACKET_NUMBER), | 2396 PACKET_6BYTE_PACKET_NUMBER), |
| 2360 expected_error, QUIC_INVALID_RST_STREAM_DATA); | 2397 expected_error, QUIC_INVALID_RST_STREAM_DATA); |
| 2361 } | 2398 } |
| 2362 } | 2399 } |
| 2363 | 2400 |
| 2364 TEST_P(QuicFramerTest, ConnectionCloseFrame) { | 2401 TEST_P(QuicFramerTest, ConnectionCloseFrame) { |
| 2365 // clang-format off | 2402 // clang-format off |
| 2366 unsigned char packet[] = { | 2403 unsigned char packet[] = { |
| (...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2405 0x0d, 0x00, | 2442 0x0d, 0x00, |
| 2406 // error details | 2443 // error details |
| 2407 'b', 'e', 'c', 'a', | 2444 'b', 'e', 'c', 'a', |
| 2408 'u', 's', 'e', ' ', | 2445 'u', 's', 'e', ' ', |
| 2409 'I', ' ', 'c', 'a', | 2446 'I', ' ', 'c', 'a', |
| 2410 'n', | 2447 'n', |
| 2411 }; | 2448 }; |
| 2412 // clang-format on | 2449 // clang-format on |
| 2413 | 2450 |
| 2414 QuicEncryptedPacket encrypted( | 2451 QuicEncryptedPacket encrypted( |
| 2415 AsChars(FLAGS_quic_restart_flag_quic_big_endian_connection_id | 2452 AsChars( |
| 2416 ? packet_cid_be | 2453 QuicUtils::IsConnectionIdWireFormatBigEndian(framer_.perspective()) |
| 2417 : packet), | 2454 ? packet_cid_be |
| 2418 FLAGS_quic_restart_flag_quic_big_endian_connection_id | 2455 : packet), |
| 2456 QuicUtils::IsConnectionIdWireFormatBigEndian(framer_.perspective()) |
| 2419 ? arraysize(packet_cid_be) | 2457 ? arraysize(packet_cid_be) |
| 2420 : arraysize(packet), | 2458 : arraysize(packet), |
| 2421 false); | 2459 false); |
| 2422 EXPECT_TRUE(framer_.ProcessPacket(encrypted)); | 2460 EXPECT_TRUE(framer_.ProcessPacket(encrypted)); |
| 2423 | 2461 |
| 2424 EXPECT_EQ(QUIC_NO_ERROR, framer_.error()); | 2462 EXPECT_EQ(QUIC_NO_ERROR, framer_.error()); |
| 2425 ASSERT_TRUE(visitor_.header_.get()); | 2463 ASSERT_TRUE(visitor_.header_.get()); |
| 2426 EXPECT_TRUE(CheckDecryption(encrypted, !kIncludeVersion, | 2464 EXPECT_TRUE(CheckDecryption(encrypted, !kIncludeVersion, |
| 2427 !kIncludeDiversificationNonce)); | 2465 !kIncludeDiversificationNonce)); |
| 2428 | 2466 |
| 2429 EXPECT_EQ(0u, visitor_.stream_frames_.size()); | 2467 EXPECT_EQ(0u, visitor_.stream_frames_.size()); |
| 2430 | 2468 |
| 2431 EXPECT_EQ(0x11, visitor_.connection_close_frame_.error_code); | 2469 EXPECT_EQ(0x11, visitor_.connection_close_frame_.error_code); |
| 2432 EXPECT_EQ("because I can", visitor_.connection_close_frame_.error_details); | 2470 EXPECT_EQ("because I can", visitor_.connection_close_frame_.error_details); |
| 2433 | 2471 |
| 2434 ASSERT_EQ(0u, visitor_.ack_frames_.size()); | 2472 ASSERT_EQ(0u, visitor_.ack_frames_.size()); |
| 2435 | 2473 |
| 2436 // Now test framing boundaries. | 2474 // Now test framing boundaries. |
| 2437 for (size_t i = kQuicFrameTypeSize; | 2475 for (size_t i = kQuicFrameTypeSize; |
| 2438 i < QuicFramer::GetMinConnectionCloseFrameSize(); ++i) { | 2476 i < QuicFramer::GetMinConnectionCloseFrameSize(); ++i) { |
| 2439 string expected_error; | 2477 string expected_error; |
| 2440 if (i < kQuicFrameTypeSize + kQuicErrorCodeSize) { | 2478 if (i < kQuicFrameTypeSize + kQuicErrorCodeSize) { |
| 2441 expected_error = "Unable to read connection close error code."; | 2479 expected_error = "Unable to read connection close error code."; |
| 2442 } else { | 2480 } else { |
| 2443 expected_error = "Unable to read connection close error details."; | 2481 expected_error = "Unable to read connection close error details."; |
| 2444 } | 2482 } |
| 2445 CheckProcessingFails( | 2483 CheckProcessingFails( |
| 2446 FLAGS_quic_restart_flag_quic_big_endian_connection_id ? packet_cid_be | 2484 QuicUtils::IsConnectionIdWireFormatBigEndian(framer_.perspective()) |
| 2447 : packet, | 2485 ? packet_cid_be |
| 2486 : packet, |
| 2448 i + GetPacketHeaderSize(framer_.version(), PACKET_8BYTE_CONNECTION_ID, | 2487 i + GetPacketHeaderSize(framer_.version(), PACKET_8BYTE_CONNECTION_ID, |
| 2449 !kIncludeVersion, !kIncludeDiversificationNonce, | 2488 !kIncludeVersion, !kIncludeDiversificationNonce, |
| 2450 PACKET_6BYTE_PACKET_NUMBER), | 2489 PACKET_6BYTE_PACKET_NUMBER), |
| 2451 expected_error, QUIC_INVALID_CONNECTION_CLOSE_DATA); | 2490 expected_error, QUIC_INVALID_CONNECTION_CLOSE_DATA); |
| 2452 } | 2491 } |
| 2453 } | 2492 } |
| 2454 | 2493 |
| 2455 TEST_P(QuicFramerTest, GoAwayFrame) { | 2494 TEST_P(QuicFramerTest, GoAwayFrame) { |
| 2456 // clang-format off | 2495 // clang-format off |
| 2457 unsigned char packet[] = { | 2496 unsigned char packet[] = { |
| (...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2498 0x0d, 0x00, | 2537 0x0d, 0x00, |
| 2499 // error details | 2538 // error details |
| 2500 'b', 'e', 'c', 'a', | 2539 'b', 'e', 'c', 'a', |
| 2501 'u', 's', 'e', ' ', | 2540 'u', 's', 'e', ' ', |
| 2502 'I', ' ', 'c', 'a', | 2541 'I', ' ', 'c', 'a', |
| 2503 'n', | 2542 'n', |
| 2504 }; | 2543 }; |
| 2505 // clang-format on | 2544 // clang-format on |
| 2506 | 2545 |
| 2507 QuicEncryptedPacket encrypted( | 2546 QuicEncryptedPacket encrypted( |
| 2508 AsChars(FLAGS_quic_restart_flag_quic_big_endian_connection_id | 2547 AsChars( |
| 2509 ? packet_cid_be | 2548 QuicUtils::IsConnectionIdWireFormatBigEndian(framer_.perspective()) |
| 2510 : packet), | 2549 ? packet_cid_be |
| 2511 FLAGS_quic_restart_flag_quic_big_endian_connection_id | 2550 : packet), |
| 2551 QuicUtils::IsConnectionIdWireFormatBigEndian(framer_.perspective()) |
| 2512 ? arraysize(packet_cid_be) | 2552 ? arraysize(packet_cid_be) |
| 2513 : arraysize(packet), | 2553 : arraysize(packet), |
| 2514 false); | 2554 false); |
| 2515 EXPECT_TRUE(framer_.ProcessPacket(encrypted)); | 2555 EXPECT_TRUE(framer_.ProcessPacket(encrypted)); |
| 2516 | 2556 |
| 2517 EXPECT_EQ(QUIC_NO_ERROR, framer_.error()); | 2557 EXPECT_EQ(QUIC_NO_ERROR, framer_.error()); |
| 2518 ASSERT_TRUE(visitor_.header_.get()); | 2558 ASSERT_TRUE(visitor_.header_.get()); |
| 2519 EXPECT_TRUE(CheckDecryption(encrypted, !kIncludeVersion, | 2559 EXPECT_TRUE(CheckDecryption(encrypted, !kIncludeVersion, |
| 2520 !kIncludeDiversificationNonce)); | 2560 !kIncludeDiversificationNonce)); |
| 2521 | 2561 |
| 2522 EXPECT_EQ(kStreamId, visitor_.goaway_frame_.last_good_stream_id); | 2562 EXPECT_EQ(kStreamId, visitor_.goaway_frame_.last_good_stream_id); |
| 2523 EXPECT_EQ(0x9, visitor_.goaway_frame_.error_code); | 2563 EXPECT_EQ(0x9, visitor_.goaway_frame_.error_code); |
| 2524 EXPECT_EQ("because I can", visitor_.goaway_frame_.reason_phrase); | 2564 EXPECT_EQ("because I can", visitor_.goaway_frame_.reason_phrase); |
| 2525 | 2565 |
| 2526 const size_t reason_size = arraysize("because I can") - 1; | 2566 const size_t reason_size = arraysize("because I can") - 1; |
| 2527 // Now test framing boundaries. | 2567 // Now test framing boundaries. |
| 2528 for (size_t i = kQuicFrameTypeSize; | 2568 for (size_t i = kQuicFrameTypeSize; |
| 2529 i < QuicFramer::GetMinGoAwayFrameSize() + reason_size; ++i) { | 2569 i < QuicFramer::GetMinGoAwayFrameSize() + reason_size; ++i) { |
| 2530 string expected_error; | 2570 string expected_error; |
| 2531 if (i < kQuicFrameTypeSize + kQuicErrorCodeSize) { | 2571 if (i < kQuicFrameTypeSize + kQuicErrorCodeSize) { |
| 2532 expected_error = "Unable to read go away error code."; | 2572 expected_error = "Unable to read go away error code."; |
| 2533 } else if (i < | 2573 } else if (i < |
| 2534 kQuicFrameTypeSize + kQuicErrorCodeSize + kQuicMaxStreamIdSize) { | 2574 kQuicFrameTypeSize + kQuicErrorCodeSize + kQuicMaxStreamIdSize) { |
| 2535 expected_error = "Unable to read last good stream id."; | 2575 expected_error = "Unable to read last good stream id."; |
| 2536 } else { | 2576 } else { |
| 2537 expected_error = "Unable to read goaway reason."; | 2577 expected_error = "Unable to read goaway reason."; |
| 2538 } | 2578 } |
| 2539 CheckProcessingFails( | 2579 CheckProcessingFails( |
| 2540 FLAGS_quic_restart_flag_quic_big_endian_connection_id ? packet_cid_be | 2580 QuicUtils::IsConnectionIdWireFormatBigEndian(framer_.perspective()) |
| 2541 : packet, | 2581 ? packet_cid_be |
| 2582 : packet, |
| 2542 i + GetPacketHeaderSize(framer_.version(), PACKET_8BYTE_CONNECTION_ID, | 2583 i + GetPacketHeaderSize(framer_.version(), PACKET_8BYTE_CONNECTION_ID, |
| 2543 !kIncludeVersion, !kIncludeDiversificationNonce, | 2584 !kIncludeVersion, !kIncludeDiversificationNonce, |
| 2544 PACKET_6BYTE_PACKET_NUMBER), | 2585 PACKET_6BYTE_PACKET_NUMBER), |
| 2545 expected_error, QUIC_INVALID_GOAWAY_DATA); | 2586 expected_error, QUIC_INVALID_GOAWAY_DATA); |
| 2546 } | 2587 } |
| 2547 } | 2588 } |
| 2548 | 2589 |
| 2549 TEST_P(QuicFramerTest, WindowUpdateFrame) { | 2590 TEST_P(QuicFramerTest, WindowUpdateFrame) { |
| 2550 // clang-format off | 2591 // clang-format off |
| 2551 unsigned char packet[] = { | 2592 unsigned char packet[] = { |
| (...skipping 28 matching lines...) Expand all Loading... |
| 2580 0x04, | 2621 0x04, |
| 2581 // stream id | 2622 // stream id |
| 2582 0x04, 0x03, 0x02, 0x01, | 2623 0x04, 0x03, 0x02, 0x01, |
| 2583 // byte offset | 2624 // byte offset |
| 2584 0x54, 0x76, 0x10, 0x32, | 2625 0x54, 0x76, 0x10, 0x32, |
| 2585 0xDC, 0xFE, 0x98, 0xBA, | 2626 0xDC, 0xFE, 0x98, 0xBA, |
| 2586 }; | 2627 }; |
| 2587 // clang-format on | 2628 // clang-format on |
| 2588 | 2629 |
| 2589 QuicEncryptedPacket encrypted( | 2630 QuicEncryptedPacket encrypted( |
| 2590 AsChars(FLAGS_quic_restart_flag_quic_big_endian_connection_id | 2631 AsChars( |
| 2591 ? packet_cid_be | 2632 QuicUtils::IsConnectionIdWireFormatBigEndian(framer_.perspective()) |
| 2592 : packet), | 2633 ? packet_cid_be |
| 2593 FLAGS_quic_restart_flag_quic_big_endian_connection_id | 2634 : packet), |
| 2635 QuicUtils::IsConnectionIdWireFormatBigEndian(framer_.perspective()) |
| 2594 ? arraysize(packet_cid_be) | 2636 ? arraysize(packet_cid_be) |
| 2595 : arraysize(packet), | 2637 : arraysize(packet), |
| 2596 false); | 2638 false); |
| 2597 EXPECT_TRUE(framer_.ProcessPacket(encrypted)); | 2639 EXPECT_TRUE(framer_.ProcessPacket(encrypted)); |
| 2598 | 2640 |
| 2599 EXPECT_EQ(QUIC_NO_ERROR, framer_.error()); | 2641 EXPECT_EQ(QUIC_NO_ERROR, framer_.error()); |
| 2600 ASSERT_TRUE(visitor_.header_.get()); | 2642 ASSERT_TRUE(visitor_.header_.get()); |
| 2601 EXPECT_TRUE(CheckDecryption(encrypted, !kIncludeVersion, | 2643 EXPECT_TRUE(CheckDecryption(encrypted, !kIncludeVersion, |
| 2602 !kIncludeDiversificationNonce)); | 2644 !kIncludeDiversificationNonce)); |
| 2603 | 2645 |
| 2604 EXPECT_EQ(kStreamId, visitor_.window_update_frame_.stream_id); | 2646 EXPECT_EQ(kStreamId, visitor_.window_update_frame_.stream_id); |
| 2605 EXPECT_EQ(kStreamOffset, visitor_.window_update_frame_.byte_offset); | 2647 EXPECT_EQ(kStreamOffset, visitor_.window_update_frame_.byte_offset); |
| 2606 | 2648 |
| 2607 // Now test framing boundaries. | 2649 // Now test framing boundaries. |
| 2608 for (size_t i = kQuicFrameTypeSize; | 2650 for (size_t i = kQuicFrameTypeSize; |
| 2609 i < QuicFramer::GetWindowUpdateFrameSize(); ++i) { | 2651 i < QuicFramer::GetWindowUpdateFrameSize(); ++i) { |
| 2610 string expected_error; | 2652 string expected_error; |
| 2611 if (i < kQuicFrameTypeSize + kQuicMaxStreamIdSize) { | 2653 if (i < kQuicFrameTypeSize + kQuicMaxStreamIdSize) { |
| 2612 expected_error = "Unable to read stream_id."; | 2654 expected_error = "Unable to read stream_id."; |
| 2613 } else { | 2655 } else { |
| 2614 expected_error = "Unable to read window byte_offset."; | 2656 expected_error = "Unable to read window byte_offset."; |
| 2615 } | 2657 } |
| 2616 CheckProcessingFails( | 2658 CheckProcessingFails( |
| 2617 FLAGS_quic_restart_flag_quic_big_endian_connection_id ? packet_cid_be | 2659 QuicUtils::IsConnectionIdWireFormatBigEndian(framer_.perspective()) |
| 2618 : packet, | 2660 ? packet_cid_be |
| 2661 : packet, |
| 2619 i + GetPacketHeaderSize(framer_.version(), PACKET_8BYTE_CONNECTION_ID, | 2662 i + GetPacketHeaderSize(framer_.version(), PACKET_8BYTE_CONNECTION_ID, |
| 2620 !kIncludeVersion, !kIncludeDiversificationNonce, | 2663 !kIncludeVersion, !kIncludeDiversificationNonce, |
| 2621 PACKET_6BYTE_PACKET_NUMBER), | 2664 PACKET_6BYTE_PACKET_NUMBER), |
| 2622 expected_error, QUIC_INVALID_WINDOW_UPDATE_DATA); | 2665 expected_error, QUIC_INVALID_WINDOW_UPDATE_DATA); |
| 2623 } | 2666 } |
| 2624 } | 2667 } |
| 2625 | 2668 |
| 2626 TEST_P(QuicFramerTest, BlockedFrame) { | 2669 TEST_P(QuicFramerTest, BlockedFrame) { |
| 2627 // clang-format off | 2670 // clang-format off |
| 2628 unsigned char packet[] = { | 2671 unsigned char packet[] = { |
| (...skipping 22 matching lines...) Expand all Loading... |
| 2651 0x34, 0x12, | 2694 0x34, 0x12, |
| 2652 | 2695 |
| 2653 // frame type (blocked frame) | 2696 // frame type (blocked frame) |
| 2654 0x05, | 2697 0x05, |
| 2655 // stream id | 2698 // stream id |
| 2656 0x04, 0x03, 0x02, 0x01, | 2699 0x04, 0x03, 0x02, 0x01, |
| 2657 }; | 2700 }; |
| 2658 // clang-format on | 2701 // clang-format on |
| 2659 | 2702 |
| 2660 QuicEncryptedPacket encrypted( | 2703 QuicEncryptedPacket encrypted( |
| 2661 AsChars(FLAGS_quic_restart_flag_quic_big_endian_connection_id | 2704 AsChars( |
| 2662 ? packet_cid_be | 2705 QuicUtils::IsConnectionIdWireFormatBigEndian(framer_.perspective()) |
| 2663 : packet), | 2706 ? packet_cid_be |
| 2664 FLAGS_quic_restart_flag_quic_big_endian_connection_id | 2707 : packet), |
| 2708 QuicUtils::IsConnectionIdWireFormatBigEndian(framer_.perspective()) |
| 2665 ? arraysize(packet_cid_be) | 2709 ? arraysize(packet_cid_be) |
| 2666 : arraysize(packet), | 2710 : arraysize(packet), |
| 2667 false); | 2711 false); |
| 2668 EXPECT_TRUE(framer_.ProcessPacket(encrypted)); | 2712 EXPECT_TRUE(framer_.ProcessPacket(encrypted)); |
| 2669 | 2713 |
| 2670 EXPECT_EQ(QUIC_NO_ERROR, framer_.error()); | 2714 EXPECT_EQ(QUIC_NO_ERROR, framer_.error()); |
| 2671 ASSERT_TRUE(visitor_.header_.get()); | 2715 ASSERT_TRUE(visitor_.header_.get()); |
| 2672 EXPECT_TRUE(CheckDecryption(encrypted, !kIncludeVersion, | 2716 EXPECT_TRUE(CheckDecryption(encrypted, !kIncludeVersion, |
| 2673 !kIncludeDiversificationNonce)); | 2717 !kIncludeDiversificationNonce)); |
| 2674 | 2718 |
| 2675 EXPECT_EQ(kStreamId, visitor_.blocked_frame_.stream_id); | 2719 EXPECT_EQ(kStreamId, visitor_.blocked_frame_.stream_id); |
| 2676 | 2720 |
| 2677 // Now test framing boundaries. | 2721 // Now test framing boundaries. |
| 2678 for (size_t i = kQuicFrameTypeSize; i < QuicFramer::GetBlockedFrameSize(); | 2722 for (size_t i = kQuicFrameTypeSize; i < QuicFramer::GetBlockedFrameSize(); |
| 2679 ++i) { | 2723 ++i) { |
| 2680 string expected_error = "Unable to read stream_id."; | 2724 string expected_error = "Unable to read stream_id."; |
| 2681 CheckProcessingFails( | 2725 CheckProcessingFails( |
| 2682 FLAGS_quic_restart_flag_quic_big_endian_connection_id ? packet_cid_be | 2726 QuicUtils::IsConnectionIdWireFormatBigEndian(framer_.perspective()) |
| 2683 : packet, | 2727 ? packet_cid_be |
| 2728 : packet, |
| 2684 i + GetPacketHeaderSize(framer_.version(), PACKET_8BYTE_CONNECTION_ID, | 2729 i + GetPacketHeaderSize(framer_.version(), PACKET_8BYTE_CONNECTION_ID, |
| 2685 !kIncludeVersion, !kIncludeDiversificationNonce, | 2730 !kIncludeVersion, !kIncludeDiversificationNonce, |
| 2686 PACKET_6BYTE_PACKET_NUMBER), | 2731 PACKET_6BYTE_PACKET_NUMBER), |
| 2687 expected_error, QUIC_INVALID_BLOCKED_DATA); | 2732 expected_error, QUIC_INVALID_BLOCKED_DATA); |
| 2688 } | 2733 } |
| 2689 } | 2734 } |
| 2690 | 2735 |
| 2691 TEST_P(QuicFramerTest, PingFrame) { | 2736 TEST_P(QuicFramerTest, PingFrame) { |
| 2692 // clang-format off | 2737 // clang-format off |
| 2693 unsigned char packet[] = { | 2738 unsigned char packet[] = { |
| (...skipping 18 matching lines...) Expand all Loading... |
| 2712 // packet number | 2757 // packet number |
| 2713 0xBC, 0x9A, 0x78, 0x56, | 2758 0xBC, 0x9A, 0x78, 0x56, |
| 2714 0x34, 0x12, | 2759 0x34, 0x12, |
| 2715 | 2760 |
| 2716 // frame type (ping frame) | 2761 // frame type (ping frame) |
| 2717 0x07, | 2762 0x07, |
| 2718 }; | 2763 }; |
| 2719 // clang-format on | 2764 // clang-format on |
| 2720 | 2765 |
| 2721 QuicEncryptedPacket encrypted( | 2766 QuicEncryptedPacket encrypted( |
| 2722 AsChars(FLAGS_quic_restart_flag_quic_big_endian_connection_id | 2767 AsChars( |
| 2723 ? packet_cid_be | 2768 QuicUtils::IsConnectionIdWireFormatBigEndian(framer_.perspective()) |
| 2724 : packet), | 2769 ? packet_cid_be |
| 2725 FLAGS_quic_restart_flag_quic_big_endian_connection_id | 2770 : packet), |
| 2771 QuicUtils::IsConnectionIdWireFormatBigEndian(framer_.perspective()) |
| 2726 ? arraysize(packet_cid_be) | 2772 ? arraysize(packet_cid_be) |
| 2727 : arraysize(packet), | 2773 : arraysize(packet), |
| 2728 false); | 2774 false); |
| 2729 EXPECT_TRUE(framer_.ProcessPacket(encrypted)); | 2775 EXPECT_TRUE(framer_.ProcessPacket(encrypted)); |
| 2730 | 2776 |
| 2731 EXPECT_EQ(QUIC_NO_ERROR, framer_.error()); | 2777 EXPECT_EQ(QUIC_NO_ERROR, framer_.error()); |
| 2732 ASSERT_TRUE(visitor_.header_.get()); | 2778 ASSERT_TRUE(visitor_.header_.get()); |
| 2733 EXPECT_TRUE(CheckDecryption(encrypted, !kIncludeVersion, | 2779 EXPECT_TRUE(CheckDecryption(encrypted, !kIncludeVersion, |
| 2734 !kIncludeDiversificationNonce)); | 2780 !kIncludeDiversificationNonce)); |
| 2735 | 2781 |
| (...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2786 // nonce proof | 2832 // nonce proof |
| 2787 0x89, 0x67, 0x45, 0x23, | 2833 0x89, 0x67, 0x45, 0x23, |
| 2788 0x01, 0xEF, 0xCD, 0xAB, | 2834 0x01, 0xEF, 0xCD, 0xAB, |
| 2789 // rejected packet number | 2835 // rejected packet number |
| 2790 0xBC, 0x9A, 0x78, 0x56, | 2836 0xBC, 0x9A, 0x78, 0x56, |
| 2791 0x34, 0x12, 0x00, 0x00, | 2837 0x34, 0x12, 0x00, 0x00, |
| 2792 }; | 2838 }; |
| 2793 // clang-format on | 2839 // clang-format on |
| 2794 | 2840 |
| 2795 QuicEncryptedPacket encrypted( | 2841 QuicEncryptedPacket encrypted( |
| 2796 AsChars(FLAGS_quic_restart_flag_quic_big_endian_connection_id | 2842 AsChars( |
| 2797 ? packet_cid_be | 2843 QuicUtils::IsConnectionIdWireFormatBigEndian(framer_.perspective()) |
| 2798 : packet), | 2844 ? packet_cid_be |
| 2799 FLAGS_quic_restart_flag_quic_big_endian_connection_id | 2845 : packet), |
| 2846 QuicUtils::IsConnectionIdWireFormatBigEndian(framer_.perspective()) |
| 2800 ? arraysize(packet_cid_be) | 2847 ? arraysize(packet_cid_be) |
| 2801 : arraysize(packet), | 2848 : arraysize(packet), |
| 2802 false); | 2849 false); |
| 2803 EXPECT_TRUE(framer_.ProcessPacket(encrypted)); | 2850 EXPECT_TRUE(framer_.ProcessPacket(encrypted)); |
| 2804 ASSERT_EQ(QUIC_NO_ERROR, framer_.error()); | 2851 ASSERT_EQ(QUIC_NO_ERROR, framer_.error()); |
| 2805 ASSERT_TRUE(visitor_.public_reset_packet_.get()); | 2852 ASSERT_TRUE(visitor_.public_reset_packet_.get()); |
| 2806 EXPECT_EQ(kConnectionId, | 2853 EXPECT_EQ(kConnectionId, |
| 2807 visitor_.public_reset_packet_->public_header.connection_id); | 2854 visitor_.public_reset_packet_->public_header.connection_id); |
| 2808 EXPECT_TRUE(visitor_.public_reset_packet_->public_header.reset_flag); | 2855 EXPECT_TRUE(visitor_.public_reset_packet_->public_header.reset_flag); |
| 2809 EXPECT_FALSE(visitor_.public_reset_packet_->public_header.version_flag); | 2856 EXPECT_FALSE(visitor_.public_reset_packet_->public_header.version_flag); |
| 2810 EXPECT_EQ(kNonceProof, visitor_.public_reset_packet_->nonce_proof); | 2857 EXPECT_EQ(kNonceProof, visitor_.public_reset_packet_->nonce_proof); |
| 2811 EXPECT_EQ(0u, visitor_.public_reset_packet_->rejected_packet_number); | 2858 EXPECT_EQ(0u, visitor_.public_reset_packet_->rejected_packet_number); |
| 2812 EXPECT_EQ( | 2859 EXPECT_EQ( |
| 2813 IpAddressFamily::IP_UNSPEC, | 2860 IpAddressFamily::IP_UNSPEC, |
| 2814 visitor_.public_reset_packet_->client_address.host().address_family()); | 2861 visitor_.public_reset_packet_->client_address.host().address_family()); |
| 2815 | 2862 |
| 2816 // Now test framing boundaries. | 2863 // Now test framing boundaries. |
| 2817 if (!FLAGS_quic_restart_flag_quic_big_endian_connection_id) { | 2864 if (!QuicUtils::IsConnectionIdWireFormatBigEndian(framer_.perspective())) { |
| 2818 for (size_t i = 0; i < arraysize(packet); ++i) { | 2865 for (size_t i = 0; i < arraysize(packet); ++i) { |
| 2819 string expected_error; | 2866 string expected_error; |
| 2820 QUIC_DLOG(INFO) << "iteration: " << i; | 2867 QUIC_DLOG(INFO) << "iteration: " << i; |
| 2821 if (i < kConnectionIdOffset) { | 2868 if (i < kConnectionIdOffset) { |
| 2822 expected_error = "Unable to read public flags."; | 2869 expected_error = "Unable to read public flags."; |
| 2823 CheckProcessingFails(packet, i, expected_error, | 2870 CheckProcessingFails(packet, i, expected_error, |
| 2824 QUIC_INVALID_PACKET_HEADER); | 2871 QUIC_INVALID_PACKET_HEADER); |
| 2825 } else if (i < kPublicResetPacketMessageTagOffset) { | 2872 } else if (i < kPublicResetPacketMessageTagOffset) { |
| 2826 expected_error = "Unable to read ConnectionId."; | 2873 expected_error = "Unable to read ConnectionId."; |
| 2827 CheckProcessingFails(packet, i, expected_error, | 2874 CheckProcessingFails(packet, i, expected_error, |
| (...skipping 76 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2904 // nonce proof | 2951 // nonce proof |
| 2905 0x89, 0x67, 0x45, 0x23, | 2952 0x89, 0x67, 0x45, 0x23, |
| 2906 0x01, 0xEF, 0xCD, 0xAB, | 2953 0x01, 0xEF, 0xCD, 0xAB, |
| 2907 // rejected packet number | 2954 // rejected packet number |
| 2908 0xBC, 0x9A, 0x78, 0x56, | 2955 0xBC, 0x9A, 0x78, 0x56, |
| 2909 0x34, 0x12, 0x00, 0x00, | 2956 0x34, 0x12, 0x00, 0x00, |
| 2910 }; | 2957 }; |
| 2911 // clang-format on | 2958 // clang-format on |
| 2912 | 2959 |
| 2913 QuicEncryptedPacket encrypted( | 2960 QuicEncryptedPacket encrypted( |
| 2914 AsChars(FLAGS_quic_restart_flag_quic_big_endian_connection_id | 2961 AsChars( |
| 2915 ? packet_cid_be | 2962 QuicUtils::IsConnectionIdWireFormatBigEndian(framer_.perspective()) |
| 2916 : packet), | 2963 ? packet_cid_be |
| 2917 FLAGS_quic_restart_flag_quic_big_endian_connection_id | 2964 : packet), |
| 2965 QuicUtils::IsConnectionIdWireFormatBigEndian(framer_.perspective()) |
| 2918 ? arraysize(packet_cid_be) | 2966 ? arraysize(packet_cid_be) |
| 2919 : arraysize(packet), | 2967 : arraysize(packet), |
| 2920 false); | 2968 false); |
| 2921 EXPECT_TRUE(framer_.ProcessPacket(encrypted)); | 2969 EXPECT_TRUE(framer_.ProcessPacket(encrypted)); |
| 2922 ASSERT_EQ(QUIC_NO_ERROR, framer_.error()); | 2970 ASSERT_EQ(QUIC_NO_ERROR, framer_.error()); |
| 2923 ASSERT_TRUE(visitor_.public_reset_packet_.get()); | 2971 ASSERT_TRUE(visitor_.public_reset_packet_.get()); |
| 2924 EXPECT_EQ(kConnectionId, | 2972 EXPECT_EQ(kConnectionId, |
| 2925 visitor_.public_reset_packet_->public_header.connection_id); | 2973 visitor_.public_reset_packet_->public_header.connection_id); |
| 2926 EXPECT_TRUE(visitor_.public_reset_packet_->public_header.reset_flag); | 2974 EXPECT_TRUE(visitor_.public_reset_packet_->public_header.reset_flag); |
| 2927 EXPECT_FALSE(visitor_.public_reset_packet_->public_header.version_flag); | 2975 EXPECT_FALSE(visitor_.public_reset_packet_->public_header.version_flag); |
| 2928 EXPECT_EQ(kNonceProof, visitor_.public_reset_packet_->nonce_proof); | 2976 EXPECT_EQ(kNonceProof, visitor_.public_reset_packet_->nonce_proof); |
| 2929 EXPECT_EQ(0u, visitor_.public_reset_packet_->rejected_packet_number); | 2977 EXPECT_EQ(0u, visitor_.public_reset_packet_->rejected_packet_number); |
| 2930 EXPECT_EQ( | 2978 EXPECT_EQ( |
| 2931 IpAddressFamily::IP_UNSPEC, | 2979 IpAddressFamily::IP_UNSPEC, |
| 2932 visitor_.public_reset_packet_->client_address.host().address_family()); | 2980 visitor_.public_reset_packet_->client_address.host().address_family()); |
| 2933 | 2981 |
| 2934 // Now test framing boundaries. | 2982 // Now test framing boundaries. |
| 2935 if (!FLAGS_quic_restart_flag_quic_big_endian_connection_id) { | 2983 if (!QuicUtils::IsConnectionIdWireFormatBigEndian(framer_.perspective())) { |
| 2936 for (size_t i = 0; i < arraysize(packet); ++i) { | 2984 for (size_t i = 0; i < arraysize(packet); ++i) { |
| 2937 string expected_error; | 2985 string expected_error; |
| 2938 QUIC_DLOG(INFO) << "iteration: " << i; | 2986 QUIC_DLOG(INFO) << "iteration: " << i; |
| 2939 if (i < kConnectionIdOffset) { | 2987 if (i < kConnectionIdOffset) { |
| 2940 expected_error = "Unable to read public flags."; | 2988 expected_error = "Unable to read public flags."; |
| 2941 CheckProcessingFails(packet, i, expected_error, | 2989 CheckProcessingFails(packet, i, expected_error, |
| 2942 QUIC_INVALID_PACKET_HEADER); | 2990 QUIC_INVALID_PACKET_HEADER); |
| 2943 } else if (i < kPublicResetPacketMessageTagOffset) { | 2991 } else if (i < kPublicResetPacketMessageTagOffset) { |
| 2944 expected_error = "Unable to read ConnectionId."; | 2992 expected_error = "Unable to read ConnectionId."; |
| 2945 CheckProcessingFails(packet, i, expected_error, | 2993 CheckProcessingFails(packet, i, expected_error, |
| (...skipping 78 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3024 0x01, 0xEF, 0xCD, 0xAB, | 3072 0x01, 0xEF, 0xCD, 0xAB, |
| 3025 // rejected packet number | 3073 // rejected packet number |
| 3026 0xBC, 0x9A, 0x78, 0x56, | 3074 0xBC, 0x9A, 0x78, 0x56, |
| 3027 0x34, 0x12, 0x00, 0x00, | 3075 0x34, 0x12, 0x00, 0x00, |
| 3028 // trailing junk | 3076 // trailing junk |
| 3029 'j', 'u', 'n', 'k', | 3077 'j', 'u', 'n', 'k', |
| 3030 }; | 3078 }; |
| 3031 // clang-format on | 3079 // clang-format on |
| 3032 | 3080 |
| 3033 string expected_error = "Unable to read reset message."; | 3081 string expected_error = "Unable to read reset message."; |
| 3034 CheckProcessingFails(FLAGS_quic_restart_flag_quic_big_endian_connection_id | 3082 CheckProcessingFails( |
| 3035 ? packet_cid_be | 3083 QuicUtils::IsConnectionIdWireFormatBigEndian(framer_.perspective()) |
| 3036 : packet, | 3084 ? packet_cid_be |
| 3037 FLAGS_quic_restart_flag_quic_big_endian_connection_id | 3085 : packet, |
| 3038 ? arraysize(packet_cid_be) | 3086 QuicUtils::IsConnectionIdWireFormatBigEndian(framer_.perspective()) |
| 3039 : arraysize(packet), | 3087 ? arraysize(packet_cid_be) |
| 3040 expected_error, QUIC_INVALID_PUBLIC_RST_PACKET); | 3088 : arraysize(packet), |
| 3089 expected_error, QUIC_INVALID_PUBLIC_RST_PACKET); |
| 3041 } | 3090 } |
| 3042 | 3091 |
| 3043 TEST_P(QuicFramerTest, PublicResetPacketWithClientAddress) { | 3092 TEST_P(QuicFramerTest, PublicResetPacketWithClientAddress) { |
| 3044 // clang-format off | 3093 // clang-format off |
| 3045 unsigned char packet[] = { | 3094 unsigned char packet[] = { |
| 3046 // public flags (public reset, 8 byte connection_id) | 3095 // public flags (public reset, 8 byte connection_id) |
| 3047 0x0A, | 3096 0x0A, |
| 3048 // connection_id | 3097 // connection_id |
| 3049 0x10, 0x32, 0x54, 0x76, | 3098 0x10, 0x32, 0x54, 0x76, |
| 3050 0x98, 0xBA, 0xDC, 0xFE, | 3099 0x98, 0xBA, 0xDC, 0xFE, |
| (...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3104 0xBC, 0x9A, 0x78, 0x56, | 3153 0xBC, 0x9A, 0x78, 0x56, |
| 3105 0x34, 0x12, 0x00, 0x00, | 3154 0x34, 0x12, 0x00, 0x00, |
| 3106 // client address: 4.31.198.44:443 | 3155 // client address: 4.31.198.44:443 |
| 3107 0x02, 0x00, | 3156 0x02, 0x00, |
| 3108 0x04, 0x1F, 0xC6, 0x2C, | 3157 0x04, 0x1F, 0xC6, 0x2C, |
| 3109 0xBB, 0x01, | 3158 0xBB, 0x01, |
| 3110 }; | 3159 }; |
| 3111 // clang-format on | 3160 // clang-format on |
| 3112 | 3161 |
| 3113 QuicEncryptedPacket encrypted( | 3162 QuicEncryptedPacket encrypted( |
| 3114 AsChars(FLAGS_quic_restart_flag_quic_big_endian_connection_id | 3163 AsChars( |
| 3115 ? packet_cid_be | 3164 QuicUtils::IsConnectionIdWireFormatBigEndian(framer_.perspective()) |
| 3116 : packet), | 3165 ? packet_cid_be |
| 3117 FLAGS_quic_restart_flag_quic_big_endian_connection_id | 3166 : packet), |
| 3167 QuicUtils::IsConnectionIdWireFormatBigEndian(framer_.perspective()) |
| 3118 ? arraysize(packet_cid_be) | 3168 ? arraysize(packet_cid_be) |
| 3119 : arraysize(packet), | 3169 : arraysize(packet), |
| 3120 false); | 3170 false); |
| 3121 EXPECT_TRUE(framer_.ProcessPacket(encrypted)); | 3171 EXPECT_TRUE(framer_.ProcessPacket(encrypted)); |
| 3122 ASSERT_EQ(QUIC_NO_ERROR, framer_.error()); | 3172 ASSERT_EQ(QUIC_NO_ERROR, framer_.error()); |
| 3123 ASSERT_TRUE(visitor_.public_reset_packet_.get()); | 3173 ASSERT_TRUE(visitor_.public_reset_packet_.get()); |
| 3124 EXPECT_EQ(kConnectionId, | 3174 EXPECT_EQ(kConnectionId, |
| 3125 visitor_.public_reset_packet_->public_header.connection_id); | 3175 visitor_.public_reset_packet_->public_header.connection_id); |
| 3126 EXPECT_TRUE(visitor_.public_reset_packet_->public_header.reset_flag); | 3176 EXPECT_TRUE(visitor_.public_reset_packet_->public_header.reset_flag); |
| 3127 EXPECT_FALSE(visitor_.public_reset_packet_->public_header.version_flag); | 3177 EXPECT_FALSE(visitor_.public_reset_packet_->public_header.version_flag); |
| 3128 EXPECT_EQ(kNonceProof, visitor_.public_reset_packet_->nonce_proof); | 3178 EXPECT_EQ(kNonceProof, visitor_.public_reset_packet_->nonce_proof); |
| 3129 EXPECT_EQ(0u, visitor_.public_reset_packet_->rejected_packet_number); | 3179 EXPECT_EQ(0u, visitor_.public_reset_packet_->rejected_packet_number); |
| 3130 EXPECT_EQ("4.31.198.44", | 3180 EXPECT_EQ("4.31.198.44", |
| 3131 visitor_.public_reset_packet_->client_address.host().ToString()); | 3181 visitor_.public_reset_packet_->client_address.host().ToString()); |
| 3132 EXPECT_EQ(443, visitor_.public_reset_packet_->client_address.port()); | 3182 EXPECT_EQ(443, visitor_.public_reset_packet_->client_address.port()); |
| 3133 | 3183 |
| 3134 // Now test framing boundaries. | 3184 // Now test framing boundaries. |
| 3135 if (!FLAGS_quic_restart_flag_quic_big_endian_connection_id) { | 3185 if (!QuicUtils::IsConnectionIdWireFormatBigEndian(framer_.perspective())) { |
| 3136 for (size_t i = 0; i < arraysize(packet); ++i) { | 3186 for (size_t i = 0; i < arraysize(packet); ++i) { |
| 3137 string expected_error; | 3187 string expected_error; |
| 3138 QUIC_DLOG(INFO) << "iteration: " << i; | 3188 QUIC_DLOG(INFO) << "iteration: " << i; |
| 3139 if (i < kConnectionIdOffset) { | 3189 if (i < kConnectionIdOffset) { |
| 3140 expected_error = "Unable to read public flags."; | 3190 expected_error = "Unable to read public flags."; |
| 3141 CheckProcessingFails(packet, i, expected_error, | 3191 CheckProcessingFails(packet, i, expected_error, |
| 3142 QUIC_INVALID_PACKET_HEADER); | 3192 QUIC_INVALID_PACKET_HEADER); |
| 3143 } else if (i < kPublicResetPacketMessageTagOffset) { | 3193 } else if (i < kPublicResetPacketMessageTagOffset) { |
| 3144 expected_error = "Unable to read ConnectionId."; | 3194 expected_error = "Unable to read ConnectionId."; |
| 3145 CheckProcessingFails(packet, i, expected_error, | 3195 CheckProcessingFails(packet, i, expected_error, |
| (...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3192 0xFE, 0xDC, 0xBA, 0x98, 0x76, 0x54, 0x32, 0x10, | 3242 0xFE, 0xDC, 0xBA, 0x98, 0x76, 0x54, 0x32, 0x10, |
| 3193 // version tag | 3243 // version tag |
| 3194 'Q', '0', GetQuicVersionDigitTens(), GetQuicVersionDigitOnes(), | 3244 'Q', '0', GetQuicVersionDigitTens(), GetQuicVersionDigitOnes(), |
| 3195 'Q', '2', '.', '0', | 3245 'Q', '2', '.', '0', |
| 3196 }; | 3246 }; |
| 3197 // clang-format on | 3247 // clang-format on |
| 3198 | 3248 |
| 3199 QuicFramerPeer::SetPerspective(&framer_, Perspective::IS_CLIENT); | 3249 QuicFramerPeer::SetPerspective(&framer_, Perspective::IS_CLIENT); |
| 3200 | 3250 |
| 3201 QuicEncryptedPacket encrypted( | 3251 QuicEncryptedPacket encrypted( |
| 3202 AsChars(FLAGS_quic_restart_flag_quic_big_endian_connection_id | 3252 AsChars( |
| 3203 ? packet_cid_be | 3253 QuicUtils::IsConnectionIdWireFormatBigEndian(framer_.perspective()) |
| 3204 : packet), | 3254 ? packet_cid_be |
| 3205 FLAGS_quic_restart_flag_quic_big_endian_connection_id | 3255 : packet), |
| 3256 QuicUtils::IsConnectionIdWireFormatBigEndian(framer_.perspective()) |
| 3206 ? arraysize(packet_cid_be) | 3257 ? arraysize(packet_cid_be) |
| 3207 : arraysize(packet), | 3258 : arraysize(packet), |
| 3208 false); | 3259 false); |
| 3209 EXPECT_TRUE(framer_.ProcessPacket(encrypted)); | 3260 EXPECT_TRUE(framer_.ProcessPacket(encrypted)); |
| 3210 ASSERT_EQ(QUIC_NO_ERROR, framer_.error()); | 3261 ASSERT_EQ(QUIC_NO_ERROR, framer_.error()); |
| 3211 ASSERT_TRUE(visitor_.version_negotiation_packet_.get()); | 3262 ASSERT_TRUE(visitor_.version_negotiation_packet_.get()); |
| 3212 EXPECT_EQ(2u, visitor_.version_negotiation_packet_->versions.size()); | 3263 EXPECT_EQ(2u, visitor_.version_negotiation_packet_->versions.size()); |
| 3213 EXPECT_EQ(GetParam(), visitor_.version_negotiation_packet_->versions[0]); | 3264 EXPECT_EQ(GetParam(), visitor_.version_negotiation_packet_->versions[0]); |
| 3214 | 3265 |
| 3215 for (size_t i = 0; i <= kPublicFlagsSize + PACKET_8BYTE_CONNECTION_ID; ++i) { | 3266 for (size_t i = 0; i <= kPublicFlagsSize + PACKET_8BYTE_CONNECTION_ID; ++i) { |
| 3216 string expected_error; | 3267 string expected_error; |
| 3217 QuicErrorCode error_code = QUIC_INVALID_PACKET_HEADER; | 3268 QuicErrorCode error_code = QUIC_INVALID_PACKET_HEADER; |
| 3218 if (i < kConnectionIdOffset) { | 3269 if (i < kConnectionIdOffset) { |
| 3219 expected_error = "Unable to read public flags."; | 3270 expected_error = "Unable to read public flags."; |
| 3220 } else if (i < kVersionOffset) { | 3271 } else if (i < kVersionOffset) { |
| 3221 expected_error = "Unable to read ConnectionId."; | 3272 expected_error = "Unable to read ConnectionId."; |
| 3222 } else { | 3273 } else { |
| 3223 expected_error = "Unable to read supported version in negotiation."; | 3274 expected_error = "Unable to read supported version in negotiation."; |
| 3224 error_code = QUIC_INVALID_VERSION_NEGOTIATION_PACKET; | 3275 error_code = QUIC_INVALID_VERSION_NEGOTIATION_PACKET; |
| 3225 } | 3276 } |
| 3226 CheckProcessingFails(FLAGS_quic_restart_flag_quic_big_endian_connection_id | 3277 CheckProcessingFails( |
| 3227 ? packet_cid_be | 3278 QuicUtils::IsConnectionIdWireFormatBigEndian(framer_.perspective()) |
| 3228 : packet, | 3279 ? packet_cid_be |
| 3229 i, expected_error, error_code); | 3280 : packet, |
| 3281 i, expected_error, error_code); |
| 3230 } | 3282 } |
| 3231 } | 3283 } |
| 3232 | 3284 |
| 3233 TEST_P(QuicFramerTest, OldVersionNegotiationPacket) { | 3285 TEST_P(QuicFramerTest, OldVersionNegotiationPacket) { |
| 3234 // clang-format off | 3286 // clang-format off |
| 3235 unsigned char packet[] = { | 3287 unsigned char packet[] = { |
| 3236 // public flags (version, 8 byte connection_id) | 3288 // public flags (version, 8 byte connection_id) |
| 3237 0x3D, | 3289 0x3D, |
| 3238 // connection_id | 3290 // connection_id |
| 3239 0x10, 0x32, 0x54, 0x76, | 3291 0x10, 0x32, 0x54, 0x76, |
| (...skipping 10 matching lines...) Expand all Loading... |
| 3250 0xFE, 0xDC, 0xBA, 0x98, 0x76, 0x54, 0x32, 0x10, | 3302 0xFE, 0xDC, 0xBA, 0x98, 0x76, 0x54, 0x32, 0x10, |
| 3251 // version tag | 3303 // version tag |
| 3252 'Q', '0', GetQuicVersionDigitTens(), GetQuicVersionDigitOnes(), | 3304 'Q', '0', GetQuicVersionDigitTens(), GetQuicVersionDigitOnes(), |
| 3253 'Q', '2', '.', '0', | 3305 'Q', '2', '.', '0', |
| 3254 }; | 3306 }; |
| 3255 // clang-format on | 3307 // clang-format on |
| 3256 | 3308 |
| 3257 QuicFramerPeer::SetPerspective(&framer_, Perspective::IS_CLIENT); | 3309 QuicFramerPeer::SetPerspective(&framer_, Perspective::IS_CLIENT); |
| 3258 | 3310 |
| 3259 QuicEncryptedPacket encrypted( | 3311 QuicEncryptedPacket encrypted( |
| 3260 AsChars(FLAGS_quic_restart_flag_quic_big_endian_connection_id | 3312 AsChars( |
| 3261 ? packet_cid_be | 3313 QuicUtils::IsConnectionIdWireFormatBigEndian(framer_.perspective()) |
| 3262 : packet), | 3314 ? packet_cid_be |
| 3263 FLAGS_quic_restart_flag_quic_big_endian_connection_id | 3315 : packet), |
| 3316 QuicUtils::IsConnectionIdWireFormatBigEndian(framer_.perspective()) |
| 3264 ? arraysize(packet_cid_be) | 3317 ? arraysize(packet_cid_be) |
| 3265 : arraysize(packet), | 3318 : arraysize(packet), |
| 3266 false); | 3319 false); |
| 3267 EXPECT_TRUE(framer_.ProcessPacket(encrypted)); | 3320 EXPECT_TRUE(framer_.ProcessPacket(encrypted)); |
| 3268 ASSERT_EQ(QUIC_NO_ERROR, framer_.error()); | 3321 ASSERT_EQ(QUIC_NO_ERROR, framer_.error()); |
| 3269 ASSERT_TRUE(visitor_.version_negotiation_packet_.get()); | 3322 ASSERT_TRUE(visitor_.version_negotiation_packet_.get()); |
| 3270 EXPECT_EQ(2u, visitor_.version_negotiation_packet_->versions.size()); | 3323 EXPECT_EQ(2u, visitor_.version_negotiation_packet_->versions.size()); |
| 3271 EXPECT_EQ(GetParam(), visitor_.version_negotiation_packet_->versions[0]); | 3324 EXPECT_EQ(GetParam(), visitor_.version_negotiation_packet_->versions[0]); |
| 3272 | 3325 |
| 3273 for (size_t i = 0; i <= kPublicFlagsSize + PACKET_8BYTE_CONNECTION_ID; ++i) { | 3326 for (size_t i = 0; i <= kPublicFlagsSize + PACKET_8BYTE_CONNECTION_ID; ++i) { |
| 3274 string expected_error; | 3327 string expected_error; |
| 3275 QuicErrorCode error_code = QUIC_INVALID_PACKET_HEADER; | 3328 QuicErrorCode error_code = QUIC_INVALID_PACKET_HEADER; |
| 3276 if (i < kConnectionIdOffset) { | 3329 if (i < kConnectionIdOffset) { |
| 3277 expected_error = "Unable to read public flags."; | 3330 expected_error = "Unable to read public flags."; |
| 3278 } else if (i < kVersionOffset) { | 3331 } else if (i < kVersionOffset) { |
| 3279 expected_error = "Unable to read ConnectionId."; | 3332 expected_error = "Unable to read ConnectionId."; |
| 3280 } else { | 3333 } else { |
| 3281 expected_error = "Unable to read supported version in negotiation."; | 3334 expected_error = "Unable to read supported version in negotiation."; |
| 3282 error_code = QUIC_INVALID_VERSION_NEGOTIATION_PACKET; | 3335 error_code = QUIC_INVALID_VERSION_NEGOTIATION_PACKET; |
| 3283 } | 3336 } |
| 3284 CheckProcessingFails(FLAGS_quic_restart_flag_quic_big_endian_connection_id | 3337 CheckProcessingFails( |
| 3285 ? packet_cid_be | 3338 QuicUtils::IsConnectionIdWireFormatBigEndian(framer_.perspective()) |
| 3286 : packet, | 3339 ? packet_cid_be |
| 3287 i, expected_error, error_code); | 3340 : packet, |
| 3341 i, expected_error, error_code); |
| 3288 } | 3342 } |
| 3289 } | 3343 } |
| 3290 | 3344 |
| 3291 TEST_P(QuicFramerTest, BuildPaddingFramePacket) { | 3345 TEST_P(QuicFramerTest, BuildPaddingFramePacket) { |
| 3292 QuicPacketHeader header; | 3346 QuicPacketHeader header; |
| 3293 header.public_header.connection_id = kConnectionId; | 3347 header.public_header.connection_id = kConnectionId; |
| 3294 header.public_header.reset_flag = false; | 3348 header.public_header.reset_flag = false; |
| 3295 header.public_header.version_flag = false; | 3349 header.public_header.version_flag = false; |
| 3296 header.packet_number = kPacketNumber; | 3350 header.packet_number = kPacketNumber; |
| 3297 | 3351 |
| (...skipping 26 matching lines...) Expand all Loading... |
| 3324 | 3378 |
| 3325 // frame type (padding frame) | 3379 // frame type (padding frame) |
| 3326 0x00, | 3380 0x00, |
| 3327 0x00, 0x00, 0x00, 0x00 | 3381 0x00, 0x00, 0x00, 0x00 |
| 3328 }; | 3382 }; |
| 3329 // clang-format on | 3383 // clang-format on |
| 3330 | 3384 |
| 3331 uint64_t header_size = GetPacketHeaderSize( | 3385 uint64_t header_size = GetPacketHeaderSize( |
| 3332 framer_.version(), PACKET_8BYTE_CONNECTION_ID, !kIncludeVersion, | 3386 framer_.version(), PACKET_8BYTE_CONNECTION_ID, !kIncludeVersion, |
| 3333 !kIncludeDiversificationNonce, PACKET_6BYTE_PACKET_NUMBER); | 3387 !kIncludeDiversificationNonce, PACKET_6BYTE_PACKET_NUMBER); |
| 3334 memset((FLAGS_quic_restart_flag_quic_big_endian_connection_id ? packet_cid_be | 3388 memset((QuicUtils::IsConnectionIdWireFormatBigEndian(framer_.perspective()) |
| 3335 : packet) + | 3389 ? packet_cid_be |
| 3390 : packet) + |
| 3336 header_size + 1, | 3391 header_size + 1, |
| 3337 0x00, kMaxPacketSize - header_size - 1); | 3392 0x00, kMaxPacketSize - header_size - 1); |
| 3338 | 3393 |
| 3339 std::unique_ptr<QuicPacket> data(BuildDataPacket(header, frames)); | 3394 std::unique_ptr<QuicPacket> data(BuildDataPacket(header, frames)); |
| 3340 ASSERT_TRUE(data != nullptr); | 3395 ASSERT_TRUE(data != nullptr); |
| 3341 | 3396 |
| 3342 test::CompareCharArraysWithHexError( | 3397 test::CompareCharArraysWithHexError( |
| 3343 "constructed packet", data->data(), data->length(), | 3398 "constructed packet", data->data(), data->length(), |
| 3344 AsChars(FLAGS_quic_restart_flag_quic_big_endian_connection_id | 3399 AsChars( |
| 3345 ? packet_cid_be | 3400 QuicUtils::IsConnectionIdWireFormatBigEndian(framer_.perspective()) |
| 3346 : packet), | 3401 ? packet_cid_be |
| 3347 FLAGS_quic_restart_flag_quic_big_endian_connection_id | 3402 : packet), |
| 3403 QuicUtils::IsConnectionIdWireFormatBigEndian(framer_.perspective()) |
| 3348 ? arraysize(packet_cid_be) | 3404 ? arraysize(packet_cid_be) |
| 3349 : arraysize(packet)); | 3405 : arraysize(packet)); |
| 3350 } | 3406 } |
| 3351 | 3407 |
| 3352 TEST_P(QuicFramerTest, BuildStreamFramePacketWithNewPaddingFrame) { | 3408 TEST_P(QuicFramerTest, BuildStreamFramePacketWithNewPaddingFrame) { |
| 3353 if (framer_.version() <= QUIC_VERSION_37) { | 3409 if (framer_.version() <= QUIC_VERSION_37) { |
| 3354 return; | 3410 return; |
| 3355 } | 3411 } |
| 3356 QuicPacketHeader header; | 3412 QuicPacketHeader header; |
| 3357 header.public_header.connection_id = kConnectionId; | 3413 header.public_header.connection_id = kConnectionId; |
| (...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3422 // paddings | 3478 // paddings |
| 3423 0x00, 0x00, | 3479 0x00, 0x00, |
| 3424 }; | 3480 }; |
| 3425 // clang-format on | 3481 // clang-format on |
| 3426 | 3482 |
| 3427 std::unique_ptr<QuicPacket> data(BuildDataPacket(header, frames)); | 3483 std::unique_ptr<QuicPacket> data(BuildDataPacket(header, frames)); |
| 3428 ASSERT_TRUE(data != nullptr); | 3484 ASSERT_TRUE(data != nullptr); |
| 3429 | 3485 |
| 3430 test::CompareCharArraysWithHexError( | 3486 test::CompareCharArraysWithHexError( |
| 3431 "constructed packet", data->data(), data->length(), | 3487 "constructed packet", data->data(), data->length(), |
| 3432 AsChars(FLAGS_quic_restart_flag_quic_big_endian_connection_id | 3488 AsChars( |
| 3433 ? packet_cid_be | 3489 QuicUtils::IsConnectionIdWireFormatBigEndian(framer_.perspective()) |
| 3434 : packet), | 3490 ? packet_cid_be |
| 3435 FLAGS_quic_restart_flag_quic_big_endian_connection_id | 3491 : packet), |
| 3492 QuicUtils::IsConnectionIdWireFormatBigEndian(framer_.perspective()) |
| 3436 ? arraysize(packet_cid_be) | 3493 ? arraysize(packet_cid_be) |
| 3437 : arraysize(packet)); | 3494 : arraysize(packet)); |
| 3438 } | 3495 } |
| 3439 | 3496 |
| 3440 TEST_P(QuicFramerTest, Build4ByteSequenceNumberPaddingFramePacket) { | 3497 TEST_P(QuicFramerTest, Build4ByteSequenceNumberPaddingFramePacket) { |
| 3441 QuicPacketHeader header; | 3498 QuicPacketHeader header; |
| 3442 header.public_header.connection_id = kConnectionId; | 3499 header.public_header.connection_id = kConnectionId; |
| 3443 header.public_header.reset_flag = false; | 3500 header.public_header.reset_flag = false; |
| 3444 header.public_header.version_flag = false; | 3501 header.public_header.version_flag = false; |
| 3445 header.public_header.packet_number_length = PACKET_4BYTE_PACKET_NUMBER; | 3502 header.public_header.packet_number_length = PACKET_4BYTE_PACKET_NUMBER; |
| (...skipping 26 matching lines...) Expand all Loading... |
| 3472 | 3529 |
| 3473 // frame type (padding frame) | 3530 // frame type (padding frame) |
| 3474 0x00, | 3531 0x00, |
| 3475 0x00, 0x00, 0x00, 0x00 | 3532 0x00, 0x00, 0x00, 0x00 |
| 3476 }; | 3533 }; |
| 3477 // clang-format on | 3534 // clang-format on |
| 3478 | 3535 |
| 3479 uint64_t header_size = GetPacketHeaderSize( | 3536 uint64_t header_size = GetPacketHeaderSize( |
| 3480 framer_.version(), PACKET_8BYTE_CONNECTION_ID, !kIncludeVersion, | 3537 framer_.version(), PACKET_8BYTE_CONNECTION_ID, !kIncludeVersion, |
| 3481 !kIncludeDiversificationNonce, PACKET_4BYTE_PACKET_NUMBER); | 3538 !kIncludeDiversificationNonce, PACKET_4BYTE_PACKET_NUMBER); |
| 3482 memset((FLAGS_quic_restart_flag_quic_big_endian_connection_id ? packet_cid_be | 3539 memset((QuicUtils::IsConnectionIdWireFormatBigEndian(framer_.perspective()) |
| 3483 : packet) + | 3540 ? packet_cid_be |
| 3541 : packet) + |
| 3484 header_size + 1, | 3542 header_size + 1, |
| 3485 0x00, kMaxPacketSize - header_size - 1); | 3543 0x00, kMaxPacketSize - header_size - 1); |
| 3486 | 3544 |
| 3487 std::unique_ptr<QuicPacket> data(BuildDataPacket(header, frames)); | 3545 std::unique_ptr<QuicPacket> data(BuildDataPacket(header, frames)); |
| 3488 ASSERT_TRUE(data != nullptr); | 3546 ASSERT_TRUE(data != nullptr); |
| 3489 | 3547 |
| 3490 test::CompareCharArraysWithHexError( | 3548 test::CompareCharArraysWithHexError( |
| 3491 "constructed packet", data->data(), data->length(), | 3549 "constructed packet", data->data(), data->length(), |
| 3492 AsChars(FLAGS_quic_restart_flag_quic_big_endian_connection_id | 3550 AsChars( |
| 3493 ? packet_cid_be | 3551 QuicUtils::IsConnectionIdWireFormatBigEndian(framer_.perspective()) |
| 3494 : packet), | 3552 ? packet_cid_be |
| 3495 FLAGS_quic_restart_flag_quic_big_endian_connection_id | 3553 : packet), |
| 3554 QuicUtils::IsConnectionIdWireFormatBigEndian(framer_.perspective()) |
| 3496 ? arraysize(packet_cid_be) | 3555 ? arraysize(packet_cid_be) |
| 3497 : arraysize(packet)); | 3556 : arraysize(packet)); |
| 3498 } | 3557 } |
| 3499 | 3558 |
| 3500 TEST_P(QuicFramerTest, Build2ByteSequenceNumberPaddingFramePacket) { | 3559 TEST_P(QuicFramerTest, Build2ByteSequenceNumberPaddingFramePacket) { |
| 3501 QuicPacketHeader header; | 3560 QuicPacketHeader header; |
| 3502 header.public_header.connection_id = kConnectionId; | 3561 header.public_header.connection_id = kConnectionId; |
| 3503 header.public_header.reset_flag = false; | 3562 header.public_header.reset_flag = false; |
| 3504 header.public_header.version_flag = false; | 3563 header.public_header.version_flag = false; |
| 3505 header.public_header.packet_number_length = PACKET_2BYTE_PACKET_NUMBER; | 3564 header.public_header.packet_number_length = PACKET_2BYTE_PACKET_NUMBER; |
| (...skipping 26 matching lines...) Expand all Loading... |
| 3532 | 3591 |
| 3533 // frame type (padding frame) | 3592 // frame type (padding frame) |
| 3534 0x00, | 3593 0x00, |
| 3535 0x00, 0x00, 0x00, 0x00 | 3594 0x00, 0x00, 0x00, 0x00 |
| 3536 }; | 3595 }; |
| 3537 // clang-format on | 3596 // clang-format on |
| 3538 | 3597 |
| 3539 uint64_t header_size = GetPacketHeaderSize( | 3598 uint64_t header_size = GetPacketHeaderSize( |
| 3540 framer_.version(), PACKET_8BYTE_CONNECTION_ID, !kIncludeVersion, | 3599 framer_.version(), PACKET_8BYTE_CONNECTION_ID, !kIncludeVersion, |
| 3541 !kIncludeDiversificationNonce, PACKET_2BYTE_PACKET_NUMBER); | 3600 !kIncludeDiversificationNonce, PACKET_2BYTE_PACKET_NUMBER); |
| 3542 memset((FLAGS_quic_restart_flag_quic_big_endian_connection_id ? packet_cid_be | 3601 memset((QuicUtils::IsConnectionIdWireFormatBigEndian(framer_.perspective()) |
| 3543 : packet) + | 3602 ? packet_cid_be |
| 3603 : packet) + |
| 3544 header_size + 1, | 3604 header_size + 1, |
| 3545 0x00, kMaxPacketSize - header_size - 1); | 3605 0x00, kMaxPacketSize - header_size - 1); |
| 3546 | 3606 |
| 3547 std::unique_ptr<QuicPacket> data(BuildDataPacket(header, frames)); | 3607 std::unique_ptr<QuicPacket> data(BuildDataPacket(header, frames)); |
| 3548 ASSERT_TRUE(data != nullptr); | 3608 ASSERT_TRUE(data != nullptr); |
| 3549 | 3609 |
| 3550 test::CompareCharArraysWithHexError( | 3610 test::CompareCharArraysWithHexError( |
| 3551 "constructed packet", data->data(), data->length(), | 3611 "constructed packet", data->data(), data->length(), |
| 3552 AsChars(FLAGS_quic_restart_flag_quic_big_endian_connection_id | 3612 AsChars( |
| 3553 ? packet_cid_be | 3613 QuicUtils::IsConnectionIdWireFormatBigEndian(framer_.perspective()) |
| 3554 : packet), | 3614 ? packet_cid_be |
| 3555 FLAGS_quic_restart_flag_quic_big_endian_connection_id | 3615 : packet), |
| 3616 QuicUtils::IsConnectionIdWireFormatBigEndian(framer_.perspective()) |
| 3556 ? arraysize(packet_cid_be) | 3617 ? arraysize(packet_cid_be) |
| 3557 : arraysize(packet)); | 3618 : arraysize(packet)); |
| 3558 } | 3619 } |
| 3559 | 3620 |
| 3560 TEST_P(QuicFramerTest, Build1ByteSequenceNumberPaddingFramePacket) { | 3621 TEST_P(QuicFramerTest, Build1ByteSequenceNumberPaddingFramePacket) { |
| 3561 QuicPacketHeader header; | 3622 QuicPacketHeader header; |
| 3562 header.public_header.connection_id = kConnectionId; | 3623 header.public_header.connection_id = kConnectionId; |
| 3563 header.public_header.reset_flag = false; | 3624 header.public_header.reset_flag = false; |
| 3564 header.public_header.version_flag = false; | 3625 header.public_header.version_flag = false; |
| 3565 header.public_header.packet_number_length = PACKET_1BYTE_PACKET_NUMBER; | 3626 header.public_header.packet_number_length = PACKET_1BYTE_PACKET_NUMBER; |
| (...skipping 26 matching lines...) Expand all Loading... |
| 3592 | 3653 |
| 3593 // frame type (padding frame) | 3654 // frame type (padding frame) |
| 3594 0x00, | 3655 0x00, |
| 3595 0x00, 0x00, 0x00, 0x00 | 3656 0x00, 0x00, 0x00, 0x00 |
| 3596 }; | 3657 }; |
| 3597 // clang-format on | 3658 // clang-format on |
| 3598 | 3659 |
| 3599 uint64_t header_size = GetPacketHeaderSize( | 3660 uint64_t header_size = GetPacketHeaderSize( |
| 3600 framer_.version(), PACKET_8BYTE_CONNECTION_ID, !kIncludeVersion, | 3661 framer_.version(), PACKET_8BYTE_CONNECTION_ID, !kIncludeVersion, |
| 3601 !kIncludeDiversificationNonce, PACKET_1BYTE_PACKET_NUMBER); | 3662 !kIncludeDiversificationNonce, PACKET_1BYTE_PACKET_NUMBER); |
| 3602 memset((FLAGS_quic_restart_flag_quic_big_endian_connection_id ? packet_cid_be | 3663 memset((QuicUtils::IsConnectionIdWireFormatBigEndian(framer_.perspective()) |
| 3603 : packet) + | 3664 ? packet_cid_be |
| 3665 : packet) + |
| 3604 header_size + 1, | 3666 header_size + 1, |
| 3605 0x00, kMaxPacketSize - header_size - 1); | 3667 0x00, kMaxPacketSize - header_size - 1); |
| 3606 | 3668 |
| 3607 std::unique_ptr<QuicPacket> data(BuildDataPacket(header, frames)); | 3669 std::unique_ptr<QuicPacket> data(BuildDataPacket(header, frames)); |
| 3608 ASSERT_TRUE(data != nullptr); | 3670 ASSERT_TRUE(data != nullptr); |
| 3609 | 3671 |
| 3610 test::CompareCharArraysWithHexError( | 3672 test::CompareCharArraysWithHexError( |
| 3611 "constructed packet", data->data(), data->length(), | 3673 "constructed packet", data->data(), data->length(), |
| 3612 AsChars(FLAGS_quic_restart_flag_quic_big_endian_connection_id | 3674 AsChars( |
| 3613 ? packet_cid_be | 3675 QuicUtils::IsConnectionIdWireFormatBigEndian(framer_.perspective()) |
| 3614 : packet), | 3676 ? packet_cid_be |
| 3615 FLAGS_quic_restart_flag_quic_big_endian_connection_id | 3677 : packet), |
| 3678 QuicUtils::IsConnectionIdWireFormatBigEndian(framer_.perspective()) |
| 3616 ? arraysize(packet_cid_be) | 3679 ? arraysize(packet_cid_be) |
| 3617 : arraysize(packet)); | 3680 : arraysize(packet)); |
| 3618 } | 3681 } |
| 3619 | 3682 |
| 3620 TEST_P(QuicFramerTest, BuildStreamFramePacket) { | 3683 TEST_P(QuicFramerTest, BuildStreamFramePacket) { |
| 3621 QuicPacketHeader header; | 3684 QuicPacketHeader header; |
| 3622 header.public_header.connection_id = kConnectionId; | 3685 header.public_header.connection_id = kConnectionId; |
| 3623 header.public_header.reset_flag = false; | 3686 header.public_header.reset_flag = false; |
| 3624 header.public_header.version_flag = false; | 3687 header.public_header.version_flag = false; |
| 3625 header.packet_number = kPacketNumber; | 3688 header.packet_number = kPacketNumber; |
| (...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3674 'o', ' ', 'w', 'o', | 3737 'o', ' ', 'w', 'o', |
| 3675 'r', 'l', 'd', '!', | 3738 'r', 'l', 'd', '!', |
| 3676 }; | 3739 }; |
| 3677 // clang-format on | 3740 // clang-format on |
| 3678 | 3741 |
| 3679 std::unique_ptr<QuicPacket> data(BuildDataPacket(header, frames)); | 3742 std::unique_ptr<QuicPacket> data(BuildDataPacket(header, frames)); |
| 3680 ASSERT_TRUE(data != nullptr); | 3743 ASSERT_TRUE(data != nullptr); |
| 3681 | 3744 |
| 3682 test::CompareCharArraysWithHexError( | 3745 test::CompareCharArraysWithHexError( |
| 3683 "constructed packet", data->data(), data->length(), | 3746 "constructed packet", data->data(), data->length(), |
| 3684 AsChars(FLAGS_quic_restart_flag_quic_big_endian_connection_id | 3747 AsChars( |
| 3685 ? packet_cid_be | 3748 QuicUtils::IsConnectionIdWireFormatBigEndian(framer_.perspective()) |
| 3686 : packet), | 3749 ? packet_cid_be |
| 3687 FLAGS_quic_restart_flag_quic_big_endian_connection_id | 3750 : packet), |
| 3751 QuicUtils::IsConnectionIdWireFormatBigEndian(framer_.perspective()) |
| 3688 ? arraysize(packet_cid_be) | 3752 ? arraysize(packet_cid_be) |
| 3689 : arraysize(packet)); | 3753 : arraysize(packet)); |
| 3690 } | 3754 } |
| 3691 | 3755 |
| 3692 TEST_P(QuicFramerTest, BuildStreamFramePacketWithVersionFlag) { | 3756 TEST_P(QuicFramerTest, BuildStreamFramePacketWithVersionFlag) { |
| 3693 QuicPacketHeader header; | 3757 QuicPacketHeader header; |
| 3694 header.public_header.connection_id = kConnectionId; | 3758 header.public_header.connection_id = kConnectionId; |
| 3695 header.public_header.reset_flag = false; | 3759 header.public_header.reset_flag = false; |
| 3696 header.public_header.version_flag = true; | 3760 header.public_header.version_flag = true; |
| 3697 header.packet_number = kPacketNumber; | 3761 header.packet_number = kPacketNumber; |
| (...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3743 'h', 'e', 'l', 'l', 'o', ' ', 'w', 'o', 'r', 'l', 'd', '!', | 3807 'h', 'e', 'l', 'l', 'o', ' ', 'w', 'o', 'r', 'l', 'd', '!', |
| 3744 }; | 3808 }; |
| 3745 // clang-format on | 3809 // clang-format on |
| 3746 | 3810 |
| 3747 QuicFramerPeer::SetPerspective(&framer_, Perspective::IS_CLIENT); | 3811 QuicFramerPeer::SetPerspective(&framer_, Perspective::IS_CLIENT); |
| 3748 std::unique_ptr<QuicPacket> data(BuildDataPacket(header, frames)); | 3812 std::unique_ptr<QuicPacket> data(BuildDataPacket(header, frames)); |
| 3749 ASSERT_TRUE(data != nullptr); | 3813 ASSERT_TRUE(data != nullptr); |
| 3750 | 3814 |
| 3751 test::CompareCharArraysWithHexError( | 3815 test::CompareCharArraysWithHexError( |
| 3752 "constructed packet", data->data(), data->length(), | 3816 "constructed packet", data->data(), data->length(), |
| 3753 AsChars(FLAGS_quic_restart_flag_quic_big_endian_connection_id | 3817 AsChars( |
| 3754 ? packet_cid_be | 3818 QuicUtils::IsConnectionIdWireFormatBigEndian(framer_.perspective()) |
| 3755 : packet), | 3819 ? packet_cid_be |
| 3756 FLAGS_quic_restart_flag_quic_big_endian_connection_id | 3820 : packet), |
| 3821 QuicUtils::IsConnectionIdWireFormatBigEndian(framer_.perspective()) |
| 3757 ? arraysize(packet_cid_be) | 3822 ? arraysize(packet_cid_be) |
| 3758 : arraysize(packet)); | 3823 : arraysize(packet)); |
| 3759 } | 3824 } |
| 3760 | 3825 |
| 3761 TEST_P(QuicFramerTest, BuildVersionNegotiationPacket) { | 3826 TEST_P(QuicFramerTest, BuildVersionNegotiationPacket) { |
| 3762 // clang-format off | 3827 // clang-format off |
| 3763 unsigned char packet[] = { | 3828 unsigned char packet[] = { |
| 3764 // public flags (version, 8 byte connection_id) | 3829 // public flags (version, 8 byte connection_id) |
| 3765 0x0D, | 3830 0x0D, |
| 3766 // connection_id | 3831 // connection_id |
| (...skipping 11 matching lines...) Expand all Loading... |
| 3778 'Q', '0', GetQuicVersionDigitTens(), GetQuicVersionDigitOnes(), | 3843 'Q', '0', GetQuicVersionDigitTens(), GetQuicVersionDigitOnes(), |
| 3779 }; | 3844 }; |
| 3780 // clang-format on | 3845 // clang-format on |
| 3781 | 3846 |
| 3782 QuicConnectionId connection_id = kConnectionId; | 3847 QuicConnectionId connection_id = kConnectionId; |
| 3783 std::unique_ptr<QuicEncryptedPacket> data( | 3848 std::unique_ptr<QuicEncryptedPacket> data( |
| 3784 framer_.BuildVersionNegotiationPacket(connection_id, | 3849 framer_.BuildVersionNegotiationPacket(connection_id, |
| 3785 SupportedVersions(GetParam()))); | 3850 SupportedVersions(GetParam()))); |
| 3786 test::CompareCharArraysWithHexError( | 3851 test::CompareCharArraysWithHexError( |
| 3787 "constructed packet", data->data(), data->length(), | 3852 "constructed packet", data->data(), data->length(), |
| 3788 AsChars(FLAGS_quic_restart_flag_quic_big_endian_connection_id | 3853 AsChars( |
| 3789 ? packet_cid_be | 3854 QuicUtils::IsConnectionIdWireFormatBigEndian(framer_.perspective()) |
| 3790 : packet), | 3855 ? packet_cid_be |
| 3791 FLAGS_quic_restart_flag_quic_big_endian_connection_id | 3856 : packet), |
| 3857 QuicUtils::IsConnectionIdWireFormatBigEndian(framer_.perspective()) |
| 3792 ? arraysize(packet_cid_be) | 3858 ? arraysize(packet_cid_be) |
| 3793 : arraysize(packet)); | 3859 : arraysize(packet)); |
| 3794 } | 3860 } |
| 3795 | 3861 |
| 3796 TEST_P(QuicFramerTest, BuildAckFramePacketOneAckBlock) { | 3862 TEST_P(QuicFramerTest, BuildAckFramePacketOneAckBlock) { |
| 3797 QuicPacketHeader header; | 3863 QuicPacketHeader header; |
| 3798 header.public_header.connection_id = kConnectionId; | 3864 header.public_header.connection_id = kConnectionId; |
| 3799 header.public_header.reset_flag = false; | 3865 header.public_header.reset_flag = false; |
| 3800 header.public_header.version_flag = false; | 3866 header.public_header.version_flag = false; |
| 3801 header.packet_number = kPacketNumber; | 3867 header.packet_number = kPacketNumber; |
| (...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3850 // num timestamps. | 3916 // num timestamps. |
| 3851 0x00, | 3917 0x00, |
| 3852 }; | 3918 }; |
| 3853 // clang-format on | 3919 // clang-format on |
| 3854 | 3920 |
| 3855 std::unique_ptr<QuicPacket> data(BuildDataPacket(header, frames)); | 3921 std::unique_ptr<QuicPacket> data(BuildDataPacket(header, frames)); |
| 3856 ASSERT_TRUE(data != nullptr); | 3922 ASSERT_TRUE(data != nullptr); |
| 3857 | 3923 |
| 3858 test::CompareCharArraysWithHexError( | 3924 test::CompareCharArraysWithHexError( |
| 3859 "constructed packet", data->data(), data->length(), | 3925 "constructed packet", data->data(), data->length(), |
| 3860 AsChars(FLAGS_quic_restart_flag_quic_big_endian_connection_id | 3926 AsChars( |
| 3861 ? packet_cid_be | 3927 QuicUtils::IsConnectionIdWireFormatBigEndian(framer_.perspective()) |
| 3862 : packet), | 3928 ? packet_cid_be |
| 3863 FLAGS_quic_restart_flag_quic_big_endian_connection_id | 3929 : packet), |
| 3930 QuicUtils::IsConnectionIdWireFormatBigEndian(framer_.perspective()) |
| 3864 ? arraysize(packet_cid_be) | 3931 ? arraysize(packet_cid_be) |
| 3865 : arraysize(packet)); | 3932 : arraysize(packet)); |
| 3866 } | 3933 } |
| 3867 | 3934 |
| 3868 TEST_P(QuicFramerTest, BuildAckFramePacketMultipleAckBlocks) { | 3935 TEST_P(QuicFramerTest, BuildAckFramePacketMultipleAckBlocks) { |
| 3869 QuicPacketHeader header; | 3936 QuicPacketHeader header; |
| 3870 header.public_header.connection_id = kConnectionId; | 3937 header.public_header.connection_id = kConnectionId; |
| 3871 header.public_header.reset_flag = false; | 3938 header.public_header.reset_flag = false; |
| 3872 header.public_header.version_flag = false; | 3939 header.public_header.version_flag = false; |
| 3873 header.packet_number = kPacketNumber; | 3940 header.packet_number = kPacketNumber; |
| (...skipping 87 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3961 // num timestamps. | 4028 // num timestamps. |
| 3962 0x00, | 4029 0x00, |
| 3963 }; | 4030 }; |
| 3964 // clang-format on | 4031 // clang-format on |
| 3965 | 4032 |
| 3966 std::unique_ptr<QuicPacket> data(BuildDataPacket(header, frames)); | 4033 std::unique_ptr<QuicPacket> data(BuildDataPacket(header, frames)); |
| 3967 ASSERT_TRUE(data != nullptr); | 4034 ASSERT_TRUE(data != nullptr); |
| 3968 | 4035 |
| 3969 test::CompareCharArraysWithHexError( | 4036 test::CompareCharArraysWithHexError( |
| 3970 "constructed packet", data->data(), data->length(), | 4037 "constructed packet", data->data(), data->length(), |
| 3971 AsChars(FLAGS_quic_restart_flag_quic_big_endian_connection_id | 4038 AsChars( |
| 3972 ? packet_cid_be | 4039 QuicUtils::IsConnectionIdWireFormatBigEndian(framer_.perspective()) |
| 3973 : packet), | 4040 ? packet_cid_be |
| 3974 FLAGS_quic_restart_flag_quic_big_endian_connection_id | 4041 : packet), |
| 4042 QuicUtils::IsConnectionIdWireFormatBigEndian(framer_.perspective()) |
| 3975 ? arraysize(packet_cid_be) | 4043 ? arraysize(packet_cid_be) |
| 3976 : arraysize(packet)); | 4044 : arraysize(packet)); |
| 3977 } | 4045 } |
| 3978 | 4046 |
| 3979 TEST_P(QuicFramerTest, BuildAckFramePacketMaxAckBlocks) { | 4047 TEST_P(QuicFramerTest, BuildAckFramePacketMaxAckBlocks) { |
| 3980 QuicPacketHeader header; | 4048 QuicPacketHeader header; |
| 3981 header.public_header.connection_id = kConnectionId; | 4049 header.public_header.connection_id = kConnectionId; |
| 3982 header.public_header.reset_flag = false; | 4050 header.public_header.reset_flag = false; |
| 3983 header.public_header.version_flag = false; | 4051 header.public_header.version_flag = false; |
| 3984 header.packet_number = kPacketNumber; | 4052 header.packet_number = kPacketNumber; |
| (...skipping 196 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4181 // num timestamps. | 4249 // num timestamps. |
| 4182 0x00, | 4250 0x00, |
| 4183 }; | 4251 }; |
| 4184 // clang-format on | 4252 // clang-format on |
| 4185 | 4253 |
| 4186 std::unique_ptr<QuicPacket> data(BuildDataPacket(header, frames)); | 4254 std::unique_ptr<QuicPacket> data(BuildDataPacket(header, frames)); |
| 4187 ASSERT_TRUE(data != nullptr); | 4255 ASSERT_TRUE(data != nullptr); |
| 4188 | 4256 |
| 4189 test::CompareCharArraysWithHexError( | 4257 test::CompareCharArraysWithHexError( |
| 4190 "constructed packet", data->data(), data->length(), | 4258 "constructed packet", data->data(), data->length(), |
| 4191 AsChars(FLAGS_quic_restart_flag_quic_big_endian_connection_id | 4259 AsChars( |
| 4192 ? packet_cid_be | 4260 QuicUtils::IsConnectionIdWireFormatBigEndian(framer_.perspective()) |
| 4193 : packet), | 4261 ? packet_cid_be |
| 4194 FLAGS_quic_restart_flag_quic_big_endian_connection_id | 4262 : packet), |
| 4263 QuicUtils::IsConnectionIdWireFormatBigEndian(framer_.perspective()) |
| 4195 ? arraysize(packet_cid_be) | 4264 ? arraysize(packet_cid_be) |
| 4196 : arraysize(packet)); | 4265 : arraysize(packet)); |
| 4197 } | 4266 } |
| 4198 | 4267 |
| 4199 TEST_P(QuicFramerTest, BuildNewStopWaitingPacket) { | 4268 TEST_P(QuicFramerTest, BuildNewStopWaitingPacket) { |
| 4200 QuicPacketHeader header; | 4269 QuicPacketHeader header; |
| 4201 header.public_header.connection_id = kConnectionId; | 4270 header.public_header.connection_id = kConnectionId; |
| 4202 header.public_header.reset_flag = false; | 4271 header.public_header.reset_flag = false; |
| 4203 header.public_header.version_flag = false; | 4272 header.public_header.version_flag = false; |
| 4204 header.packet_number = kPacketNumber; | 4273 header.packet_number = kPacketNumber; |
| (...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4239 0x1C, 0x00, 0x00, 0x00, | 4308 0x1C, 0x00, 0x00, 0x00, |
| 4240 0x00, 0x00, | 4309 0x00, 0x00, |
| 4241 }; | 4310 }; |
| 4242 // clang-format on | 4311 // clang-format on |
| 4243 | 4312 |
| 4244 std::unique_ptr<QuicPacket> data(BuildDataPacket(header, frames)); | 4313 std::unique_ptr<QuicPacket> data(BuildDataPacket(header, frames)); |
| 4245 ASSERT_TRUE(data != nullptr); | 4314 ASSERT_TRUE(data != nullptr); |
| 4246 | 4315 |
| 4247 test::CompareCharArraysWithHexError( | 4316 test::CompareCharArraysWithHexError( |
| 4248 "constructed packet", data->data(), data->length(), | 4317 "constructed packet", data->data(), data->length(), |
| 4249 AsChars(FLAGS_quic_restart_flag_quic_big_endian_connection_id | 4318 AsChars( |
| 4250 ? packet_cid_be | 4319 QuicUtils::IsConnectionIdWireFormatBigEndian(framer_.perspective()) |
| 4251 : packet), | 4320 ? packet_cid_be |
| 4252 FLAGS_quic_restart_flag_quic_big_endian_connection_id | 4321 : packet), |
| 4322 QuicUtils::IsConnectionIdWireFormatBigEndian(framer_.perspective()) |
| 4253 ? arraysize(packet_cid_be) | 4323 ? arraysize(packet_cid_be) |
| 4254 : arraysize(packet)); | 4324 : arraysize(packet)); |
| 4255 } | 4325 } |
| 4256 | 4326 |
| 4257 TEST_P(QuicFramerTest, BuildRstFramePacketQuic) { | 4327 TEST_P(QuicFramerTest, BuildRstFramePacketQuic) { |
| 4258 QuicPacketHeader header; | 4328 QuicPacketHeader header; |
| 4259 header.public_header.connection_id = kConnectionId; | 4329 header.public_header.connection_id = kConnectionId; |
| 4260 header.public_header.reset_flag = false; | 4330 header.public_header.reset_flag = false; |
| 4261 header.public_header.version_flag = false; | 4331 header.public_header.version_flag = false; |
| 4262 header.packet_number = kPacketNumber; | 4332 header.packet_number = kPacketNumber; |
| (...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4309 }; | 4379 }; |
| 4310 // clang-format on | 4380 // clang-format on |
| 4311 | 4381 |
| 4312 QuicFrames frames = {QuicFrame(&rst_frame)}; | 4382 QuicFrames frames = {QuicFrame(&rst_frame)}; |
| 4313 | 4383 |
| 4314 std::unique_ptr<QuicPacket> data(BuildDataPacket(header, frames)); | 4384 std::unique_ptr<QuicPacket> data(BuildDataPacket(header, frames)); |
| 4315 ASSERT_TRUE(data != nullptr); | 4385 ASSERT_TRUE(data != nullptr); |
| 4316 | 4386 |
| 4317 test::CompareCharArraysWithHexError( | 4387 test::CompareCharArraysWithHexError( |
| 4318 "constructed packet", data->data(), data->length(), | 4388 "constructed packet", data->data(), data->length(), |
| 4319 AsChars(FLAGS_quic_restart_flag_quic_big_endian_connection_id | 4389 AsChars( |
| 4320 ? packet_cid_be | 4390 QuicUtils::IsConnectionIdWireFormatBigEndian(framer_.perspective()) |
| 4321 : packet), | 4391 ? packet_cid_be |
| 4322 FLAGS_quic_restart_flag_quic_big_endian_connection_id | 4392 : packet), |
| 4393 QuicUtils::IsConnectionIdWireFormatBigEndian(framer_.perspective()) |
| 4323 ? arraysize(packet_cid_be) | 4394 ? arraysize(packet_cid_be) |
| 4324 : arraysize(packet)); | 4395 : arraysize(packet)); |
| 4325 } | 4396 } |
| 4326 | 4397 |
| 4327 TEST_P(QuicFramerTest, BuildCloseFramePacket) { | 4398 TEST_P(QuicFramerTest, BuildCloseFramePacket) { |
| 4328 QuicPacketHeader header; | 4399 QuicPacketHeader header; |
| 4329 header.public_header.connection_id = kConnectionId; | 4400 header.public_header.connection_id = kConnectionId; |
| 4330 header.public_header.reset_flag = false; | 4401 header.public_header.reset_flag = false; |
| 4331 header.public_header.version_flag = false; | 4402 header.public_header.version_flag = false; |
| 4332 header.packet_number = kPacketNumber; | 4403 header.packet_number = kPacketNumber; |
| (...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4382 'I', ' ', 'c', 'a', | 4453 'I', ' ', 'c', 'a', |
| 4383 'n', | 4454 'n', |
| 4384 }; | 4455 }; |
| 4385 // clang-format on | 4456 // clang-format on |
| 4386 | 4457 |
| 4387 std::unique_ptr<QuicPacket> data(BuildDataPacket(header, frames)); | 4458 std::unique_ptr<QuicPacket> data(BuildDataPacket(header, frames)); |
| 4388 ASSERT_TRUE(data != nullptr); | 4459 ASSERT_TRUE(data != nullptr); |
| 4389 | 4460 |
| 4390 test::CompareCharArraysWithHexError( | 4461 test::CompareCharArraysWithHexError( |
| 4391 "constructed packet", data->data(), data->length(), | 4462 "constructed packet", data->data(), data->length(), |
| 4392 AsChars(FLAGS_quic_restart_flag_quic_big_endian_connection_id | 4463 AsChars( |
| 4393 ? packet_cid_be | 4464 QuicUtils::IsConnectionIdWireFormatBigEndian(framer_.perspective()) |
| 4394 : packet), | 4465 ? packet_cid_be |
| 4395 FLAGS_quic_restart_flag_quic_big_endian_connection_id | 4466 : packet), |
| 4467 QuicUtils::IsConnectionIdWireFormatBigEndian(framer_.perspective()) |
| 4396 ? arraysize(packet_cid_be) | 4468 ? arraysize(packet_cid_be) |
| 4397 : arraysize(packet)); | 4469 : arraysize(packet)); |
| 4398 } | 4470 } |
| 4399 | 4471 |
| 4400 TEST_P(QuicFramerTest, BuildGoAwayPacket) { | 4472 TEST_P(QuicFramerTest, BuildGoAwayPacket) { |
| 4401 QuicPacketHeader header; | 4473 QuicPacketHeader header; |
| 4402 header.public_header.connection_id = kConnectionId; | 4474 header.public_header.connection_id = kConnectionId; |
| 4403 header.public_header.reset_flag = false; | 4475 header.public_header.reset_flag = false; |
| 4404 header.public_header.version_flag = false; | 4476 header.public_header.version_flag = false; |
| 4405 header.packet_number = kPacketNumber; | 4477 header.packet_number = kPacketNumber; |
| (...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4460 'I', ' ', 'c', 'a', | 4532 'I', ' ', 'c', 'a', |
| 4461 'n', | 4533 'n', |
| 4462 }; | 4534 }; |
| 4463 // clang-format on | 4535 // clang-format on |
| 4464 | 4536 |
| 4465 std::unique_ptr<QuicPacket> data(BuildDataPacket(header, frames)); | 4537 std::unique_ptr<QuicPacket> data(BuildDataPacket(header, frames)); |
| 4466 ASSERT_TRUE(data != nullptr); | 4538 ASSERT_TRUE(data != nullptr); |
| 4467 | 4539 |
| 4468 test::CompareCharArraysWithHexError( | 4540 test::CompareCharArraysWithHexError( |
| 4469 "constructed packet", data->data(), data->length(), | 4541 "constructed packet", data->data(), data->length(), |
| 4470 AsChars(FLAGS_quic_restart_flag_quic_big_endian_connection_id | 4542 AsChars( |
| 4471 ? packet_cid_be | 4543 QuicUtils::IsConnectionIdWireFormatBigEndian(framer_.perspective()) |
| 4472 : packet), | 4544 ? packet_cid_be |
| 4473 FLAGS_quic_restart_flag_quic_big_endian_connection_id | 4545 : packet), |
| 4546 QuicUtils::IsConnectionIdWireFormatBigEndian(framer_.perspective()) |
| 4474 ? arraysize(packet_cid_be) | 4547 ? arraysize(packet_cid_be) |
| 4475 : arraysize(packet)); | 4548 : arraysize(packet)); |
| 4476 } | 4549 } |
| 4477 | 4550 |
| 4478 TEST_P(QuicFramerTest, BuildWindowUpdatePacket) { | 4551 TEST_P(QuicFramerTest, BuildWindowUpdatePacket) { |
| 4479 QuicPacketHeader header; | 4552 QuicPacketHeader header; |
| 4480 header.public_header.connection_id = kConnectionId; | 4553 header.public_header.connection_id = kConnectionId; |
| 4481 header.public_header.reset_flag = false; | 4554 header.public_header.reset_flag = false; |
| 4482 header.public_header.version_flag = false; | 4555 header.public_header.version_flag = false; |
| 4483 header.packet_number = kPacketNumber; | 4556 header.packet_number = kPacketNumber; |
| (...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4525 0x88, 0x77, 0x66, 0x55, | 4598 0x88, 0x77, 0x66, 0x55, |
| 4526 0x44, 0x33, 0x22, 0x11, | 4599 0x44, 0x33, 0x22, 0x11, |
| 4527 }; | 4600 }; |
| 4528 // clang-format on | 4601 // clang-format on |
| 4529 | 4602 |
| 4530 std::unique_ptr<QuicPacket> data(BuildDataPacket(header, frames)); | 4603 std::unique_ptr<QuicPacket> data(BuildDataPacket(header, frames)); |
| 4531 ASSERT_TRUE(data != nullptr); | 4604 ASSERT_TRUE(data != nullptr); |
| 4532 | 4605 |
| 4533 test::CompareCharArraysWithHexError( | 4606 test::CompareCharArraysWithHexError( |
| 4534 "constructed packet", data->data(), data->length(), | 4607 "constructed packet", data->data(), data->length(), |
| 4535 AsChars(FLAGS_quic_restart_flag_quic_big_endian_connection_id | 4608 AsChars( |
| 4536 ? packet_cid_be | 4609 QuicUtils::IsConnectionIdWireFormatBigEndian(framer_.perspective()) |
| 4537 : packet), | 4610 ? packet_cid_be |
| 4538 FLAGS_quic_restart_flag_quic_big_endian_connection_id | 4611 : packet), |
| 4612 QuicUtils::IsConnectionIdWireFormatBigEndian(framer_.perspective()) |
| 4539 ? arraysize(packet_cid_be) | 4613 ? arraysize(packet_cid_be) |
| 4540 : arraysize(packet)); | 4614 : arraysize(packet)); |
| 4541 } | 4615 } |
| 4542 | 4616 |
| 4543 TEST_P(QuicFramerTest, BuildBlockedPacket) { | 4617 TEST_P(QuicFramerTest, BuildBlockedPacket) { |
| 4544 QuicPacketHeader header; | 4618 QuicPacketHeader header; |
| 4545 header.public_header.connection_id = kConnectionId; | 4619 header.public_header.connection_id = kConnectionId; |
| 4546 header.public_header.reset_flag = false; | 4620 header.public_header.reset_flag = false; |
| 4547 header.public_header.version_flag = false; | 4621 header.public_header.version_flag = false; |
| 4548 header.packet_number = kPacketNumber; | 4622 header.packet_number = kPacketNumber; |
| (...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4583 // stream id | 4657 // stream id |
| 4584 0x04, 0x03, 0x02, 0x01, | 4658 0x04, 0x03, 0x02, 0x01, |
| 4585 }; | 4659 }; |
| 4586 // clang-format on | 4660 // clang-format on |
| 4587 | 4661 |
| 4588 std::unique_ptr<QuicPacket> data(BuildDataPacket(header, frames)); | 4662 std::unique_ptr<QuicPacket> data(BuildDataPacket(header, frames)); |
| 4589 ASSERT_TRUE(data != nullptr); | 4663 ASSERT_TRUE(data != nullptr); |
| 4590 | 4664 |
| 4591 test::CompareCharArraysWithHexError( | 4665 test::CompareCharArraysWithHexError( |
| 4592 "constructed packet", data->data(), data->length(), | 4666 "constructed packet", data->data(), data->length(), |
| 4593 AsChars(FLAGS_quic_restart_flag_quic_big_endian_connection_id | 4667 AsChars( |
| 4594 ? packet_cid_be | 4668 QuicUtils::IsConnectionIdWireFormatBigEndian(framer_.perspective()) |
| 4595 : packet), | 4669 ? packet_cid_be |
| 4596 FLAGS_quic_restart_flag_quic_big_endian_connection_id | 4670 : packet), |
| 4671 QuicUtils::IsConnectionIdWireFormatBigEndian(framer_.perspective()) |
| 4597 ? arraysize(packet_cid_be) | 4672 ? arraysize(packet_cid_be) |
| 4598 : arraysize(packet)); | 4673 : arraysize(packet)); |
| 4599 } | 4674 } |
| 4600 | 4675 |
| 4601 TEST_P(QuicFramerTest, BuildPingPacket) { | 4676 TEST_P(QuicFramerTest, BuildPingPacket) { |
| 4602 QuicPacketHeader header; | 4677 QuicPacketHeader header; |
| 4603 header.public_header.connection_id = kConnectionId; | 4678 header.public_header.connection_id = kConnectionId; |
| 4604 header.public_header.reset_flag = false; | 4679 header.public_header.reset_flag = false; |
| 4605 header.public_header.version_flag = false; | 4680 header.public_header.version_flag = false; |
| 4606 header.packet_number = kPacketNumber; | 4681 header.packet_number = kPacketNumber; |
| (...skipping 27 matching lines...) Expand all Loading... |
| 4634 // frame type (ping frame) | 4709 // frame type (ping frame) |
| 4635 0x07, | 4710 0x07, |
| 4636 }; | 4711 }; |
| 4637 // clang-format on | 4712 // clang-format on |
| 4638 | 4713 |
| 4639 std::unique_ptr<QuicPacket> data(BuildDataPacket(header, frames)); | 4714 std::unique_ptr<QuicPacket> data(BuildDataPacket(header, frames)); |
| 4640 ASSERT_TRUE(data != nullptr); | 4715 ASSERT_TRUE(data != nullptr); |
| 4641 | 4716 |
| 4642 test::CompareCharArraysWithHexError( | 4717 test::CompareCharArraysWithHexError( |
| 4643 "constructed packet", data->data(), data->length(), | 4718 "constructed packet", data->data(), data->length(), |
| 4644 AsChars(FLAGS_quic_restart_flag_quic_big_endian_connection_id | 4719 AsChars( |
| 4645 ? packet_cid_be | 4720 QuicUtils::IsConnectionIdWireFormatBigEndian(framer_.perspective()) |
| 4646 : packet), | 4721 ? packet_cid_be |
| 4647 FLAGS_quic_restart_flag_quic_big_endian_connection_id | 4722 : packet), |
| 4723 QuicUtils::IsConnectionIdWireFormatBigEndian(framer_.perspective()) |
| 4648 ? arraysize(packet_cid_be) | 4724 ? arraysize(packet_cid_be) |
| 4649 : arraysize(packet)); | 4725 : arraysize(packet)); |
| 4650 } | 4726 } |
| 4651 | 4727 |
| 4652 // Test that the MTU discovery packet is serialized correctly as a PING packet. | 4728 // Test that the MTU discovery packet is serialized correctly as a PING packet. |
| 4653 TEST_P(QuicFramerTest, BuildMtuDiscoveryPacket) { | 4729 TEST_P(QuicFramerTest, BuildMtuDiscoveryPacket) { |
| 4654 QuicPacketHeader header; | 4730 QuicPacketHeader header; |
| 4655 header.public_header.connection_id = kConnectionId; | 4731 header.public_header.connection_id = kConnectionId; |
| 4656 header.public_header.reset_flag = false; | 4732 header.public_header.reset_flag = false; |
| 4657 header.public_header.version_flag = false; | 4733 header.public_header.version_flag = false; |
| (...skipping 28 matching lines...) Expand all Loading... |
| 4686 // frame type (ping frame) | 4762 // frame type (ping frame) |
| 4687 0x07, | 4763 0x07, |
| 4688 }; | 4764 }; |
| 4689 // clang-format on | 4765 // clang-format on |
| 4690 | 4766 |
| 4691 std::unique_ptr<QuicPacket> data(BuildDataPacket(header, frames)); | 4767 std::unique_ptr<QuicPacket> data(BuildDataPacket(header, frames)); |
| 4692 ASSERT_TRUE(data != nullptr); | 4768 ASSERT_TRUE(data != nullptr); |
| 4693 | 4769 |
| 4694 test::CompareCharArraysWithHexError( | 4770 test::CompareCharArraysWithHexError( |
| 4695 "constructed packet", data->data(), data->length(), | 4771 "constructed packet", data->data(), data->length(), |
| 4696 AsChars(FLAGS_quic_restart_flag_quic_big_endian_connection_id | 4772 AsChars( |
| 4697 ? packet_cid_be | 4773 QuicUtils::IsConnectionIdWireFormatBigEndian(framer_.perspective()) |
| 4698 : packet), | 4774 ? packet_cid_be |
| 4699 FLAGS_quic_restart_flag_quic_big_endian_connection_id | 4775 : packet), |
| 4776 QuicUtils::IsConnectionIdWireFormatBigEndian(framer_.perspective()) |
| 4700 ? arraysize(packet_cid_be) | 4777 ? arraysize(packet_cid_be) |
| 4701 : arraysize(packet)); | 4778 : arraysize(packet)); |
| 4702 } | 4779 } |
| 4703 | 4780 |
| 4704 TEST_P(QuicFramerTest, BuildPublicResetPacketOld) { | 4781 TEST_P(QuicFramerTest, BuildPublicResetPacketOld) { |
| 4705 FLAGS_quic_reloadable_flag_quic_use_old_public_reset_packets = true; | 4782 FLAGS_quic_reloadable_flag_quic_use_old_public_reset_packets = true; |
| 4706 QuicPublicResetPacket reset_packet; | 4783 QuicPublicResetPacket reset_packet; |
| 4707 reset_packet.public_header.connection_id = kConnectionId; | 4784 reset_packet.public_header.connection_id = kConnectionId; |
| 4708 reset_packet.public_header.reset_flag = true; | 4785 reset_packet.public_header.reset_flag = true; |
| 4709 reset_packet.public_header.version_flag = false; | 4786 reset_packet.public_header.version_flag = false; |
| (...skipping 89 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4799 0x01, 0xEF, 0xCD, 0xAB, | 4876 0x01, 0xEF, 0xCD, 0xAB, |
| 4800 }; | 4877 }; |
| 4801 // clang-format on | 4878 // clang-format on |
| 4802 | 4879 |
| 4803 std::unique_ptr<QuicEncryptedPacket> data( | 4880 std::unique_ptr<QuicEncryptedPacket> data( |
| 4804 framer_.BuildPublicResetPacket(reset_packet)); | 4881 framer_.BuildPublicResetPacket(reset_packet)); |
| 4805 ASSERT_TRUE(data != nullptr); | 4882 ASSERT_TRUE(data != nullptr); |
| 4806 if (FLAGS_quic_reloadable_flag_quic_remove_packet_number_from_public_reset) { | 4883 if (FLAGS_quic_reloadable_flag_quic_remove_packet_number_from_public_reset) { |
| 4807 test::CompareCharArraysWithHexError( | 4884 test::CompareCharArraysWithHexError( |
| 4808 "constructed packet", data->data(), data->length(), | 4885 "constructed packet", data->data(), data->length(), |
| 4809 AsChars(FLAGS_quic_restart_flag_quic_big_endian_connection_id | 4886 AsChars( |
| 4810 ? packet_no_rejected_packet_number_cid_be | 4887 QuicUtils::IsConnectionIdWireFormatBigEndian(framer_.perspective()) |
| 4811 : packet_no_rejected_packet_number), | 4888 ? packet_no_rejected_packet_number_cid_be |
| 4812 FLAGS_quic_restart_flag_quic_big_endian_connection_id | 4889 : packet_no_rejected_packet_number), |
| 4890 QuicUtils::IsConnectionIdWireFormatBigEndian(framer_.perspective()) |
| 4813 ? arraysize(packet_no_rejected_packet_number_cid_be) | 4891 ? arraysize(packet_no_rejected_packet_number_cid_be) |
| 4814 : arraysize(packet_no_rejected_packet_number)); | 4892 : arraysize(packet_no_rejected_packet_number)); |
| 4815 } else { | 4893 } else { |
| 4816 test::CompareCharArraysWithHexError( | 4894 test::CompareCharArraysWithHexError( |
| 4817 "constructed packet", data->data(), data->length(), | 4895 "constructed packet", data->data(), data->length(), |
| 4818 AsChars(FLAGS_quic_restart_flag_quic_big_endian_connection_id | 4896 AsChars( |
| 4819 ? packet_cid_be | 4897 QuicUtils::IsConnectionIdWireFormatBigEndian(framer_.perspective()) |
| 4820 : packet), | 4898 ? packet_cid_be |
| 4821 FLAGS_quic_restart_flag_quic_big_endian_connection_id | 4899 : packet), |
| 4900 QuicUtils::IsConnectionIdWireFormatBigEndian(framer_.perspective()) |
| 4822 ? arraysize(packet_cid_be) | 4901 ? arraysize(packet_cid_be) |
| 4823 : arraysize(packet)); | 4902 : arraysize(packet)); |
| 4824 } | 4903 } |
| 4825 } | 4904 } |
| 4826 | 4905 |
| 4827 TEST_P(QuicFramerTest, BuildPublicResetPacket) { | 4906 TEST_P(QuicFramerTest, BuildPublicResetPacket) { |
| 4828 FLAGS_quic_reloadable_flag_quic_use_old_public_reset_packets = false; | 4907 FLAGS_quic_reloadable_flag_quic_use_old_public_reset_packets = false; |
| 4829 QuicPublicResetPacket reset_packet; | 4908 QuicPublicResetPacket reset_packet; |
| 4830 reset_packet.public_header.connection_id = kConnectionId; | 4909 reset_packet.public_header.connection_id = kConnectionId; |
| 4831 reset_packet.public_header.reset_flag = true; | 4910 reset_packet.public_header.reset_flag = true; |
| (...skipping 91 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4923 }; | 5002 }; |
| 4924 // clang-format on | 5003 // clang-format on |
| 4925 | 5004 |
| 4926 std::unique_ptr<QuicEncryptedPacket> data( | 5005 std::unique_ptr<QuicEncryptedPacket> data( |
| 4927 framer_.BuildPublicResetPacket(reset_packet)); | 5006 framer_.BuildPublicResetPacket(reset_packet)); |
| 4928 ASSERT_TRUE(data != nullptr); | 5007 ASSERT_TRUE(data != nullptr); |
| 4929 | 5008 |
| 4930 if (FLAGS_quic_reloadable_flag_quic_remove_packet_number_from_public_reset) { | 5009 if (FLAGS_quic_reloadable_flag_quic_remove_packet_number_from_public_reset) { |
| 4931 test::CompareCharArraysWithHexError( | 5010 test::CompareCharArraysWithHexError( |
| 4932 "constructed packet", data->data(), data->length(), | 5011 "constructed packet", data->data(), data->length(), |
| 4933 AsChars(FLAGS_quic_restart_flag_quic_big_endian_connection_id | 5012 AsChars( |
| 4934 ? packet_no_rejected_packet_number_cid_be | 5013 QuicUtils::IsConnectionIdWireFormatBigEndian(framer_.perspective()) |
| 4935 : packet_no_rejected_packet_number), | 5014 ? packet_no_rejected_packet_number_cid_be |
| 4936 FLAGS_quic_restart_flag_quic_big_endian_connection_id | 5015 : packet_no_rejected_packet_number), |
| 5016 QuicUtils::IsConnectionIdWireFormatBigEndian(framer_.perspective()) |
| 4937 ? arraysize(packet_no_rejected_packet_number_cid_be) | 5017 ? arraysize(packet_no_rejected_packet_number_cid_be) |
| 4938 : arraysize(packet_no_rejected_packet_number)); | 5018 : arraysize(packet_no_rejected_packet_number)); |
| 4939 } else { | 5019 } else { |
| 4940 test::CompareCharArraysWithHexError( | 5020 test::CompareCharArraysWithHexError( |
| 4941 "constructed packet", data->data(), data->length(), | 5021 "constructed packet", data->data(), data->length(), |
| 4942 AsChars(FLAGS_quic_restart_flag_quic_big_endian_connection_id | 5022 AsChars( |
| 4943 ? packet_cid_be | 5023 QuicUtils::IsConnectionIdWireFormatBigEndian(framer_.perspective()) |
| 4944 : packet), | 5024 ? packet_cid_be |
| 4945 FLAGS_quic_restart_flag_quic_big_endian_connection_id | 5025 : packet), |
| 5026 QuicUtils::IsConnectionIdWireFormatBigEndian(framer_.perspective()) |
| 4946 ? arraysize(packet_cid_be) | 5027 ? arraysize(packet_cid_be) |
| 4947 : arraysize(packet)); | 5028 : arraysize(packet)); |
| 4948 } | 5029 } |
| 4949 } | 5030 } |
| 4950 | 5031 |
| 4951 TEST_P(QuicFramerTest, BuildPublicResetPacketWithClientAddress) { | 5032 TEST_P(QuicFramerTest, BuildPublicResetPacketWithClientAddress) { |
| 4952 FLAGS_quic_reloadable_flag_quic_use_old_public_reset_packets = false; | 5033 FLAGS_quic_reloadable_flag_quic_use_old_public_reset_packets = false; |
| 4953 QuicPublicResetPacket reset_packet; | 5034 QuicPublicResetPacket reset_packet; |
| 4954 reset_packet.public_header.connection_id = kConnectionId; | 5035 reset_packet.public_header.connection_id = kConnectionId; |
| 4955 reset_packet.public_header.reset_flag = true; | 5036 reset_packet.public_header.reset_flag = true; |
| (...skipping 125 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 5081 }; | 5162 }; |
| 5082 // clang-format on | 5163 // clang-format on |
| 5083 | 5164 |
| 5084 std::unique_ptr<QuicEncryptedPacket> data( | 5165 std::unique_ptr<QuicEncryptedPacket> data( |
| 5085 framer_.BuildPublicResetPacket(reset_packet)); | 5166 framer_.BuildPublicResetPacket(reset_packet)); |
| 5086 ASSERT_TRUE(data != nullptr); | 5167 ASSERT_TRUE(data != nullptr); |
| 5087 | 5168 |
| 5088 if (FLAGS_quic_reloadable_flag_quic_remove_packet_number_from_public_reset) { | 5169 if (FLAGS_quic_reloadable_flag_quic_remove_packet_number_from_public_reset) { |
| 5089 test::CompareCharArraysWithHexError( | 5170 test::CompareCharArraysWithHexError( |
| 5090 "constructed packet", data->data(), data->length(), | 5171 "constructed packet", data->data(), data->length(), |
| 5091 AsChars(FLAGS_quic_restart_flag_quic_big_endian_connection_id | 5172 AsChars( |
| 5092 ? packet_no_rejected_packet_number_cid_be | 5173 QuicUtils::IsConnectionIdWireFormatBigEndian(framer_.perspective()) |
| 5093 : packet_no_rejected_packet_number), | 5174 ? packet_no_rejected_packet_number_cid_be |
| 5175 : packet_no_rejected_packet_number), |
| 5094 | 5176 |
| 5095 FLAGS_quic_restart_flag_quic_big_endian_connection_id | 5177 QuicUtils::IsConnectionIdWireFormatBigEndian(framer_.perspective()) |
| 5096 ? arraysize(packet_no_rejected_packet_number_cid_be) | 5178 ? arraysize(packet_no_rejected_packet_number_cid_be) |
| 5097 : arraysize(packet_no_rejected_packet_number)); | 5179 : arraysize(packet_no_rejected_packet_number)); |
| 5098 } else { | 5180 } else { |
| 5099 test::CompareCharArraysWithHexError( | 5181 test::CompareCharArraysWithHexError( |
| 5100 "constructed packet", data->data(), data->length(), | 5182 "constructed packet", data->data(), data->length(), |
| 5101 AsChars(FLAGS_quic_restart_flag_quic_big_endian_connection_id | 5183 AsChars( |
| 5102 ? packet_cid_be | 5184 QuicUtils::IsConnectionIdWireFormatBigEndian(framer_.perspective()) |
| 5103 : packet), | 5185 ? packet_cid_be |
| 5186 : packet), |
| 5104 | 5187 |
| 5105 FLAGS_quic_restart_flag_quic_big_endian_connection_id | 5188 QuicUtils::IsConnectionIdWireFormatBigEndian(framer_.perspective()) |
| 5106 ? arraysize(packet_cid_be) | 5189 ? arraysize(packet_cid_be) |
| 5107 : arraysize(packet)); | 5190 : arraysize(packet)); |
| 5108 } | 5191 } |
| 5109 } | 5192 } |
| 5110 | 5193 |
| 5111 TEST_P(QuicFramerTest, EncryptPacket) { | 5194 TEST_P(QuicFramerTest, EncryptPacket) { |
| 5112 QuicPacketNumber packet_number = kPacketNumber; | 5195 QuicPacketNumber packet_number = kPacketNumber; |
| 5113 // clang-format off | 5196 // clang-format off |
| 5114 unsigned char packet[] = { | 5197 unsigned char packet[] = { |
| 5115 // public flags (8 byte connection_id) | 5198 // public flags (8 byte connection_id) |
| (...skipping 23 matching lines...) Expand all Loading... |
| 5139 | 5222 |
| 5140 // redundancy | 5223 // redundancy |
| 5141 'a', 'b', 'c', 'd', | 5224 'a', 'b', 'c', 'd', |
| 5142 'e', 'f', 'g', 'h', | 5225 'e', 'f', 'g', 'h', |
| 5143 'i', 'j', 'k', 'l', | 5226 'i', 'j', 'k', 'l', |
| 5144 'm', 'n', 'o', 'p', | 5227 'm', 'n', 'o', 'p', |
| 5145 }; | 5228 }; |
| 5146 // clang-format on | 5229 // clang-format on |
| 5147 | 5230 |
| 5148 std::unique_ptr<QuicPacket> raw(new QuicPacket( | 5231 std::unique_ptr<QuicPacket> raw(new QuicPacket( |
| 5149 AsChars(FLAGS_quic_restart_flag_quic_big_endian_connection_id | 5232 AsChars( |
| 5150 ? packet_cid_be | 5233 QuicUtils::IsConnectionIdWireFormatBigEndian(framer_.perspective()) |
| 5151 : packet), | 5234 ? packet_cid_be |
| 5152 FLAGS_quic_restart_flag_quic_big_endian_connection_id | 5235 : packet), |
| 5236 QuicUtils::IsConnectionIdWireFormatBigEndian(framer_.perspective()) |
| 5153 ? arraysize(packet_cid_be) | 5237 ? arraysize(packet_cid_be) |
| 5154 : arraysize(packet), | 5238 : arraysize(packet), |
| 5155 false, PACKET_8BYTE_CONNECTION_ID, !kIncludeVersion, | 5239 false, PACKET_8BYTE_CONNECTION_ID, !kIncludeVersion, |
| 5156 !kIncludeDiversificationNonce, PACKET_6BYTE_PACKET_NUMBER)); | 5240 !kIncludeDiversificationNonce, PACKET_6BYTE_PACKET_NUMBER)); |
| 5157 char buffer[kMaxPacketSize]; | 5241 char buffer[kMaxPacketSize]; |
| 5158 size_t encrypted_length = framer_.EncryptPayload( | 5242 size_t encrypted_length = framer_.EncryptPayload( |
| 5159 ENCRYPTION_NONE, packet_number, *raw, buffer, kMaxPacketSize); | 5243 ENCRYPTION_NONE, packet_number, *raw, buffer, kMaxPacketSize); |
| 5160 | 5244 |
| 5161 ASSERT_NE(0u, encrypted_length); | 5245 ASSERT_NE(0u, encrypted_length); |
| 5162 EXPECT_TRUE(CheckEncryption(packet_number, raw.get())); | 5246 EXPECT_TRUE(CheckEncryption(packet_number, raw.get())); |
| (...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 5197 | 5281 |
| 5198 // redundancy | 5282 // redundancy |
| 5199 'a', 'b', 'c', 'd', | 5283 'a', 'b', 'c', 'd', |
| 5200 'e', 'f', 'g', 'h', | 5284 'e', 'f', 'g', 'h', |
| 5201 'i', 'j', 'k', 'l', | 5285 'i', 'j', 'k', 'l', |
| 5202 'm', 'n', 'o', 'p', | 5286 'm', 'n', 'o', 'p', |
| 5203 }; | 5287 }; |
| 5204 // clang-format on | 5288 // clang-format on |
| 5205 | 5289 |
| 5206 std::unique_ptr<QuicPacket> raw(new QuicPacket( | 5290 std::unique_ptr<QuicPacket> raw(new QuicPacket( |
| 5207 AsChars(FLAGS_quic_restart_flag_quic_big_endian_connection_id | 5291 AsChars( |
| 5208 ? packet_cid_be | 5292 QuicUtils::IsConnectionIdWireFormatBigEndian(framer_.perspective()) |
| 5209 : packet), | 5293 ? packet_cid_be |
| 5210 FLAGS_quic_restart_flag_quic_big_endian_connection_id | 5294 : packet), |
| 5295 QuicUtils::IsConnectionIdWireFormatBigEndian(framer_.perspective()) |
| 5211 ? arraysize(packet_cid_be) | 5296 ? arraysize(packet_cid_be) |
| 5212 : arraysize(packet), | 5297 : arraysize(packet), |
| 5213 false, PACKET_8BYTE_CONNECTION_ID, kIncludeVersion, | 5298 false, PACKET_8BYTE_CONNECTION_ID, kIncludeVersion, |
| 5214 !kIncludeDiversificationNonce, PACKET_6BYTE_PACKET_NUMBER)); | 5299 !kIncludeDiversificationNonce, PACKET_6BYTE_PACKET_NUMBER)); |
| 5215 char buffer[kMaxPacketSize]; | 5300 char buffer[kMaxPacketSize]; |
| 5216 size_t encrypted_length = framer_.EncryptPayload( | 5301 size_t encrypted_length = framer_.EncryptPayload( |
| 5217 ENCRYPTION_NONE, packet_number, *raw, buffer, kMaxPacketSize); | 5302 ENCRYPTION_NONE, packet_number, *raw, buffer, kMaxPacketSize); |
| 5218 | 5303 |
| 5219 ASSERT_NE(0u, encrypted_length); | 5304 ASSERT_NE(0u, encrypted_length); |
| 5220 EXPECT_TRUE(CheckEncryption(packet_number, raw.get())); | 5305 EXPECT_TRUE(CheckEncryption(packet_number, raw.get())); |
| (...skipping 186 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 5407 EXPECT_CALL(visitor, OnPacket()); | 5492 EXPECT_CALL(visitor, OnPacket()); |
| 5408 EXPECT_CALL(visitor, OnPacketHeader(_)); | 5493 EXPECT_CALL(visitor, OnPacketHeader(_)); |
| 5409 EXPECT_CALL(visitor, OnStreamFrame(_)).WillOnce(Return(false)); | 5494 EXPECT_CALL(visitor, OnStreamFrame(_)).WillOnce(Return(false)); |
| 5410 EXPECT_CALL(visitor, OnAckFrame(_)).Times(0); | 5495 EXPECT_CALL(visitor, OnAckFrame(_)).Times(0); |
| 5411 EXPECT_CALL(visitor, OnPacketComplete()); | 5496 EXPECT_CALL(visitor, OnPacketComplete()); |
| 5412 EXPECT_CALL(visitor, OnUnauthenticatedPublicHeader(_)).WillOnce(Return(true)); | 5497 EXPECT_CALL(visitor, OnUnauthenticatedPublicHeader(_)).WillOnce(Return(true)); |
| 5413 EXPECT_CALL(visitor, OnUnauthenticatedHeader(_)).WillOnce(Return(true)); | 5498 EXPECT_CALL(visitor, OnUnauthenticatedHeader(_)).WillOnce(Return(true)); |
| 5414 EXPECT_CALL(visitor, OnDecryptedPacket(_)); | 5499 EXPECT_CALL(visitor, OnDecryptedPacket(_)); |
| 5415 | 5500 |
| 5416 QuicEncryptedPacket encrypted( | 5501 QuicEncryptedPacket encrypted( |
| 5417 AsChars(FLAGS_quic_restart_flag_quic_big_endian_connection_id | 5502 AsChars( |
| 5418 ? packet_cid_be | 5503 QuicUtils::IsConnectionIdWireFormatBigEndian(framer_.perspective()) |
| 5419 : packet), | 5504 ? packet_cid_be |
| 5420 FLAGS_quic_restart_flag_quic_big_endian_connection_id | 5505 : packet), |
| 5506 QuicUtils::IsConnectionIdWireFormatBigEndian(framer_.perspective()) |
| 5421 ? arraysize(packet_cid_be) | 5507 ? arraysize(packet_cid_be) |
| 5422 : arraysize(packet), | 5508 : arraysize(packet), |
| 5423 false); | 5509 false); |
| 5424 EXPECT_TRUE(framer_.ProcessPacket(encrypted)); | 5510 EXPECT_TRUE(framer_.ProcessPacket(encrypted)); |
| 5425 EXPECT_EQ(QUIC_NO_ERROR, framer_.error()); | 5511 EXPECT_EQ(QUIC_NO_ERROR, framer_.error()); |
| 5426 } | 5512 } |
| 5427 | 5513 |
| 5428 static char kTestString[] = "At least 20 characters."; | 5514 static char kTestString[] = "At least 20 characters."; |
| 5429 static QuicStreamId kTestQuicStreamId = 1; | 5515 static QuicStreamId kTestQuicStreamId = 1; |
| 5430 static bool ExpectedStreamFrame(const QuicStreamFrame& frame) { | 5516 static bool ExpectedStreamFrame(const QuicStreamFrame& frame) { |
| (...skipping 153 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 5584 0xDC, 0xFE, 0x98, 0xBA, | 5670 0xDC, 0xFE, 0x98, 0xBA, |
| 5585 // data length | 5671 // data length |
| 5586 0x0c, 0x00, | 5672 0x0c, 0x00, |
| 5587 // data | 5673 // data |
| 5588 'h', 'e', 'l', 'l', | 5674 'h', 'e', 'l', 'l', |
| 5589 'o', ' ', 'w', 'o', | 5675 'o', ' ', 'w', 'o', |
| 5590 'r', 'l', 'd', '!', | 5676 'r', 'l', 'd', '!', |
| 5591 }; | 5677 }; |
| 5592 // clang-format on | 5678 // clang-format on |
| 5593 | 5679 |
| 5594 QuicFramerFuzzFunc(FLAGS_quic_restart_flag_quic_big_endian_connection_id | 5680 QuicFramerFuzzFunc( |
| 5595 ? packet_cid_be | 5681 QuicUtils::IsConnectionIdWireFormatBigEndian(framer_.perspective()) |
| 5596 : packet, | 5682 ? packet_cid_be |
| 5597 FLAGS_quic_restart_flag_quic_big_endian_connection_id | 5683 : packet, |
| 5598 ? arraysize(packet_cid_be) | 5684 QuicUtils::IsConnectionIdWireFormatBigEndian(framer_.perspective()) |
| 5599 : arraysize(packet)); | 5685 ? arraysize(packet_cid_be) |
| 5686 : arraysize(packet)); |
| 5600 } | 5687 } |
| 5601 | 5688 |
| 5602 } // namespace test | 5689 } // namespace test |
| 5603 } // namespace net | 5690 } // namespace net |
| OLD | NEW |