| 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 <ostream> | 7 #include <ostream> |
| 8 | 8 |
| 9 #include "base/basictypes.h" | 9 #include "base/basictypes.h" |
| 10 #include "base/bind.h" | 10 #include "base/bind.h" |
| (...skipping 1068 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1079 connection_.SetMaxPacketLength(1000); | 1079 connection_.SetMaxPacketLength(1000); |
| 1080 | 1080 |
| 1081 QuicPacketHeader header; | 1081 QuicPacketHeader header; |
| 1082 header.public_header.connection_id = connection_id_; | 1082 header.public_header.connection_id = connection_id_; |
| 1083 header.public_header.version_flag = true; | 1083 header.public_header.version_flag = true; |
| 1084 header.packet_packet_number = 1; | 1084 header.packet_packet_number = 1; |
| 1085 | 1085 |
| 1086 QuicFrames frames; | 1086 QuicFrames frames; |
| 1087 QuicPaddingFrame padding; | 1087 QuicPaddingFrame padding; |
| 1088 frames.push_back(QuicFrame(&frame1_)); | 1088 frames.push_back(QuicFrame(&frame1_)); |
| 1089 frames.push_back(QuicFrame(&padding)); | 1089 frames.push_back(QuicFrame(padding)); |
| 1090 scoped_ptr<QuicPacket> packet(ConstructPacket(header, frames)); | 1090 scoped_ptr<QuicPacket> packet(ConstructPacket(header, frames)); |
| 1091 char buffer[kMaxPacketSize]; | 1091 char buffer[kMaxPacketSize]; |
| 1092 scoped_ptr<QuicEncryptedPacket> encrypted(framer_.EncryptPayload( | 1092 scoped_ptr<QuicEncryptedPacket> encrypted(framer_.EncryptPayload( |
| 1093 ENCRYPTION_NONE, 12, *packet, buffer, kMaxPacketSize)); | 1093 ENCRYPTION_NONE, 12, *packet, buffer, kMaxPacketSize)); |
| 1094 EXPECT_EQ(kMaxPacketSize, encrypted->length()); | 1094 EXPECT_EQ(kMaxPacketSize, encrypted->length()); |
| 1095 | 1095 |
| 1096 framer_.set_version(version()); | 1096 framer_.set_version(version()); |
| 1097 EXPECT_CALL(visitor_, OnStreamFrame(_)).Times(1); | 1097 EXPECT_CALL(visitor_, OnStreamFrame(_)).Times(1); |
| 1098 connection_.ProcessUdpPacket(kSelfAddress, kPeerAddress, *encrypted); | 1098 connection_.ProcessUdpPacket(kSelfAddress, kPeerAddress, *encrypted); |
| 1099 | 1099 |
| (...skipping 10 matching lines...) Expand all Loading... |
| 1110 EXPECT_EQ(1000u, connection_.max_packet_length()); | 1110 EXPECT_EQ(1000u, connection_.max_packet_length()); |
| 1111 | 1111 |
| 1112 QuicPacketHeader header; | 1112 QuicPacketHeader header; |
| 1113 header.public_header.connection_id = connection_id_; | 1113 header.public_header.connection_id = connection_id_; |
| 1114 header.public_header.version_flag = true; | 1114 header.public_header.version_flag = true; |
| 1115 header.packet_packet_number = 1; | 1115 header.packet_packet_number = 1; |
| 1116 | 1116 |
| 1117 QuicFrames frames; | 1117 QuicFrames frames; |
| 1118 QuicPaddingFrame padding; | 1118 QuicPaddingFrame padding; |
| 1119 frames.push_back(QuicFrame(&frame1_)); | 1119 frames.push_back(QuicFrame(&frame1_)); |
| 1120 frames.push_back(QuicFrame(&padding)); | 1120 frames.push_back(QuicFrame(padding)); |
| 1121 scoped_ptr<QuicPacket> packet(ConstructPacket(header, frames)); | 1121 scoped_ptr<QuicPacket> packet(ConstructPacket(header, frames)); |
| 1122 char buffer[kMaxPacketSize]; | 1122 char buffer[kMaxPacketSize]; |
| 1123 scoped_ptr<QuicEncryptedPacket> encrypted(framer_.EncryptPayload( | 1123 scoped_ptr<QuicEncryptedPacket> encrypted(framer_.EncryptPayload( |
| 1124 ENCRYPTION_NONE, 12, *packet, buffer, kMaxPacketSize)); | 1124 ENCRYPTION_NONE, 12, *packet, buffer, kMaxPacketSize)); |
| 1125 EXPECT_EQ(kMaxPacketSize, encrypted->length()); | 1125 EXPECT_EQ(kMaxPacketSize, encrypted->length()); |
| 1126 | 1126 |
| 1127 framer_.set_version(version()); | 1127 framer_.set_version(version()); |
| 1128 EXPECT_CALL(visitor_, OnStreamFrame(_)).Times(1); | 1128 EXPECT_CALL(visitor_, OnStreamFrame(_)).Times(1); |
| 1129 connection_.ProcessUdpPacket(kSelfAddress, kPeerAddress, *encrypted); | 1129 connection_.ProcessUdpPacket(kSelfAddress, kPeerAddress, *encrypted); |
| 1130 | 1130 |
| (...skipping 2885 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4016 EXPECT_CALL(visitor_, OnWindowUpdateFrame(_)); | 4016 EXPECT_CALL(visitor_, OnWindowUpdateFrame(_)); |
| 4017 ProcessFramePacket(QuicFrame(&window_update)); | 4017 ProcessFramePacket(QuicFrame(&window_update)); |
| 4018 } | 4018 } |
| 4019 | 4019 |
| 4020 TEST_P(QuicConnectionTest, Blocked) { | 4020 TEST_P(QuicConnectionTest, Blocked) { |
| 4021 EXPECT_CALL(visitor_, OnSuccessfulVersionNegotiation(_)); | 4021 EXPECT_CALL(visitor_, OnSuccessfulVersionNegotiation(_)); |
| 4022 | 4022 |
| 4023 QuicBlockedFrame blocked; | 4023 QuicBlockedFrame blocked; |
| 4024 blocked.stream_id = 3; | 4024 blocked.stream_id = 3; |
| 4025 EXPECT_CALL(visitor_, OnBlockedFrame(_)); | 4025 EXPECT_CALL(visitor_, OnBlockedFrame(_)); |
| 4026 ProcessFramePacket(QuicFrame(&blocked)); | 4026 ProcessFramePacket(QuicFrame(blocked)); |
| 4027 } | 4027 } |
| 4028 | 4028 |
| 4029 TEST_P(QuicConnectionTest, ZeroBytePacket) { | 4029 TEST_P(QuicConnectionTest, ZeroBytePacket) { |
| 4030 // Don't close the connection for zero byte packets. | 4030 // Don't close the connection for zero byte packets. |
| 4031 EXPECT_CALL(visitor_, OnConnectionClosed(_, _)).Times(0); | 4031 EXPECT_CALL(visitor_, OnConnectionClosed(_, _)).Times(0); |
| 4032 QuicEncryptedPacket encrypted(nullptr, 0); | 4032 QuicEncryptedPacket encrypted(nullptr, 0); |
| 4033 connection_.ProcessUdpPacket(kSelfAddress, kPeerAddress, encrypted); | 4033 connection_.ProcessUdpPacket(kSelfAddress, kPeerAddress, encrypted); |
| 4034 } | 4034 } |
| 4035 | 4035 |
| 4036 TEST_P(QuicConnectionTest, MissingPacketsBeforeLeastUnacked) { | 4036 TEST_P(QuicConnectionTest, MissingPacketsBeforeLeastUnacked) { |
| (...skipping 726 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4763 | 4763 |
| 4764 // Ensure that this has caused the ACK alarm to be set. | 4764 // Ensure that this has caused the ACK alarm to be set. |
| 4765 QuicAlarm* ack_alarm = QuicConnectionPeer::GetAckAlarm(&connection_); | 4765 QuicAlarm* ack_alarm = QuicConnectionPeer::GetAckAlarm(&connection_); |
| 4766 EXPECT_TRUE(ack_alarm->IsSet()); | 4766 EXPECT_TRUE(ack_alarm->IsSet()); |
| 4767 | 4767 |
| 4768 // Cancel alarm, and try again with BLOCKED frame. | 4768 // Cancel alarm, and try again with BLOCKED frame. |
| 4769 ack_alarm->Cancel(); | 4769 ack_alarm->Cancel(); |
| 4770 QuicBlockedFrame blocked; | 4770 QuicBlockedFrame blocked; |
| 4771 blocked.stream_id = 3; | 4771 blocked.stream_id = 3; |
| 4772 EXPECT_CALL(visitor_, OnBlockedFrame(_)); | 4772 EXPECT_CALL(visitor_, OnBlockedFrame(_)); |
| 4773 ProcessFramePacket(QuicFrame(&blocked)); | 4773 ProcessFramePacket(QuicFrame(blocked)); |
| 4774 EXPECT_TRUE(ack_alarm->IsSet()); | 4774 EXPECT_TRUE(ack_alarm->IsSet()); |
| 4775 } | 4775 } |
| 4776 | 4776 |
| 4777 TEST_P(QuicConnectionTest, NoDataNoFin) { | 4777 TEST_P(QuicConnectionTest, NoDataNoFin) { |
| 4778 // Make sure that a call to SendStreamWithData, with no data and no FIN, does | 4778 // Make sure that a call to SendStreamWithData, with no data and no FIN, does |
| 4779 // not result in a QuicAckNotifier being used-after-free (fail under ASAN). | 4779 // not result in a QuicAckNotifier being used-after-free (fail under ASAN). |
| 4780 // Regression test for b/18594622 | 4780 // Regression test for b/18594622 |
| 4781 scoped_refptr<MockAckNotifierDelegate> delegate(new MockAckNotifierDelegate); | 4781 scoped_refptr<MockAckNotifierDelegate> delegate(new MockAckNotifierDelegate); |
| 4782 EXPECT_DFATAL( | 4782 EXPECT_DFATAL( |
| 4783 connection_.SendStreamDataWithString(3, "", 0, !kFin, delegate.get()), | 4783 connection_.SendStreamDataWithString(3, "", 0, !kFin, delegate.get()), |
| (...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4826 EXPECT_CALL(*send_algorithm_, OnPacketSent(_, _, _, _, _)).Times(1); | 4826 EXPECT_CALL(*send_algorithm_, OnPacketSent(_, _, _, _, _)).Times(1); |
| 4827 connection_.SendGoAway(QUIC_PEER_GOING_AWAY, kHeadersStreamId, "Going Away."); | 4827 connection_.SendGoAway(QUIC_PEER_GOING_AWAY, kHeadersStreamId, "Going Away."); |
| 4828 EXPECT_TRUE(connection_.goaway_sent()); | 4828 EXPECT_TRUE(connection_.goaway_sent()); |
| 4829 EXPECT_CALL(*send_algorithm_, OnPacketSent(_, _, _, _, _)).Times(0); | 4829 EXPECT_CALL(*send_algorithm_, OnPacketSent(_, _, _, _, _)).Times(0); |
| 4830 connection_.SendGoAway(QUIC_PEER_GOING_AWAY, kHeadersStreamId, "Going Away."); | 4830 connection_.SendGoAway(QUIC_PEER_GOING_AWAY, kHeadersStreamId, "Going Away."); |
| 4831 } | 4831 } |
| 4832 | 4832 |
| 4833 } // namespace | 4833 } // namespace |
| 4834 } // namespace test | 4834 } // namespace test |
| 4835 } // namespace net | 4835 } // namespace net |
| OLD | NEW |