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

Side by Side Diff: net/socket/socks_client_socket_unittest.cc

Issue 551135: Cleanup the unittest helpers in load_log_unittest.h.... (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: Sync and merge conflicts Created 10 years, 11 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 | Annotate | Revision Log
« no previous file with comments | « net/socket/socks5_client_socket_unittest.cc ('k') | net/socket/ssl_client_socket_unittest.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) 2009 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2009 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/socket/socks_client_socket.h" 5 #include "net/socket/socks_client_socket.h"
6 6
7 #include "net/base/address_list.h" 7 #include "net/base/address_list.h"
8 #include "net/base/load_log.h" 8 #include "net/base/load_log.h"
9 #include "net/base/load_log_unittest.h" 9 #include "net/base/load_log_unittest.h"
10 #include "net/base/mock_host_resolver.h" 10 #include "net/base/mock_host_resolver.h"
(...skipping 121 matching lines...) Expand 10 before | Expand all | Expand 10 after
132 "localhost", 80)); 132 "localhost", 80));
133 133
134 // At this state the TCP connection is completed but not the SOCKS handshake. 134 // At this state the TCP connection is completed but not the SOCKS handshake.
135 EXPECT_TRUE(tcp_sock_->IsConnected()); 135 EXPECT_TRUE(tcp_sock_->IsConnected());
136 EXPECT_FALSE(user_sock_->IsConnected()); 136 EXPECT_FALSE(user_sock_->IsConnected());
137 137
138 scoped_refptr<LoadLog> log(new LoadLog(LoadLog::kUnbounded)); 138 scoped_refptr<LoadLog> log(new LoadLog(LoadLog::kUnbounded));
139 int rv = user_sock_->Connect(&callback_, log); 139 int rv = user_sock_->Connect(&callback_, log);
140 EXPECT_EQ(ERR_IO_PENDING, rv); 140 EXPECT_EQ(ERR_IO_PENDING, rv);
141 EXPECT_TRUE( 141 EXPECT_TRUE(
142 LogContains(*log, 0, LoadLog::TYPE_SOCKS_CONNECT, LoadLog::PHASE_BEGIN)); 142 LogContainsBeginEvent(*log, 0, LoadLog::TYPE_SOCKS_CONNECT));
143 EXPECT_FALSE(user_sock_->IsConnected()); 143 EXPECT_FALSE(user_sock_->IsConnected());
144 rv = callback_.WaitForResult(); 144 rv = callback_.WaitForResult();
145 145
146 EXPECT_EQ(OK, rv); 146 EXPECT_EQ(OK, rv);
147 EXPECT_TRUE(user_sock_->IsConnected()); 147 EXPECT_TRUE(user_sock_->IsConnected());
148 EXPECT_EQ(SOCKSClientSocket::kSOCKS4, user_sock_->socks_version_); 148 EXPECT_EQ(SOCKSClientSocket::kSOCKS4, user_sock_->socks_version_);
149 EXPECT_TRUE(LogContains( 149 EXPECT_TRUE(LogContainsEndEvent(*log, -1, LoadLog::TYPE_SOCKS_CONNECT));
150 *log, -1, LoadLog::TYPE_SOCKS_CONNECT, LoadLog::PHASE_END));
151 150
152 scoped_refptr<IOBuffer> buffer = new IOBuffer(payload_write.size()); 151 scoped_refptr<IOBuffer> buffer = new IOBuffer(payload_write.size());
153 memcpy(buffer->data(), payload_write.data(), payload_write.size()); 152 memcpy(buffer->data(), payload_write.data(), payload_write.size());
154 rv = user_sock_->Write(buffer, payload_write.size(), &callback_); 153 rv = user_sock_->Write(buffer, payload_write.size(), &callback_);
155 EXPECT_EQ(ERR_IO_PENDING, rv); 154 EXPECT_EQ(ERR_IO_PENDING, rv);
156 rv = callback_.WaitForResult(); 155 rv = callback_.WaitForResult();
157 EXPECT_EQ(static_cast<int>(payload_write.size()), rv); 156 EXPECT_EQ(static_cast<int>(payload_write.size()), rv);
158 157
159 buffer = new IOBuffer(payload_read.size()); 158 buffer = new IOBuffer(payload_read.size());
160 rv = user_sock_->Read(buffer, payload_read.size(), &callback_); 159 rv = user_sock_->Read(buffer, payload_read.size(), &callback_);
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
194 MockWrite(false, kSOCKSOkRequest, arraysize(kSOCKSOkRequest)) }; 193 MockWrite(false, kSOCKSOkRequest, arraysize(kSOCKSOkRequest)) };
195 MockRead data_reads[] = { 194 MockRead data_reads[] = {
196 MockRead(false, tests[i].fail_reply, arraysize(tests[i].fail_reply)) }; 195 MockRead(false, tests[i].fail_reply, arraysize(tests[i].fail_reply)) };
197 196
198 user_sock_.reset(BuildMockSocket(data_reads, data_writes, host_resolver_, 197 user_sock_.reset(BuildMockSocket(data_reads, data_writes, host_resolver_,
199 "localhost", 80)); 198 "localhost", 80));
200 scoped_refptr<LoadLog> log(new LoadLog(LoadLog::kUnbounded)); 199 scoped_refptr<LoadLog> log(new LoadLog(LoadLog::kUnbounded));
201 200
202 int rv = user_sock_->Connect(&callback_, log); 201 int rv = user_sock_->Connect(&callback_, log);
203 EXPECT_EQ(ERR_IO_PENDING, rv); 202 EXPECT_EQ(ERR_IO_PENDING, rv);
204 EXPECT_TRUE(LogContains( 203 EXPECT_TRUE(LogContainsBeginEvent(*log, 0, LoadLog::TYPE_SOCKS_CONNECT));
205 *log, 0, LoadLog::TYPE_SOCKS_CONNECT, LoadLog::PHASE_BEGIN));
206 rv = callback_.WaitForResult(); 204 rv = callback_.WaitForResult();
207 EXPECT_EQ(tests[i].fail_code, rv); 205 EXPECT_EQ(tests[i].fail_code, rv);
208 EXPECT_FALSE(user_sock_->IsConnected()); 206 EXPECT_FALSE(user_sock_->IsConnected());
209 EXPECT_TRUE(tcp_sock_->IsConnected()); 207 EXPECT_TRUE(tcp_sock_->IsConnected());
210 EXPECT_TRUE(LogContains( 208 EXPECT_TRUE(LogContainsEndEvent(*log, -1, LoadLog::TYPE_SOCKS_CONNECT));
211 *log, -1, LoadLog::TYPE_SOCKS_CONNECT, LoadLog::PHASE_END));
212 } 209 }
213 } 210 }
214 211
215 // Tests scenario when the server sends the handshake response in 212 // Tests scenario when the server sends the handshake response in
216 // more than one packet. 213 // more than one packet.
217 TEST_F(SOCKSClientSocketTest, PartialServerReads) { 214 TEST_F(SOCKSClientSocketTest, PartialServerReads) {
218 const char kSOCKSPartialReply1[] = { 0x00 }; 215 const char kSOCKSPartialReply1[] = { 0x00 };
219 const char kSOCKSPartialReply2[] = { 0x5A, 0x00, 0x00, 0, 0, 0, 0 }; 216 const char kSOCKSPartialReply2[] = { 0x5A, 0x00, 0x00, 0, 0, 0, 0 };
220 217
221 MockWrite data_writes[] = { 218 MockWrite data_writes[] = {
222 MockWrite(true, kSOCKSOkRequest, arraysize(kSOCKSOkRequest)) }; 219 MockWrite(true, kSOCKSOkRequest, arraysize(kSOCKSOkRequest)) };
223 MockRead data_reads[] = { 220 MockRead data_reads[] = {
224 MockRead(true, kSOCKSPartialReply1, arraysize(kSOCKSPartialReply1)), 221 MockRead(true, kSOCKSPartialReply1, arraysize(kSOCKSPartialReply1)),
225 MockRead(true, kSOCKSPartialReply2, arraysize(kSOCKSPartialReply2)) }; 222 MockRead(true, kSOCKSPartialReply2, arraysize(kSOCKSPartialReply2)) };
226 223
227 user_sock_.reset(BuildMockSocket(data_reads, data_writes, host_resolver_, 224 user_sock_.reset(BuildMockSocket(data_reads, data_writes, host_resolver_,
228 "localhost", 80)); 225 "localhost", 80));
229 scoped_refptr<LoadLog> log(new LoadLog(LoadLog::kUnbounded)); 226 scoped_refptr<LoadLog> log(new LoadLog(LoadLog::kUnbounded));
230 227
231 int rv = user_sock_->Connect(&callback_, log); 228 int rv = user_sock_->Connect(&callback_, log);
232 EXPECT_EQ(ERR_IO_PENDING, rv); 229 EXPECT_EQ(ERR_IO_PENDING, rv);
233 EXPECT_TRUE(LogContains( 230 EXPECT_TRUE(LogContainsBeginEvent(
234 *log, 0, LoadLog::TYPE_SOCKS_CONNECT, LoadLog::PHASE_BEGIN)); 231 *log, 0, LoadLog::TYPE_SOCKS_CONNECT));
235 rv = callback_.WaitForResult(); 232 rv = callback_.WaitForResult();
236 EXPECT_EQ(OK, rv); 233 EXPECT_EQ(OK, rv);
237 EXPECT_TRUE(user_sock_->IsConnected()); 234 EXPECT_TRUE(user_sock_->IsConnected());
238 EXPECT_TRUE(LogContains( 235 EXPECT_TRUE(LogContainsEndEvent(*log, -1, LoadLog::TYPE_SOCKS_CONNECT));
239 *log, -1, LoadLog::TYPE_SOCKS_CONNECT, LoadLog::PHASE_END));
240 } 236 }
241 237
242 // Tests scenario when the client sends the handshake request in 238 // Tests scenario when the client sends the handshake request in
243 // more than one packet. 239 // more than one packet.
244 TEST_F(SOCKSClientSocketTest, PartialClientWrites) { 240 TEST_F(SOCKSClientSocketTest, PartialClientWrites) {
245 const char kSOCKSPartialRequest1[] = { 0x04, 0x01 }; 241 const char kSOCKSPartialRequest1[] = { 0x04, 0x01 };
246 const char kSOCKSPartialRequest2[] = { 0x00, 0x50, 127, 0, 0, 1, 0 }; 242 const char kSOCKSPartialRequest2[] = { 0x00, 0x50, 127, 0, 0, 1, 0 };
247 243
248 MockWrite data_writes[] = { 244 MockWrite data_writes[] = {
249 MockWrite(true, arraysize(kSOCKSPartialRequest1)), 245 MockWrite(true, arraysize(kSOCKSPartialRequest1)),
250 // simulate some empty writes 246 // simulate some empty writes
251 MockWrite(true, 0), 247 MockWrite(true, 0),
252 MockWrite(true, 0), 248 MockWrite(true, 0),
253 MockWrite(true, kSOCKSPartialRequest2, 249 MockWrite(true, kSOCKSPartialRequest2,
254 arraysize(kSOCKSPartialRequest2)) }; 250 arraysize(kSOCKSPartialRequest2)) };
255 MockRead data_reads[] = { 251 MockRead data_reads[] = {
256 MockRead(true, kSOCKSOkReply, arraysize(kSOCKSOkReply)) }; 252 MockRead(true, kSOCKSOkReply, arraysize(kSOCKSOkReply)) };
257 253
258 user_sock_.reset(BuildMockSocket(data_reads, data_writes, host_resolver_, 254 user_sock_.reset(BuildMockSocket(data_reads, data_writes, host_resolver_,
259 "localhost", 80)); 255 "localhost", 80));
260 scoped_refptr<LoadLog> log(new LoadLog(LoadLog::kUnbounded)); 256 scoped_refptr<LoadLog> log(new LoadLog(LoadLog::kUnbounded));
261 257
262 int rv = user_sock_->Connect(&callback_, log); 258 int rv = user_sock_->Connect(&callback_, log);
263 EXPECT_EQ(ERR_IO_PENDING, rv); 259 EXPECT_EQ(ERR_IO_PENDING, rv);
264 EXPECT_TRUE(LogContains( 260 EXPECT_TRUE(LogContainsBeginEvent(*log, 0, LoadLog::TYPE_SOCKS_CONNECT));
265 *log, 0, LoadLog::TYPE_SOCKS_CONNECT, LoadLog::PHASE_BEGIN));
266 rv = callback_.WaitForResult(); 261 rv = callback_.WaitForResult();
267 EXPECT_EQ(OK, rv); 262 EXPECT_EQ(OK, rv);
268 EXPECT_TRUE(user_sock_->IsConnected()); 263 EXPECT_TRUE(user_sock_->IsConnected());
269 EXPECT_TRUE(LogContains( 264 EXPECT_TRUE(LogContainsEndEvent(*log, -1, LoadLog::TYPE_SOCKS_CONNECT));
270 *log, -1, LoadLog::TYPE_SOCKS_CONNECT, LoadLog::PHASE_END));
271 } 265 }
272 266
273 // Tests the case when the server sends a smaller sized handshake data 267 // Tests the case when the server sends a smaller sized handshake data
274 // and closes the connection. 268 // and closes the connection.
275 TEST_F(SOCKSClientSocketTest, FailedSocketRead) { 269 TEST_F(SOCKSClientSocketTest, FailedSocketRead) {
276 MockWrite data_writes[] = { 270 MockWrite data_writes[] = {
277 MockWrite(true, kSOCKSOkRequest, arraysize(kSOCKSOkRequest)) }; 271 MockWrite(true, kSOCKSOkRequest, arraysize(kSOCKSOkRequest)) };
278 MockRead data_reads[] = { 272 MockRead data_reads[] = {
279 MockRead(true, kSOCKSOkReply, arraysize(kSOCKSOkReply) - 2), 273 MockRead(true, kSOCKSOkReply, arraysize(kSOCKSOkReply) - 2),
280 // close connection unexpectedly 274 // close connection unexpectedly
281 MockRead(false, 0) }; 275 MockRead(false, 0) };
282 276
283 user_sock_.reset(BuildMockSocket(data_reads, data_writes, host_resolver_, 277 user_sock_.reset(BuildMockSocket(data_reads, data_writes, host_resolver_,
284 "localhost", 80)); 278 "localhost", 80));
285 scoped_refptr<LoadLog> log(new LoadLog(LoadLog::kUnbounded)); 279 scoped_refptr<LoadLog> log(new LoadLog(LoadLog::kUnbounded));
286 280
287 int rv = user_sock_->Connect(&callback_, log); 281 int rv = user_sock_->Connect(&callback_, log);
288 EXPECT_EQ(ERR_IO_PENDING, rv); 282 EXPECT_EQ(ERR_IO_PENDING, rv);
289 EXPECT_TRUE(LogContains( 283 EXPECT_TRUE(LogContainsBeginEvent(*log, 0, LoadLog::TYPE_SOCKS_CONNECT));
290 *log, 0, LoadLog::TYPE_SOCKS_CONNECT, LoadLog::PHASE_BEGIN));
291 rv = callback_.WaitForResult(); 284 rv = callback_.WaitForResult();
292 EXPECT_EQ(ERR_CONNECTION_CLOSED, rv); 285 EXPECT_EQ(ERR_CONNECTION_CLOSED, rv);
293 EXPECT_FALSE(user_sock_->IsConnected()); 286 EXPECT_FALSE(user_sock_->IsConnected());
294 EXPECT_TRUE(LogContains( 287 EXPECT_TRUE(LogContainsEndEvent(*log, -1, LoadLog::TYPE_SOCKS_CONNECT));
295 *log, -1, LoadLog::TYPE_SOCKS_CONNECT, LoadLog::PHASE_END));
296 } 288 }
297 289
298 // Tries to connect to an unknown DNS and on failure should revert to SOCKS4A. 290 // Tries to connect to an unknown DNS and on failure should revert to SOCKS4A.
299 TEST_F(SOCKSClientSocketTest, SOCKS4AFailedDNS) { 291 TEST_F(SOCKSClientSocketTest, SOCKS4AFailedDNS) {
300 const char hostname[] = "unresolved.ipv4.address"; 292 const char hostname[] = "unresolved.ipv4.address";
301 293
302 host_resolver_->rules()->AddSimulatedFailure(hostname); 294 host_resolver_->rules()->AddSimulatedFailure(hostname);
303 295
304 std::string request(kSOCKS4aInitialRequest, 296 std::string request(kSOCKS4aInitialRequest,
305 arraysize(kSOCKS4aInitialRequest)); 297 arraysize(kSOCKS4aInitialRequest));
306 request.append(hostname, arraysize(hostname)); 298 request.append(hostname, arraysize(hostname));
307 299
308 MockWrite data_writes[] = { 300 MockWrite data_writes[] = {
309 MockWrite(false, request.data(), request.size()) }; 301 MockWrite(false, request.data(), request.size()) };
310 MockRead data_reads[] = { 302 MockRead data_reads[] = {
311 MockRead(false, kSOCKSOkReply, arraysize(kSOCKSOkReply)) }; 303 MockRead(false, kSOCKSOkReply, arraysize(kSOCKSOkReply)) };
312 304
313 user_sock_.reset(BuildMockSocket(data_reads, data_writes, host_resolver_, 305 user_sock_.reset(BuildMockSocket(data_reads, data_writes, host_resolver_,
314 hostname, 80)); 306 hostname, 80));
315 scoped_refptr<LoadLog> log(new LoadLog(LoadLog::kUnbounded)); 307 scoped_refptr<LoadLog> log(new LoadLog(LoadLog::kUnbounded));
316 308
317 int rv = user_sock_->Connect(&callback_, log); 309 int rv = user_sock_->Connect(&callback_, log);
318 EXPECT_EQ(ERR_IO_PENDING, rv); 310 EXPECT_EQ(ERR_IO_PENDING, rv);
319 EXPECT_TRUE(LogContains( 311 EXPECT_TRUE(LogContainsBeginEvent(*log, 0, LoadLog::TYPE_SOCKS_CONNECT));
320 *log, 0, LoadLog::TYPE_SOCKS_CONNECT, LoadLog::PHASE_BEGIN));
321 rv = callback_.WaitForResult(); 312 rv = callback_.WaitForResult();
322 EXPECT_EQ(OK, rv); 313 EXPECT_EQ(OK, rv);
323 EXPECT_TRUE(user_sock_->IsConnected()); 314 EXPECT_TRUE(user_sock_->IsConnected());
324 EXPECT_EQ(SOCKSClientSocket::kSOCKS4a, user_sock_->socks_version_); 315 EXPECT_EQ(SOCKSClientSocket::kSOCKS4a, user_sock_->socks_version_);
325 EXPECT_TRUE(LogContains( 316 EXPECT_TRUE(LogContainsEndEvent(*log, -1, LoadLog::TYPE_SOCKS_CONNECT));
326 *log, -1, LoadLog::TYPE_SOCKS_CONNECT, LoadLog::PHASE_END));
327 } 317 }
328 318
329 // Tries to connect to a domain that resolves to IPv6. 319 // Tries to connect to a domain that resolves to IPv6.
330 // Should revert to SOCKS4a. 320 // Should revert to SOCKS4a.
331 TEST_F(SOCKSClientSocketTest, SOCKS4AIfDomainInIPv6) { 321 TEST_F(SOCKSClientSocketTest, SOCKS4AIfDomainInIPv6) {
332 const char hostname[] = "an.ipv6.address"; 322 const char hostname[] = "an.ipv6.address";
333 323
334 host_resolver_->rules()->AddIPv6Rule(hostname, "2001:db8:8714:3a90::12"); 324 host_resolver_->rules()->AddIPv6Rule(hostname, "2001:db8:8714:3a90::12");
335 325
336 std::string request(kSOCKS4aInitialRequest, 326 std::string request(kSOCKS4aInitialRequest,
337 arraysize(kSOCKS4aInitialRequest)); 327 arraysize(kSOCKS4aInitialRequest));
338 request.append(hostname, arraysize(hostname)); 328 request.append(hostname, arraysize(hostname));
339 329
340 MockWrite data_writes[] = { 330 MockWrite data_writes[] = {
341 MockWrite(false, request.data(), request.size()) }; 331 MockWrite(false, request.data(), request.size()) };
342 MockRead data_reads[] = { 332 MockRead data_reads[] = {
343 MockRead(false, kSOCKSOkReply, arraysize(kSOCKSOkReply)) }; 333 MockRead(false, kSOCKSOkReply, arraysize(kSOCKSOkReply)) };
344 334
345 user_sock_.reset(BuildMockSocket(data_reads, data_writes, host_resolver_, 335 user_sock_.reset(BuildMockSocket(data_reads, data_writes, host_resolver_,
346 hostname, 80)); 336 hostname, 80));
347 scoped_refptr<LoadLog> log(new LoadLog(LoadLog::kUnbounded)); 337 scoped_refptr<LoadLog> log(new LoadLog(LoadLog::kUnbounded));
348 338
349 int rv = user_sock_->Connect(&callback_, log); 339 int rv = user_sock_->Connect(&callback_, log);
350 EXPECT_EQ(ERR_IO_PENDING, rv); 340 EXPECT_EQ(ERR_IO_PENDING, rv);
351 EXPECT_TRUE(LogContains( 341 EXPECT_TRUE(LogContainsBeginEvent(*log, 0, LoadLog::TYPE_SOCKS_CONNECT));
352 *log, 0, LoadLog::TYPE_SOCKS_CONNECT, LoadLog::PHASE_BEGIN));
353 rv = callback_.WaitForResult(); 342 rv = callback_.WaitForResult();
354 EXPECT_EQ(OK, rv); 343 EXPECT_EQ(OK, rv);
355 EXPECT_TRUE(user_sock_->IsConnected()); 344 EXPECT_TRUE(user_sock_->IsConnected());
356 EXPECT_EQ(SOCKSClientSocket::kSOCKS4a, user_sock_->socks_version_); 345 EXPECT_EQ(SOCKSClientSocket::kSOCKS4a, user_sock_->socks_version_);
357 EXPECT_TRUE(LogContains( 346 EXPECT_TRUE(LogContainsEndEvent(*log, -1, LoadLog::TYPE_SOCKS_CONNECT));
358 *log, -1, LoadLog::TYPE_SOCKS_CONNECT, LoadLog::PHASE_END));
359 } 347 }
360 348
361 // Calls Disconnect() while a host resolve is in progress. The outstanding host 349 // Calls Disconnect() while a host resolve is in progress. The outstanding host
362 // resolve should be cancelled. 350 // resolve should be cancelled.
363 TEST_F(SOCKSClientSocketTest, DisconnectWhileHostResolveInProgress) { 351 TEST_F(SOCKSClientSocketTest, DisconnectWhileHostResolveInProgress) {
364 scoped_refptr<HangingHostResolver> hanging_resolver = 352 scoped_refptr<HangingHostResolver> hanging_resolver =
365 new HangingHostResolver(); 353 new HangingHostResolver();
366 354
367 // Doesn't matter what the socket data is, we will never use it -- garbage. 355 // Doesn't matter what the socket data is, we will never use it -- garbage.
368 MockWrite data_writes[] = { MockWrite(false, "", 0) }; 356 MockWrite data_writes[] = { MockWrite(false, "", 0) };
(...skipping 15 matching lines...) Expand all
384 // Disconnect the SOCKS socket -- this should cancel the outstanding resolve. 372 // Disconnect the SOCKS socket -- this should cancel the outstanding resolve.
385 user_sock_->Disconnect(); 373 user_sock_->Disconnect();
386 374
387 EXPECT_FALSE(hanging_resolver->HasOutstandingRequest()); 375 EXPECT_FALSE(hanging_resolver->HasOutstandingRequest());
388 376
389 EXPECT_FALSE(user_sock_->IsConnected()); 377 EXPECT_FALSE(user_sock_->IsConnected());
390 EXPECT_FALSE(user_sock_->IsConnectedAndIdle()); 378 EXPECT_FALSE(user_sock_->IsConnectedAndIdle());
391 } 379 }
392 380
393 } // namespace net 381 } // namespace net
OLDNEW
« no previous file with comments | « net/socket/socks5_client_socket_unittest.cc ('k') | net/socket/ssl_client_socket_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698