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

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

Issue 2808893003: Replace quic_restart_flag_quic_big_endian_connection_id with quic_restart_flag_quic_big_endian_conn… (Closed)
Patch Set: Created 3 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « net/quic/core/quic_flags_list.h ('k') | net/quic/core/quic_utils.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "net/quic/core/quic_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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
OLDNEW
« no previous file with comments | « net/quic/core/quic_flags_list.h ('k') | net/quic/core/quic_utils.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698