| 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_connection.h" | 5 #include "net/quic/quic_connection.h" |
| 6 | 6 |
| 7 #include "base/basictypes.h" | 7 #include "base/basictypes.h" |
| 8 #include "base/bind.h" | 8 #include "base/bind.h" |
| 9 #include "base/stl_util.h" | 9 #include "base/stl_util.h" |
| 10 #include "net/base/net_errors.h" | 10 #include "net/base/net_errors.h" |
| (...skipping 620 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 631 | 631 |
| 632 void ProcessClosePacket(QuicPacketSequenceNumber number, | 632 void ProcessClosePacket(QuicPacketSequenceNumber number, |
| 633 QuicFecGroupNumber fec_group) { | 633 QuicFecGroupNumber fec_group) { |
| 634 scoped_ptr<QuicPacket> packet(ConstructClosePacket(number, fec_group)); | 634 scoped_ptr<QuicPacket> packet(ConstructClosePacket(number, fec_group)); |
| 635 scoped_ptr<QuicEncryptedPacket> encrypted(framer_.EncryptPacket( | 635 scoped_ptr<QuicEncryptedPacket> encrypted(framer_.EncryptPacket( |
| 636 ENCRYPTION_NONE, number, *packet)); | 636 ENCRYPTION_NONE, number, *packet)); |
| 637 connection_.ProcessUdpPacket(IPEndPoint(), IPEndPoint(), *encrypted); | 637 connection_.ProcessUdpPacket(IPEndPoint(), IPEndPoint(), *encrypted); |
| 638 } | 638 } |
| 639 | 639 |
| 640 size_t ProcessFecProtectedPacket(QuicPacketSequenceNumber number, | 640 size_t ProcessFecProtectedPacket(QuicPacketSequenceNumber number, |
| 641 bool expect_revival, bool entropy_flag) { | 641 bool expect_revival, bool entropy_flag) { |
| 642 if (expect_revival) { | 642 if (expect_revival) { |
| 643 EXPECT_CALL(visitor_, OnStreamFrames(_)).WillOnce(Return(accept_packet_)); | 643 EXPECT_CALL(visitor_, OnStreamFrames(_)).WillOnce(Return(accept_packet_)); |
| 644 } | 644 } |
| 645 EXPECT_CALL(visitor_, OnStreamFrames(_)).WillOnce(Return(accept_packet_)) | 645 EXPECT_CALL(visitor_, OnStreamFrames(_)).WillOnce(Return(accept_packet_)) |
| 646 .RetiresOnSaturation(); | 646 .RetiresOnSaturation(); |
| 647 return ProcessDataPacket(number, 1, entropy_flag); | 647 return ProcessDataPacket(number, 1, entropy_flag); |
| 648 } | 648 } |
| 649 | 649 |
| 650 // Processes an FEC packet that covers the packets that would have been | 650 // Processes an FEC packet that covers the packets that would have been |
| 651 // received. | 651 // received. |
| (...skipping 2126 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2778 TEST_F(QuicConnectionTest, ReceivedEntropyHashCalculation) { | 2778 TEST_F(QuicConnectionTest, ReceivedEntropyHashCalculation) { |
| 2779 EXPECT_CALL(visitor_, OnStreamFrames(_)).WillRepeatedly(Return(true)); | 2779 EXPECT_CALL(visitor_, OnStreamFrames(_)).WillRepeatedly(Return(true)); |
| 2780 EXPECT_CALL(visitor_, OnSuccessfulVersionNegotiation(_)); | 2780 EXPECT_CALL(visitor_, OnSuccessfulVersionNegotiation(_)); |
| 2781 ProcessDataPacket(1, 1, kEntropyFlag); | 2781 ProcessDataPacket(1, 1, kEntropyFlag); |
| 2782 ProcessDataPacket(4, 1, kEntropyFlag); | 2782 ProcessDataPacket(4, 1, kEntropyFlag); |
| 2783 ProcessDataPacket(3, 1, !kEntropyFlag); | 2783 ProcessDataPacket(3, 1, !kEntropyFlag); |
| 2784 ProcessDataPacket(7, 1, kEntropyFlag); | 2784 ProcessDataPacket(7, 1, kEntropyFlag); |
| 2785 EXPECT_EQ(146u, outgoing_ack()->received_info.entropy_hash); | 2785 EXPECT_EQ(146u, outgoing_ack()->received_info.entropy_hash); |
| 2786 } | 2786 } |
| 2787 | 2787 |
| 2788 TEST_F(QuicConnectionTest, ReceivedEntropyHashCalculationHalfFEC) { |
| 2789 // FEC packets should not change the entropy hash calculation. |
| 2790 EXPECT_CALL(visitor_, OnStreamFrames(_)).WillRepeatedly(Return(true)); |
| 2791 EXPECT_CALL(visitor_, OnSuccessfulVersionNegotiation(_)); |
| 2792 ProcessDataPacket(1, 1, kEntropyFlag); |
| 2793 ProcessFecPacket(4, 1, false, kEntropyFlag, NULL); |
| 2794 ProcessDataPacket(3, 3, !kEntropyFlag); |
| 2795 ProcessFecPacket(7, 3, false, kEntropyFlag, NULL); |
| 2796 EXPECT_EQ(146u, outgoing_ack()->received_info.entropy_hash); |
| 2797 } |
| 2798 |
| 2788 TEST_F(QuicConnectionTest, UpdateEntropyForReceivedPackets) { | 2799 TEST_F(QuicConnectionTest, UpdateEntropyForReceivedPackets) { |
| 2789 EXPECT_CALL(visitor_, OnStreamFrames(_)).WillRepeatedly(Return(true)); | 2800 EXPECT_CALL(visitor_, OnStreamFrames(_)).WillRepeatedly(Return(true)); |
| 2790 EXPECT_CALL(visitor_, OnSuccessfulVersionNegotiation(_)); | 2801 EXPECT_CALL(visitor_, OnSuccessfulVersionNegotiation(_)); |
| 2791 ProcessDataPacket(1, 1, kEntropyFlag); | 2802 ProcessDataPacket(1, 1, kEntropyFlag); |
| 2792 ProcessDataPacket(5, 1, kEntropyFlag); | 2803 ProcessDataPacket(5, 1, kEntropyFlag); |
| 2793 ProcessDataPacket(4, 1, !kEntropyFlag); | 2804 ProcessDataPacket(4, 1, !kEntropyFlag); |
| 2794 EXPECT_EQ(34u, outgoing_ack()->received_info.entropy_hash); | 2805 EXPECT_EQ(34u, outgoing_ack()->received_info.entropy_hash); |
| 2795 // Make 4th packet my least unacked, and update entropy for 2, 3 packets. | 2806 // Make 4th packet my least unacked, and update entropy for 2, 3 packets. |
| 2796 QuicAckFrame ack = InitAckFrame(0, 4); | 2807 QuicAckFrame ack = InitAckFrame(0, 4); |
| 2797 QuicPacketEntropyHash kRandomEntropyHash = 129u; | 2808 QuicPacketEntropyHash kRandomEntropyHash = 129u; |
| (...skipping 669 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3467 true); | 3478 true); |
| 3468 TestConnection client(guid_, IPEndPoint(), helper_.get(), writer_.get(), | 3479 TestConnection client(guid_, IPEndPoint(), helper_.get(), writer_.get(), |
| 3469 false); | 3480 false); |
| 3470 EXPECT_TRUE(client.sent_packet_manager().using_pacing()); | 3481 EXPECT_TRUE(client.sent_packet_manager().using_pacing()); |
| 3471 EXPECT_FALSE(server.sent_packet_manager().using_pacing()); | 3482 EXPECT_FALSE(server.sent_packet_manager().using_pacing()); |
| 3472 } | 3483 } |
| 3473 | 3484 |
| 3474 } // namespace | 3485 } // namespace |
| 3475 } // namespace test | 3486 } // namespace test |
| 3476 } // namespace net | 3487 } // namespace net |
| OLD | NEW |