| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "net/quic/quic_framer.h" | 5 #include "net/quic/quic_framer.h" |
| 6 | 6 |
| 7 #include <algorithm> | 7 #include <algorithm> |
| 8 #include <map> | 8 #include <map> |
| 9 #include <string> | 9 #include <string> |
| 10 #include <vector> | 10 #include <vector> |
| (...skipping 1471 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1482 'h', 'e', 'l', 'l', | 1482 'h', 'e', 'l', 'l', |
| 1483 'o', ' ', 'w', 'o', | 1483 'o', ' ', 'w', 'o', |
| 1484 'r', 'l', 'd', '!', | 1484 'r', 'l', 'd', '!', |
| 1485 }; | 1485 }; |
| 1486 | 1486 |
| 1487 QuicEncryptedPacket encrypted(AsChars(packet), arraysize(packet), false); | 1487 QuicEncryptedPacket encrypted(AsChars(packet), arraysize(packet), false); |
| 1488 EXPECT_TRUE(framer_.ProcessPacket(encrypted)); | 1488 EXPECT_TRUE(framer_.ProcessPacket(encrypted)); |
| 1489 | 1489 |
| 1490 EXPECT_EQ(QUIC_NO_ERROR, framer_.error()); | 1490 EXPECT_EQ(QUIC_NO_ERROR, framer_.error()); |
| 1491 ASSERT_TRUE(visitor_.header_.get()); | 1491 ASSERT_TRUE(visitor_.header_.get()); |
| 1492 EXPECT_TRUE(visitor_.header_.get()->public_header.version_flag); | 1492 EXPECT_TRUE(visitor_.header_->public_header.version_flag); |
| 1493 EXPECT_EQ(GetParam(), visitor_.header_.get()->public_header.versions[0]); | 1493 EXPECT_EQ(GetParam(), visitor_.header_->public_header.versions[0]); |
| 1494 EXPECT_TRUE(CheckDecryption(encrypted, kIncludeVersion)); | 1494 EXPECT_TRUE(CheckDecryption(encrypted, kIncludeVersion)); |
| 1495 | 1495 |
| 1496 ASSERT_EQ(1u, visitor_.stream_frames_.size()); | 1496 ASSERT_EQ(1u, visitor_.stream_frames_.size()); |
| 1497 EXPECT_EQ(0u, visitor_.ack_frames_.size()); | 1497 EXPECT_EQ(0u, visitor_.ack_frames_.size()); |
| 1498 EXPECT_EQ(static_cast<uint64>(0x01020304), | 1498 EXPECT_EQ(static_cast<uint64>(0x01020304), |
| 1499 visitor_.stream_frames_[0]->stream_id); | 1499 visitor_.stream_frames_[0]->stream_id); |
| 1500 EXPECT_TRUE(visitor_.stream_frames_[0]->fin); | 1500 EXPECT_TRUE(visitor_.stream_frames_[0]->fin); |
| 1501 EXPECT_EQ(GG_UINT64_C(0xBA98FEDC32107654), | 1501 EXPECT_EQ(GG_UINT64_C(0xBA98FEDC32107654), |
| 1502 visitor_.stream_frames_[0]->offset); | 1502 visitor_.stream_frames_[0]->offset); |
| 1503 CheckStreamFrameData("hello world!", visitor_.stream_frames_[0]); | 1503 CheckStreamFrameData("hello world!", visitor_.stream_frames_[0]); |
| (...skipping 239 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1743 const size_t kLeastUnackedOffset = kSentEntropyOffset + kQuicEntropyHashSize; | 1743 const size_t kLeastUnackedOffset = kSentEntropyOffset + kQuicEntropyHashSize; |
| 1744 const size_t kReceivedEntropyOffset = kLeastUnackedOffset + | 1744 const size_t kReceivedEntropyOffset = kLeastUnackedOffset + |
| 1745 PACKET_6BYTE_SEQUENCE_NUMBER; | 1745 PACKET_6BYTE_SEQUENCE_NUMBER; |
| 1746 const size_t kLargestObservedOffset = kReceivedEntropyOffset + | 1746 const size_t kLargestObservedOffset = kReceivedEntropyOffset + |
| 1747 kQuicEntropyHashSize; | 1747 kQuicEntropyHashSize; |
| 1748 const size_t kMissingDeltaTimeOffset = kLargestObservedOffset + | 1748 const size_t kMissingDeltaTimeOffset = kLargestObservedOffset + |
| 1749 PACKET_6BYTE_SEQUENCE_NUMBER; | 1749 PACKET_6BYTE_SEQUENCE_NUMBER; |
| 1750 const size_t kNumMissingPacketOffset = kMissingDeltaTimeOffset + | 1750 const size_t kNumMissingPacketOffset = kMissingDeltaTimeOffset + |
| 1751 kQuicDeltaTimeLargestObservedSize; | 1751 kQuicDeltaTimeLargestObservedSize; |
| 1752 const size_t kMissingPacketsOffset = kNumMissingPacketOffset + | 1752 const size_t kMissingPacketsOffset = kNumMissingPacketOffset + |
| 1753 kNumberOfMissingPacketsSize; | 1753 kNumberOfNackRangesSize; |
| 1754 const size_t kMissingPacketsRange = kMissingPacketsOffset + | 1754 const size_t kMissingPacketsRange = kMissingPacketsOffset + |
| 1755 PACKET_1BYTE_SEQUENCE_NUMBER; | 1755 PACKET_1BYTE_SEQUENCE_NUMBER; |
| 1756 const size_t kRevivedPacketsLength = kMissingPacketsRange + | 1756 const size_t kRevivedPacketsLength = kMissingPacketsRange + |
| 1757 PACKET_1BYTE_SEQUENCE_NUMBER; | 1757 PACKET_1BYTE_SEQUENCE_NUMBER; |
| 1758 // Now test framing boundaries | 1758 // Now test framing boundaries |
| 1759 const size_t ack_frame_size = kRevivedPacketsLength + | 1759 const size_t ack_frame_size = kRevivedPacketsLength + |
| 1760 PACKET_1BYTE_SEQUENCE_NUMBER; | 1760 PACKET_1BYTE_SEQUENCE_NUMBER; |
| 1761 for (size_t i = kQuicFrameTypeSize; i < ack_frame_size; ++i) { | 1761 for (size_t i = kQuicFrameTypeSize; i < ack_frame_size; ++i) { |
| 1762 string expected_error; | 1762 string expected_error; |
| 1763 if (i < kLeastUnackedOffset) { | 1763 if (i < kLeastUnackedOffset) { |
| (...skipping 78 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1842 EXPECT_EQ(GG_UINT64_C(0x0123456789ABE), *missing_iter); | 1842 EXPECT_EQ(GG_UINT64_C(0x0123456789ABE), *missing_iter); |
| 1843 | 1843 |
| 1844 const size_t kReceivedEntropyOffset = kQuicFrameTypeSize; | 1844 const size_t kReceivedEntropyOffset = kQuicFrameTypeSize; |
| 1845 const size_t kLargestObservedOffset = kReceivedEntropyOffset + | 1845 const size_t kLargestObservedOffset = kReceivedEntropyOffset + |
| 1846 kQuicEntropyHashSize; | 1846 kQuicEntropyHashSize; |
| 1847 const size_t kMissingDeltaTimeOffset = kLargestObservedOffset + | 1847 const size_t kMissingDeltaTimeOffset = kLargestObservedOffset + |
| 1848 PACKET_6BYTE_SEQUENCE_NUMBER; | 1848 PACKET_6BYTE_SEQUENCE_NUMBER; |
| 1849 const size_t kNumMissingPacketOffset = kMissingDeltaTimeOffset + | 1849 const size_t kNumMissingPacketOffset = kMissingDeltaTimeOffset + |
| 1850 kQuicDeltaTimeLargestObservedSize; | 1850 kQuicDeltaTimeLargestObservedSize; |
| 1851 const size_t kMissingPacketsOffset = kNumMissingPacketOffset + | 1851 const size_t kMissingPacketsOffset = kNumMissingPacketOffset + |
| 1852 kNumberOfMissingPacketsSize; | 1852 kNumberOfNackRangesSize; |
| 1853 const size_t kMissingPacketsRange = kMissingPacketsOffset + | 1853 const size_t kMissingPacketsRange = kMissingPacketsOffset + |
| 1854 PACKET_1BYTE_SEQUENCE_NUMBER; | 1854 PACKET_1BYTE_SEQUENCE_NUMBER; |
| 1855 const size_t kRevivedPacketsLength = kMissingPacketsRange + | 1855 const size_t kRevivedPacketsLength = kMissingPacketsRange + |
| 1856 PACKET_1BYTE_SEQUENCE_NUMBER; | 1856 PACKET_1BYTE_SEQUENCE_NUMBER; |
| 1857 // Now test framing boundaries | 1857 // Now test framing boundaries |
| 1858 const size_t ack_frame_size = kRevivedPacketsLength + | 1858 const size_t ack_frame_size = kRevivedPacketsLength + |
| 1859 PACKET_1BYTE_SEQUENCE_NUMBER; | 1859 PACKET_1BYTE_SEQUENCE_NUMBER; |
| 1860 for (size_t i = kQuicFrameTypeSize; i < ack_frame_size; ++i) { | 1860 for (size_t i = kQuicFrameTypeSize; i < ack_frame_size; ++i) { |
| 1861 string expected_error; | 1861 string expected_error; |
| 1862 if (i < kLargestObservedOffset) { | 1862 if (i < kLargestObservedOffset) { |
| (...skipping 77 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1940 EXPECT_EQ(GG_UINT64_C(0x0123456789ABE), *missing_iter); | 1940 EXPECT_EQ(GG_UINT64_C(0x0123456789ABE), *missing_iter); |
| 1941 | 1941 |
| 1942 const size_t kReceivedEntropyOffset = kQuicFrameTypeSize; | 1942 const size_t kReceivedEntropyOffset = kQuicFrameTypeSize; |
| 1943 const size_t kLargestObservedOffset = kReceivedEntropyOffset + | 1943 const size_t kLargestObservedOffset = kReceivedEntropyOffset + |
| 1944 kQuicEntropyHashSize; | 1944 kQuicEntropyHashSize; |
| 1945 const size_t kMissingDeltaTimeOffset = kLargestObservedOffset + | 1945 const size_t kMissingDeltaTimeOffset = kLargestObservedOffset + |
| 1946 PACKET_6BYTE_SEQUENCE_NUMBER; | 1946 PACKET_6BYTE_SEQUENCE_NUMBER; |
| 1947 const size_t kNumMissingPacketOffset = kMissingDeltaTimeOffset + | 1947 const size_t kNumMissingPacketOffset = kMissingDeltaTimeOffset + |
| 1948 kQuicDeltaTimeLargestObservedSize; | 1948 kQuicDeltaTimeLargestObservedSize; |
| 1949 const size_t kMissingPacketsOffset = kNumMissingPacketOffset + | 1949 const size_t kMissingPacketsOffset = kNumMissingPacketOffset + |
| 1950 kNumberOfMissingPacketsSize; | 1950 kNumberOfNackRangesSize; |
| 1951 const size_t kMissingPacketsRange = kMissingPacketsOffset + | 1951 const size_t kMissingPacketsRange = kMissingPacketsOffset + |
| 1952 PACKET_1BYTE_SEQUENCE_NUMBER; | 1952 PACKET_1BYTE_SEQUENCE_NUMBER; |
| 1953 const size_t kRevivedPacketsLength = kMissingPacketsRange + | 1953 const size_t kRevivedPacketsLength = kMissingPacketsRange + |
| 1954 PACKET_1BYTE_SEQUENCE_NUMBER; | 1954 PACKET_1BYTE_SEQUENCE_NUMBER; |
| 1955 const size_t kRevivedPacketSequenceNumberLength = kRevivedPacketsLength + | 1955 const size_t kRevivedPacketSequenceNumberLength = kRevivedPacketsLength + |
| 1956 PACKET_1BYTE_SEQUENCE_NUMBER; | 1956 PACKET_1BYTE_SEQUENCE_NUMBER; |
| 1957 // Now test framing boundaries | 1957 // Now test framing boundaries |
| 1958 const size_t ack_frame_size = kRevivedPacketSequenceNumberLength + | 1958 const size_t ack_frame_size = kRevivedPacketSequenceNumberLength + |
| 1959 PACKET_6BYTE_SEQUENCE_NUMBER; | 1959 PACKET_6BYTE_SEQUENCE_NUMBER; |
| 1960 for (size_t i = kQuicFrameTypeSize; i < ack_frame_size; ++i) { | 1960 for (size_t i = kQuicFrameTypeSize; i < ack_frame_size; ++i) { |
| (...skipping 93 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2054 const size_t kLeastUnackedOffset = kSentEntropyOffset + kQuicEntropyHashSize; | 2054 const size_t kLeastUnackedOffset = kSentEntropyOffset + kQuicEntropyHashSize; |
| 2055 const size_t kReceivedEntropyOffset = kLeastUnackedOffset + | 2055 const size_t kReceivedEntropyOffset = kLeastUnackedOffset + |
| 2056 PACKET_6BYTE_SEQUENCE_NUMBER; | 2056 PACKET_6BYTE_SEQUENCE_NUMBER; |
| 2057 const size_t kLargestObservedOffset = kReceivedEntropyOffset + | 2057 const size_t kLargestObservedOffset = kReceivedEntropyOffset + |
| 2058 kQuicEntropyHashSize; | 2058 kQuicEntropyHashSize; |
| 2059 const size_t kMissingDeltaTimeOffset = kLargestObservedOffset + | 2059 const size_t kMissingDeltaTimeOffset = kLargestObservedOffset + |
| 2060 PACKET_6BYTE_SEQUENCE_NUMBER; | 2060 PACKET_6BYTE_SEQUENCE_NUMBER; |
| 2061 const size_t kNumMissingPacketOffset = kMissingDeltaTimeOffset + | 2061 const size_t kNumMissingPacketOffset = kMissingDeltaTimeOffset + |
| 2062 kQuicDeltaTimeLargestObservedSize; | 2062 kQuicDeltaTimeLargestObservedSize; |
| 2063 const size_t kMissingPacketsOffset = kNumMissingPacketOffset + | 2063 const size_t kMissingPacketsOffset = kNumMissingPacketOffset + |
| 2064 kNumberOfMissingPacketsSize; | 2064 kNumberOfNackRangesSize; |
| 2065 const size_t kMissingPacketsRange = kMissingPacketsOffset + | 2065 const size_t kMissingPacketsRange = kMissingPacketsOffset + |
| 2066 PACKET_1BYTE_SEQUENCE_NUMBER; | 2066 PACKET_1BYTE_SEQUENCE_NUMBER; |
| 2067 const size_t kRevivedPacketsLength = kMissingPacketsRange + | 2067 const size_t kRevivedPacketsLength = kMissingPacketsRange + |
| 2068 PACKET_1BYTE_SEQUENCE_NUMBER; | 2068 PACKET_1BYTE_SEQUENCE_NUMBER; |
| 2069 const size_t kRevivedPacketSequenceNumberLength = kRevivedPacketsLength + | 2069 const size_t kRevivedPacketSequenceNumberLength = kRevivedPacketsLength + |
| 2070 PACKET_1BYTE_SEQUENCE_NUMBER; | 2070 PACKET_1BYTE_SEQUENCE_NUMBER; |
| 2071 // Now test framing boundaries | 2071 // Now test framing boundaries |
| 2072 const size_t ack_frame_size = kRevivedPacketSequenceNumberLength + | 2072 const size_t ack_frame_size = kRevivedPacketSequenceNumberLength + |
| 2073 PACKET_6BYTE_SEQUENCE_NUMBER; | 2073 PACKET_6BYTE_SEQUENCE_NUMBER; |
| 2074 for (size_t i = kQuicFrameTypeSize; i < ack_frame_size; ++i) { | 2074 for (size_t i = kQuicFrameTypeSize; i < ack_frame_size; ++i) { |
| (...skipping 1640 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3715 | 3715 |
| 3716 scoped_ptr<QuicPacket> data( | 3716 scoped_ptr<QuicPacket> data( |
| 3717 framer_.BuildUnsizedDataPacket(header, frames).packet); | 3717 framer_.BuildUnsizedDataPacket(header, frames).packet); |
| 3718 ASSERT_TRUE(data != NULL); | 3718 ASSERT_TRUE(data != NULL); |
| 3719 | 3719 |
| 3720 test::CompareCharArraysWithHexError("constructed packet", | 3720 test::CompareCharArraysWithHexError("constructed packet", |
| 3721 data->data(), data->length(), | 3721 data->data(), data->length(), |
| 3722 AsChars(packet), arraysize(packet)); | 3722 AsChars(packet), arraysize(packet)); |
| 3723 } | 3723 } |
| 3724 | 3724 |
| 3725 // TODO(jri): Add test for tuncated packets in which the original ack frame had |
| 3726 // revived packets. (In both the large and small packet cases below). |
| 3727 TEST_P(QuicFramerTest, BuildTruncatedAckFrameLargePacket) { |
| 3728 if (version_ <= QUIC_VERSION_15) { |
| 3729 return; |
| 3730 } |
| 3731 QuicPacketHeader header; |
| 3732 header.public_header.connection_id = GG_UINT64_C(0xFEDCBA9876543210); |
| 3733 header.public_header.reset_flag = false; |
| 3734 header.public_header.version_flag = false; |
| 3735 header.fec_flag = false; |
| 3736 header.entropy_flag = true; |
| 3737 header.packet_sequence_number = GG_UINT64_C(0x770123456789AA8); |
| 3738 header.fec_group = 0; |
| 3739 |
| 3740 QuicAckFrame ack_frame; |
| 3741 // This entropy hash is different from what shows up in the packet below, |
| 3742 // since entropy is recomputed by the framer on ack truncation (by |
| 3743 // TestEntropyCalculator for this test.) |
| 3744 ack_frame.received_info.entropy_hash = 0x43; |
| 3745 ack_frame.received_info.largest_observed = 2 * 300; |
| 3746 ack_frame.received_info.delta_time_largest_observed = QuicTime::Delta::Zero(); |
| 3747 for (size_t i = 1; i < 2 * 300; i += 2) { |
| 3748 ack_frame.received_info.missing_packets.insert(i); |
| 3749 } |
| 3750 |
| 3751 QuicFrames frames; |
| 3752 frames.push_back(QuicFrame(&ack_frame)); |
| 3753 |
| 3754 unsigned char packet[] = { |
| 3755 // public flags (8 byte connection_id) |
| 3756 0x3C, |
| 3757 // connection_id |
| 3758 0x10, 0x32, 0x54, 0x76, |
| 3759 0x98, 0xBA, 0xDC, 0xFE, |
| 3760 // packet sequence number |
| 3761 0xA8, 0x9A, 0x78, 0x56, |
| 3762 0x34, 0x12, |
| 3763 // private flags (entropy) |
| 3764 0x01, |
| 3765 |
| 3766 // frame type (ack frame) |
| 3767 // (has nacks, is truncated, 2 byte largest observed, 1 byte delta) |
| 3768 0x74, |
| 3769 // entropy hash of all received packets, set to 1 by TestEntropyCalculator |
| 3770 // since ack is truncated. |
| 3771 0x01, |
| 3772 // 2-byte largest observed packet sequence number. |
| 3773 // Expected to be 510 (0x1FE), since only 255 nack ranges can fit. |
| 3774 0xFE, 0x01, |
| 3775 // Zero delta time. |
| 3776 0x0, 0x0, |
| 3777 // num missing packet ranges (limited to 255 by size of this field). |
| 3778 0xFF, |
| 3779 // {missing packet delta, further missing packets in range} |
| 3780 // 6 nack ranges x 42 + 3 nack ranges |
| 3781 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, |
| 3782 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, |
| 3783 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, |
| 3784 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, |
| 3785 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, |
| 3786 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, |
| 3787 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, |
| 3788 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, |
| 3789 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, |
| 3790 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, |
| 3791 |
| 3792 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, |
| 3793 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, |
| 3794 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, |
| 3795 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, |
| 3796 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, |
| 3797 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, |
| 3798 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, |
| 3799 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, |
| 3800 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, |
| 3801 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, |
| 3802 |
| 3803 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, |
| 3804 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, |
| 3805 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, |
| 3806 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, |
| 3807 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, |
| 3808 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, |
| 3809 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, |
| 3810 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, |
| 3811 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, |
| 3812 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, |
| 3813 |
| 3814 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, |
| 3815 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, |
| 3816 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, |
| 3817 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, |
| 3818 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, |
| 3819 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, |
| 3820 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, |
| 3821 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, |
| 3822 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, |
| 3823 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, |
| 3824 |
| 3825 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, |
| 3826 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, |
| 3827 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, |
| 3828 |
| 3829 // 0 revived packets. |
| 3830 0x00, |
| 3831 }; |
| 3832 |
| 3833 scoped_ptr<QuicPacket> data( |
| 3834 framer_.BuildDataPacket(header, frames, kMaxPacketSize).packet); |
| 3835 ASSERT_TRUE(data != NULL); |
| 3836 |
| 3837 test::CompareCharArraysWithHexError("constructed packet", |
| 3838 data->data(), data->length(), |
| 3839 AsChars(packet), arraysize(packet)); |
| 3840 } |
| 3841 |
| 3842 |
| 3843 TEST_P(QuicFramerTest, BuildTruncatedAckFrameSmallPacket) { |
| 3844 if (version_ <= QUIC_VERSION_15) { |
| 3845 return; |
| 3846 } |
| 3847 QuicPacketHeader header; |
| 3848 header.public_header.connection_id = GG_UINT64_C(0xFEDCBA9876543210); |
| 3849 header.public_header.reset_flag = false; |
| 3850 header.public_header.version_flag = false; |
| 3851 header.fec_flag = false; |
| 3852 header.entropy_flag = true; |
| 3853 header.packet_sequence_number = GG_UINT64_C(0x770123456789AA8); |
| 3854 header.fec_group = 0; |
| 3855 |
| 3856 QuicAckFrame ack_frame; |
| 3857 // This entropy hash is different from what shows up in the packet below, |
| 3858 // since entropy is recomputed by the framer on ack truncation (by |
| 3859 // TestEntropyCalculator for this test.) |
| 3860 ack_frame.received_info.entropy_hash = 0x43; |
| 3861 ack_frame.received_info.largest_observed = 2 * 300; |
| 3862 ack_frame.received_info.delta_time_largest_observed = QuicTime::Delta::Zero(); |
| 3863 for (size_t i = 1; i < 2 * 300; i += 2) { |
| 3864 ack_frame.received_info.missing_packets.insert(i); |
| 3865 } |
| 3866 |
| 3867 QuicFrames frames; |
| 3868 frames.push_back(QuicFrame(&ack_frame)); |
| 3869 |
| 3870 unsigned char packet[] = { |
| 3871 // public flags (8 byte connection_id) |
| 3872 0x3C, |
| 3873 // connection_id |
| 3874 0x10, 0x32, 0x54, 0x76, |
| 3875 0x98, 0xBA, 0xDC, 0xFE, |
| 3876 // packet sequence number |
| 3877 0xA8, 0x9A, 0x78, 0x56, |
| 3878 0x34, 0x12, |
| 3879 // private flags (entropy) |
| 3880 0x01, |
| 3881 |
| 3882 // frame type (ack frame) |
| 3883 // (has nacks, is truncated, 2 byte largest observed, 1 byte delta) |
| 3884 0x74, |
| 3885 // entropy hash of all received packets, set to 1 by TestEntropyCalculator |
| 3886 // since ack is truncated. |
| 3887 0x01, |
| 3888 // 2-byte largest observed packet sequence number. |
| 3889 // Expected to be 12 (0x0C), since only 6 nack ranges can fit. |
| 3890 0x0C, 0x00, |
| 3891 // Zero delta time. |
| 3892 0x0, 0x0, |
| 3893 // num missing packet ranges (limited to 6 by packet size of 37). |
| 3894 0x06, |
| 3895 // {missing packet delta, further missing packets in range} |
| 3896 // 6 nack ranges |
| 3897 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, |
| 3898 // 0 revived packets. |
| 3899 0x00, |
| 3900 }; |
| 3901 |
| 3902 scoped_ptr<QuicPacket> data( |
| 3903 framer_.BuildDataPacket(header, frames, 37u).packet); |
| 3904 ASSERT_TRUE(data != NULL); |
| 3905 // Expect 1 byte unused since at least 2 bytes are needed to fit more nacks. |
| 3906 EXPECT_EQ(36u, data->length()); |
| 3907 test::CompareCharArraysWithHexError("constructed packet", |
| 3908 data->data(), data->length(), |
| 3909 AsChars(packet), arraysize(packet)); |
| 3910 } |
| 3911 |
| 3725 TEST_P(QuicFramerTest, BuildCongestionFeedbackFramePacketTCP) { | 3912 TEST_P(QuicFramerTest, BuildCongestionFeedbackFramePacketTCP) { |
| 3726 QuicPacketHeader header; | 3913 QuicPacketHeader header; |
| 3727 header.public_header.connection_id = GG_UINT64_C(0xFEDCBA9876543210); | 3914 header.public_header.connection_id = GG_UINT64_C(0xFEDCBA9876543210); |
| 3728 header.public_header.reset_flag = false; | 3915 header.public_header.reset_flag = false; |
| 3729 header.public_header.version_flag = false; | 3916 header.public_header.version_flag = false; |
| 3730 header.fec_flag = false; | 3917 header.fec_flag = false; |
| 3731 header.entropy_flag = false; | 3918 header.entropy_flag = false; |
| 3732 header.packet_sequence_number = GG_UINT64_C(0x123456789ABC); | 3919 header.packet_sequence_number = GG_UINT64_C(0x123456789ABC); |
| 3733 header.fec_group = 0; | 3920 header.fec_group = 0; |
| 3734 | 3921 |
| (...skipping 728 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4463 QuicPacket::NewDataPacket(AsChars(packet), arraysize(packet), false, | 4650 QuicPacket::NewDataPacket(AsChars(packet), arraysize(packet), false, |
| 4464 PACKET_8BYTE_CONNECTION_ID, kIncludeVersion, | 4651 PACKET_8BYTE_CONNECTION_ID, kIncludeVersion, |
| 4465 PACKET_6BYTE_SEQUENCE_NUMBER)); | 4652 PACKET_6BYTE_SEQUENCE_NUMBER)); |
| 4466 scoped_ptr<QuicEncryptedPacket> encrypted( | 4653 scoped_ptr<QuicEncryptedPacket> encrypted( |
| 4467 framer_.EncryptPacket(ENCRYPTION_NONE, sequence_number, *raw)); | 4654 framer_.EncryptPacket(ENCRYPTION_NONE, sequence_number, *raw)); |
| 4468 | 4655 |
| 4469 ASSERT_TRUE(encrypted.get() != NULL); | 4656 ASSERT_TRUE(encrypted.get() != NULL); |
| 4470 EXPECT_TRUE(CheckEncryption(sequence_number, raw.get())); | 4657 EXPECT_TRUE(CheckEncryption(sequence_number, raw.get())); |
| 4471 } | 4658 } |
| 4472 | 4659 |
| 4473 TEST_P(QuicFramerTest, Truncation) { | 4660 TEST_P(QuicFramerTest, AckTruncationLargePacket) { |
| 4474 if (framer_.version() <= QUIC_VERSION_15) { | 4661 if (framer_.version() <= QUIC_VERSION_15) { |
| 4475 return; | 4662 return; |
| 4476 } | 4663 } |
| 4477 QuicPacketHeader header; | 4664 QuicPacketHeader header; |
| 4478 header.public_header.connection_id = GG_UINT64_C(0xFEDCBA9876543210); | 4665 header.public_header.connection_id = GG_UINT64_C(0xFEDCBA9876543210); |
| 4479 header.public_header.reset_flag = false; | 4666 header.public_header.reset_flag = false; |
| 4480 header.public_header.version_flag = false; | 4667 header.public_header.version_flag = false; |
| 4481 header.fec_flag = false; | 4668 header.fec_flag = false; |
| 4482 header.entropy_flag = false; | 4669 header.entropy_flag = false; |
| 4483 header.packet_sequence_number = GG_UINT64_C(0x123456789ABC); | 4670 header.packet_sequence_number = GG_UINT64_C(0x123456789ABC); |
| 4484 header.fec_group = 0; | 4671 header.fec_group = 0; |
| 4485 | 4672 |
| 4486 QuicAckFrame ack_frame; | 4673 // Create a packet with just the ack. |
| 4487 ack_frame.received_info.largest_observed = 601; | 4674 QuicAckFrame ack_frame = MakeAckFrameWithNackRanges(300, 0u); |
| 4488 for (uint64 i = 1; i < ack_frame.received_info.largest_observed; i += 2) { | |
| 4489 ack_frame.received_info.missing_packets.insert(i); | |
| 4490 } | |
| 4491 | |
| 4492 // Create a packet with just the ack | |
| 4493 QuicFrame frame; | 4675 QuicFrame frame; |
| 4494 frame.type = ACK_FRAME; | 4676 frame.type = ACK_FRAME; |
| 4495 frame.ack_frame = &ack_frame; | 4677 frame.ack_frame = &ack_frame; |
| 4496 QuicFrames frames; | 4678 QuicFrames frames; |
| 4497 frames.push_back(frame); | 4679 frames.push_back(frame); |
| 4498 | 4680 |
| 4681 // Build an ack packet with truncation due to limit in number of nack ranges. |
| 4499 scoped_ptr<QuicPacket> raw_ack_packet( | 4682 scoped_ptr<QuicPacket> raw_ack_packet( |
| 4500 framer_.BuildUnsizedDataPacket(header, frames).packet); | 4683 framer_.BuildDataPacket(header, frames, kMaxPacketSize).packet); |
| 4501 ASSERT_TRUE(raw_ack_packet != NULL); | 4684 ASSERT_TRUE(raw_ack_packet != NULL); |
| 4502 | |
| 4503 scoped_ptr<QuicEncryptedPacket> ack_packet( | 4685 scoped_ptr<QuicEncryptedPacket> ack_packet( |
| 4504 framer_.EncryptPacket(ENCRYPTION_NONE, header.packet_sequence_number, | 4686 framer_.EncryptPacket(ENCRYPTION_NONE, header.packet_sequence_number, |
| 4505 *raw_ack_packet)); | 4687 *raw_ack_packet)); |
| 4506 | 4688 // Now make sure we can turn our ack packet back into an ack frame. |
| 4507 // Now make sure we can turn our ack packet back into an ack frame | |
| 4508 ASSERT_TRUE(framer_.ProcessPacket(*ack_packet)); | 4689 ASSERT_TRUE(framer_.ProcessPacket(*ack_packet)); |
| 4509 ASSERT_EQ(1u, visitor_.ack_frames_.size()); | 4690 ASSERT_EQ(1u, visitor_.ack_frames_.size()); |
| 4510 const QuicAckFrame& processed_ack_frame = *visitor_.ack_frames_[0]; | 4691 QuicAckFrame& processed_ack_frame = *visitor_.ack_frames_[0]; |
| 4511 EXPECT_TRUE(processed_ack_frame.received_info.is_truncated); | 4692 EXPECT_TRUE(processed_ack_frame.received_info.is_truncated); |
| 4512 EXPECT_EQ(510u, processed_ack_frame.received_info.largest_observed); | 4693 EXPECT_EQ(510u, processed_ack_frame.received_info.largest_observed); |
| 4513 ASSERT_EQ(255u, processed_ack_frame.received_info.missing_packets.size()); | 4694 ASSERT_EQ(255u, processed_ack_frame.received_info.missing_packets.size()); |
| 4514 SequenceNumberSet::const_iterator missing_iter = | 4695 SequenceNumberSet::const_iterator missing_iter = |
| 4515 processed_ack_frame.received_info.missing_packets.begin(); | 4696 processed_ack_frame.received_info.missing_packets.begin(); |
| 4516 EXPECT_EQ(1u, *missing_iter); | 4697 EXPECT_EQ(1u, *missing_iter); |
| 4517 SequenceNumberSet::const_reverse_iterator last_missing_iter = | 4698 SequenceNumberSet::const_reverse_iterator last_missing_iter = |
| 4518 processed_ack_frame.received_info.missing_packets.rbegin(); | 4699 processed_ack_frame.received_info.missing_packets.rbegin(); |
| 4519 EXPECT_EQ(509u, *last_missing_iter); | 4700 EXPECT_EQ(509u, *last_missing_iter); |
| 4520 } | 4701 } |
| 4521 | 4702 |
| 4703 TEST_P(QuicFramerTest, AckTruncationSmallPacket) { |
| 4704 if (framer_.version() <= QUIC_VERSION_15) { |
| 4705 return; |
| 4706 } |
| 4707 QuicPacketHeader header; |
| 4708 header.public_header.connection_id = GG_UINT64_C(0xFEDCBA9876543210); |
| 4709 header.public_header.reset_flag = false; |
| 4710 header.public_header.version_flag = false; |
| 4711 header.fec_flag = false; |
| 4712 header.entropy_flag = false; |
| 4713 header.packet_sequence_number = GG_UINT64_C(0x123456789ABC); |
| 4714 header.fec_group = 0; |
| 4715 |
| 4716 // Create a packet with just the ack. |
| 4717 QuicAckFrame ack_frame = MakeAckFrameWithNackRanges(300, 0u); |
| 4718 QuicFrame frame; |
| 4719 frame.type = ACK_FRAME; |
| 4720 frame.ack_frame = &ack_frame; |
| 4721 QuicFrames frames; |
| 4722 frames.push_back(frame); |
| 4723 |
| 4724 // Build an ack packet with truncation due to limit in number of nack ranges. |
| 4725 scoped_ptr<QuicPacket> raw_ack_packet( |
| 4726 framer_.BuildDataPacket(header, frames, 500).packet); |
| 4727 ASSERT_TRUE(raw_ack_packet != NULL); |
| 4728 scoped_ptr<QuicEncryptedPacket> ack_packet( |
| 4729 framer_.EncryptPacket(ENCRYPTION_NONE, header.packet_sequence_number, |
| 4730 *raw_ack_packet)); |
| 4731 // Now make sure we can turn our ack packet back into an ack frame. |
| 4732 ASSERT_TRUE(framer_.ProcessPacket(*ack_packet)); |
| 4733 ASSERT_EQ(1u, visitor_.ack_frames_.size()); |
| 4734 QuicAckFrame& processed_ack_frame = *visitor_.ack_frames_[0]; |
| 4735 EXPECT_TRUE(processed_ack_frame.received_info.is_truncated); |
| 4736 EXPECT_EQ(476u, processed_ack_frame.received_info.largest_observed); |
| 4737 ASSERT_EQ(238u, processed_ack_frame.received_info.missing_packets.size()); |
| 4738 SequenceNumberSet::const_iterator missing_iter = |
| 4739 processed_ack_frame.received_info.missing_packets.begin(); |
| 4740 EXPECT_EQ(1u, *missing_iter); |
| 4741 SequenceNumberSet::const_reverse_iterator last_missing_iter = |
| 4742 processed_ack_frame.received_info.missing_packets.rbegin(); |
| 4743 EXPECT_EQ(475u, *last_missing_iter); |
| 4744 } |
| 4745 |
| 4522 TEST_P(QuicFramerTest, Truncation15) { | 4746 TEST_P(QuicFramerTest, Truncation15) { |
| 4523 if (framer_.version() > QUIC_VERSION_15) { | 4747 if (framer_.version() > QUIC_VERSION_15) { |
| 4524 return; | 4748 return; |
| 4525 } | 4749 } |
| 4526 QuicPacketHeader header; | 4750 QuicPacketHeader header; |
| 4527 header.public_header.connection_id = GG_UINT64_C(0xFEDCBA9876543210); | 4751 header.public_header.connection_id = GG_UINT64_C(0xFEDCBA9876543210); |
| 4528 header.public_header.reset_flag = false; | 4752 header.public_header.reset_flag = false; |
| 4529 header.public_header.version_flag = false; | 4753 header.public_header.version_flag = false; |
| 4530 header.fec_flag = false; | 4754 header.fec_flag = false; |
| 4531 header.entropy_flag = false; | 4755 header.entropy_flag = false; |
| 4532 header.packet_sequence_number = GG_UINT64_C(0x123456789ABC); | 4756 header.packet_sequence_number = GG_UINT64_C(0x123456789ABC); |
| 4533 header.fec_group = 0; | 4757 header.fec_group = 0; |
| 4534 | 4758 |
| 4535 QuicAckFrame ack_frame; | 4759 QuicAckFrame ack_frame; |
| 4536 ack_frame.received_info.largest_observed = 601; | 4760 ack_frame.received_info.largest_observed = 601; |
| 4537 ack_frame.sent_info.least_unacked = header.packet_sequence_number - 1; | 4761 ack_frame.sent_info.least_unacked = header.packet_sequence_number - 1; |
| 4538 for (uint64 i = 1; i < ack_frame.received_info.largest_observed; i += 2) { | 4762 for (uint64 i = 1; i < ack_frame.received_info.largest_observed; i += 2) { |
| 4539 ack_frame.received_info.missing_packets.insert(i); | 4763 ack_frame.received_info.missing_packets.insert(i); |
| 4540 } | 4764 } |
| 4541 | 4765 |
| 4542 // Create a packet with just the ack | 4766 // Create a packet with just the ack. |
| 4543 QuicFrame frame; | 4767 QuicFrame frame; |
| 4544 frame.type = ACK_FRAME; | 4768 frame.type = ACK_FRAME; |
| 4545 frame.ack_frame = &ack_frame; | 4769 frame.ack_frame = &ack_frame; |
| 4546 QuicFrames frames; | 4770 QuicFrames frames; |
| 4547 frames.push_back(frame); | 4771 frames.push_back(frame); |
| 4548 | 4772 |
| 4549 scoped_ptr<QuicPacket> raw_ack_packet( | 4773 scoped_ptr<QuicPacket> raw_ack_packet( |
| 4550 framer_.BuildUnsizedDataPacket(header, frames).packet); | 4774 framer_.BuildUnsizedDataPacket(header, frames).packet); |
| 4551 ASSERT_TRUE(raw_ack_packet != NULL); | 4775 ASSERT_TRUE(raw_ack_packet != NULL); |
| 4552 | 4776 |
| 4553 scoped_ptr<QuicEncryptedPacket> ack_packet( | 4777 scoped_ptr<QuicEncryptedPacket> ack_packet( |
| 4554 framer_.EncryptPacket(ENCRYPTION_NONE, header.packet_sequence_number, | 4778 framer_.EncryptPacket(ENCRYPTION_NONE, header.packet_sequence_number, |
| 4555 *raw_ack_packet)); | 4779 *raw_ack_packet)); |
| 4556 | 4780 |
| 4557 // Now make sure we can turn our ack packet back into an ack frame | 4781 // Now make sure we can turn our ack packet back into an ack frame. |
| 4558 ASSERT_TRUE(framer_.ProcessPacket(*ack_packet)); | 4782 ASSERT_TRUE(framer_.ProcessPacket(*ack_packet)); |
| 4559 ASSERT_EQ(1u, visitor_.ack_frames_.size()); | 4783 ASSERT_EQ(1u, visitor_.ack_frames_.size()); |
| 4560 const QuicAckFrame& processed_ack_frame = *visitor_.ack_frames_[0]; | 4784 const QuicAckFrame& processed_ack_frame = *visitor_.ack_frames_[0]; |
| 4561 EXPECT_EQ(header.packet_sequence_number - 1, | 4785 EXPECT_EQ(header.packet_sequence_number - 1, |
| 4562 processed_ack_frame.sent_info.least_unacked); | 4786 processed_ack_frame.sent_info.least_unacked); |
| 4563 EXPECT_TRUE(processed_ack_frame.received_info.is_truncated); | 4787 EXPECT_TRUE(processed_ack_frame.received_info.is_truncated); |
| 4564 EXPECT_EQ(510u, processed_ack_frame.received_info.largest_observed); | 4788 EXPECT_EQ(510u, processed_ack_frame.received_info.largest_observed); |
| 4565 ASSERT_EQ(255u, processed_ack_frame.received_info.missing_packets.size()); | 4789 ASSERT_EQ(255u, processed_ack_frame.received_info.missing_packets.size()); |
| 4566 SequenceNumberSet::const_iterator missing_iter = | 4790 SequenceNumberSet::const_iterator missing_iter = |
| 4567 processed_ack_frame.received_info.missing_packets.begin(); | 4791 processed_ack_frame.received_info.missing_packets.begin(); |
| (...skipping 13 matching lines...) Expand all Loading... |
| 4581 header.packet_sequence_number = GG_UINT64_C(0x123456789ABC); | 4805 header.packet_sequence_number = GG_UINT64_C(0x123456789ABC); |
| 4582 header.fec_group = 0; | 4806 header.fec_group = 0; |
| 4583 | 4807 |
| 4584 QuicAckFrame ack_frame; | 4808 QuicAckFrame ack_frame; |
| 4585 ack_frame.received_info.largest_observed = 201; | 4809 ack_frame.received_info.largest_observed = 201; |
| 4586 ack_frame.sent_info.least_unacked = header.packet_sequence_number - 2; | 4810 ack_frame.sent_info.least_unacked = header.packet_sequence_number - 2; |
| 4587 for (uint64 i = 1; i < ack_frame.received_info.largest_observed; ++i) { | 4811 for (uint64 i = 1; i < ack_frame.received_info.largest_observed; ++i) { |
| 4588 ack_frame.received_info.missing_packets.insert(i); | 4812 ack_frame.received_info.missing_packets.insert(i); |
| 4589 } | 4813 } |
| 4590 | 4814 |
| 4591 // Create a packet with just the ack | 4815 // Create a packet with just the ack. |
| 4592 QuicFrame frame; | 4816 QuicFrame frame; |
| 4593 frame.type = ACK_FRAME; | 4817 frame.type = ACK_FRAME; |
| 4594 frame.ack_frame = &ack_frame; | 4818 frame.ack_frame = &ack_frame; |
| 4595 QuicFrames frames; | 4819 QuicFrames frames; |
| 4596 frames.push_back(frame); | 4820 frames.push_back(frame); |
| 4597 | 4821 |
| 4598 scoped_ptr<QuicPacket> raw_ack_packet( | 4822 scoped_ptr<QuicPacket> raw_ack_packet( |
| 4599 framer_.BuildUnsizedDataPacket(header, frames).packet); | 4823 framer_.BuildUnsizedDataPacket(header, frames).packet); |
| 4600 ASSERT_TRUE(raw_ack_packet != NULL); | 4824 ASSERT_TRUE(raw_ack_packet != NULL); |
| 4601 | 4825 |
| 4602 scoped_ptr<QuicEncryptedPacket> ack_packet( | 4826 scoped_ptr<QuicEncryptedPacket> ack_packet( |
| 4603 framer_.EncryptPacket(ENCRYPTION_NONE, header.packet_sequence_number, | 4827 framer_.EncryptPacket(ENCRYPTION_NONE, header.packet_sequence_number, |
| 4604 *raw_ack_packet)); | 4828 *raw_ack_packet)); |
| 4605 | 4829 |
| 4606 // Now make sure we can turn our ack packet back into an ack frame | 4830 // Now make sure we can turn our ack packet back into an ack frame. |
| 4607 ASSERT_TRUE(framer_.ProcessPacket(*ack_packet)); | 4831 ASSERT_TRUE(framer_.ProcessPacket(*ack_packet)); |
| 4608 | 4832 |
| 4609 // Test for clean truncation of the ack by comparing the length of the | 4833 // Test for clean truncation of the ack by comparing the length of the |
| 4610 // original packets to the re-serialized packets. | 4834 // original packets to the re-serialized packets. |
| 4611 frames.clear(); | 4835 frames.clear(); |
| 4612 frame.type = ACK_FRAME; | 4836 frame.type = ACK_FRAME; |
| 4613 frame.ack_frame = visitor_.ack_frames_[0]; | 4837 frame.ack_frame = visitor_.ack_frames_[0]; |
| 4614 frames.push_back(frame); | 4838 frames.push_back(frame); |
| 4615 | 4839 |
| 4616 size_t original_raw_length = raw_ack_packet->length(); | 4840 size_t original_raw_length = raw_ack_packet->length(); |
| (...skipping 131 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4748 EXPECT_CALL(visitor, OnPacketComplete()); | 4972 EXPECT_CALL(visitor, OnPacketComplete()); |
| 4749 EXPECT_CALL(visitor, OnUnauthenticatedPublicHeader(_)).WillOnce(Return(true)); | 4973 EXPECT_CALL(visitor, OnUnauthenticatedPublicHeader(_)).WillOnce(Return(true)); |
| 4750 | 4974 |
| 4751 QuicEncryptedPacket encrypted(AsChars(packet), arraysize(packet), false); | 4975 QuicEncryptedPacket encrypted(AsChars(packet), arraysize(packet), false); |
| 4752 EXPECT_TRUE(framer_.ProcessPacket(encrypted)); | 4976 EXPECT_TRUE(framer_.ProcessPacket(encrypted)); |
| 4753 EXPECT_EQ(QUIC_NO_ERROR, framer_.error()); | 4977 EXPECT_EQ(QUIC_NO_ERROR, framer_.error()); |
| 4754 } | 4978 } |
| 4755 | 4979 |
| 4756 } // namespace test | 4980 } // namespace test |
| 4757 } // namespace net | 4981 } // namespace net |
| OLD | NEW |