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

Side by Side Diff: net/tools/quic/quic_client_session_test.cc

Issue 667763003: Landing Recent QUIC Changes. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 6 years, 2 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/tools/quic/end_to_end_test.cc ('k') | net/tools/quic/quic_server_session.cc » ('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/tools/quic/quic_client_session.h" 5 #include "net/tools/quic/quic_client_session.h"
6 6
7 #include <vector> 7 #include <vector>
8 8
9 #include "net/base/ip_endpoint.h" 9 #include "net/base/ip_endpoint.h"
10 #include "net/quic/crypto/aes_128_gcm_12_encrypter.h" 10 #include "net/quic/crypto/aes_128_gcm_12_encrypter.h"
(...skipping 93 matching lines...) Expand 10 before | Expand all | Expand 10 after
104 104
105 // Verify that headers stream is always protected and data streams are 105 // Verify that headers stream is always protected and data streams are
106 // optionally protected. 106 // optionally protected.
107 EXPECT_EQ(FEC_PROTECT_ALWAYS, 107 EXPECT_EQ(FEC_PROTECT_ALWAYS,
108 QuicSessionPeer::GetHeadersStream(session_.get())->fec_policy()); 108 QuicSessionPeer::GetHeadersStream(session_.get())->fec_policy());
109 QuicSpdyClientStream* stream = session_->CreateOutgoingDataStream(); 109 QuicSpdyClientStream* stream = session_->CreateOutgoingDataStream();
110 ASSERT_TRUE(stream); 110 ASSERT_TRUE(stream);
111 EXPECT_EQ(FEC_PROTECT_OPTIONAL, stream->fec_policy()); 111 EXPECT_EQ(FEC_PROTECT_OPTIONAL, stream->fec_policy());
112 } 112 }
113 113
114 TEST_P(ToolsQuicClientSessionTest, EmptyPacketReceived) { 114 // Regression test for b/17206611.
115 // This test covers broken behavior that empty packets cause QUIC connection 115 TEST_P(ToolsQuicClientSessionTest, InvalidPacketReceived) {
116 // broken.
117
118 // Create Packet with 0 length. 116 // Create Packet with 0 length.
119 QuicEncryptedPacket invalid_packet(nullptr, 0, false); 117 QuicEncryptedPacket invalid_packet(nullptr, 0, false);
120 IPEndPoint server_address(TestPeerIPAddress(), kTestPort); 118 IPEndPoint server_address(TestPeerIPAddress(), kTestPort);
121 IPEndPoint client_address(TestPeerIPAddress(), kTestPort); 119 IPEndPoint client_address(TestPeerIPAddress(), kTestPort);
122 120
123 EXPECT_CALL(*reinterpret_cast<MockConnection*>(session_->connection()), 121 EXPECT_CALL(*reinterpret_cast<MockConnection*>(session_->connection()),
124 ProcessUdpPacket(server_address, client_address, _)) 122 ProcessUdpPacket(server_address, client_address, _))
125 .WillRepeatedly( 123 .WillRepeatedly(
126 Invoke(reinterpret_cast<MockConnection*>(session_->connection()), 124 Invoke(reinterpret_cast<MockConnection*>(session_->connection()),
127 &MockConnection::ReallyProcessUdpPacket)); 125 &MockConnection::ReallyProcessUdpPacket));
128 126
129 // Expect call to close connection with error QUIC_INVALID_PACKET_HEADER. 127 // Validate that empty packets don't close the connection.
130 // TODO(b/17206611): Correct behavior: packet should get dropped and 128 EXPECT_CALL(*connection_, SendConnectionCloseWithDetails(_, _)).Times(0);
131 // connection should remain open.
132 EXPECT_CALL(*connection_, SendConnectionCloseWithDetails(
133 QUIC_INVALID_PACKET_HEADER, _)).Times(1);
134 session_->connection()->ProcessUdpPacket(client_address, server_address, 129 session_->connection()->ProcessUdpPacket(client_address, server_address,
135 invalid_packet); 130 invalid_packet);
136 131
137 // Create a packet that causes DecryptPacket failed. The packet will get 132 // Verifiy that small, invalid packets don't close the connection.
138 // dropped without closing connection. This is a correct behavior.
139 char buf[2] = {0x00, 0x01}; 133 char buf[2] = {0x00, 0x01};
140 QuicEncryptedPacket valid_packet(buf, 2, false); 134 QuicEncryptedPacket valid_packet(buf, 2, false);
141 // Close connection shouldn't be called. 135 // Close connection shouldn't be called.
142 EXPECT_CALL(*connection_, SendConnectionCloseWithDetails(_, _)).Times(0); 136 EXPECT_CALL(*connection_, SendConnectionCloseWithDetails(_, _)).Times(0);
143 session_->connection()->ProcessUdpPacket(client_address, server_address, 137 session_->connection()->ProcessUdpPacket(client_address, server_address,
144 valid_packet); 138 valid_packet);
145 } 139 }
146 140
147 } // namespace 141 } // namespace
148 } // namespace test 142 } // namespace test
149 } // namespace tools 143 } // namespace tools
150 } // namespace net 144 } // namespace net
OLDNEW
« no previous file with comments | « net/tools/quic/end_to_end_test.cc ('k') | net/tools/quic/quic_server_session.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698