OLD | NEW |
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 <math.h> // ceil | 5 #include <math.h> // ceil |
6 | 6 |
7 #include "base/compiler_specific.h" | 7 #include "base/compiler_specific.h" |
8 #include "net/base/completion_callback.h" | 8 #include "net/base/completion_callback.h" |
9 #include "net/base/mock_host_resolver.h" | 9 #include "net/base/mock_host_resolver.h" |
10 #include "net/base/ssl_config_service_defaults.h" | 10 #include "net/base/ssl_config_service_defaults.h" |
(...skipping 3405 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3416 scoped_ptr<HttpTransaction> trans( | 3416 scoped_ptr<HttpTransaction> trans( |
3417 new HttpNetworkTransaction(CreateSession(&session_deps))); | 3417 new HttpNetworkTransaction(CreateSession(&session_deps))); |
3418 | 3418 |
3419 HttpRequestInfo request; | 3419 HttpRequestInfo request; |
3420 request.method = "GET"; | 3420 request.method = "GET"; |
3421 request.url = GURL("http://www.google.com/"); | 3421 request.url = GURL("http://www.google.com/"); |
3422 request.load_flags = 0; | 3422 request.load_flags = 0; |
3423 | 3423 |
3424 const char kSOCKS5GreetRequest[] = { 0x05, 0x01, 0x00 }; | 3424 const char kSOCKS5GreetRequest[] = { 0x05, 0x01, 0x00 }; |
3425 const char kSOCKS5GreetResponse[] = { 0x05, 0x00 }; | 3425 const char kSOCKS5GreetResponse[] = { 0x05, 0x00 }; |
3426 const char kSOCKS5OkRequest[] = | 3426 const char kSOCKS5OkRequest[] = { |
3427 { 0x05, 0x01, 0x00, 0x01, 127, 0, 0, 1, 0x00, 0x50 }; | 3427 0x05, // Version |
| 3428 0x01, // Command (CONNECT) |
| 3429 0x00, // Reserved. |
| 3430 0x03, // Address type (DOMAINNAME). |
| 3431 0x0E, // Length of domain (14) |
| 3432 // Domain string: |
| 3433 'w', 'w', 'w', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'c', 'o', 'm', |
| 3434 0x00, 0x50, // 16-bit port (80) |
| 3435 }; |
3428 const char kSOCKS5OkResponse[] = | 3436 const char kSOCKS5OkResponse[] = |
3429 { 0x05, 0x00, 0x00, 0x01, 127, 0, 0, 1, 0x00, 0x50 }; | 3437 { 0x05, 0x00, 0x00, 0x01, 127, 0, 0, 1, 0x00, 0x50 }; |
3430 | 3438 |
3431 MockWrite data_writes[] = { | 3439 MockWrite data_writes[] = { |
3432 MockWrite(true, kSOCKS5GreetRequest, arraysize(kSOCKS5GreetRequest)), | 3440 MockWrite(true, kSOCKS5GreetRequest, arraysize(kSOCKS5GreetRequest)), |
3433 MockWrite(true, kSOCKS5OkRequest, arraysize(kSOCKS5OkRequest)), | 3441 MockWrite(true, kSOCKS5OkRequest, arraysize(kSOCKS5OkRequest)), |
3434 MockWrite("GET / HTTP/1.1\r\n" | 3442 MockWrite("GET / HTTP/1.1\r\n" |
3435 "Host: www.google.com\r\n" | 3443 "Host: www.google.com\r\n" |
3436 "Connection: keep-alive\r\n\r\n") | 3444 "Connection: keep-alive\r\n\r\n") |
3437 }; | 3445 }; |
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3472 scoped_ptr<HttpTransaction> trans( | 3480 scoped_ptr<HttpTransaction> trans( |
3473 new HttpNetworkTransaction(CreateSession(&session_deps))); | 3481 new HttpNetworkTransaction(CreateSession(&session_deps))); |
3474 | 3482 |
3475 HttpRequestInfo request; | 3483 HttpRequestInfo request; |
3476 request.method = "GET"; | 3484 request.method = "GET"; |
3477 request.url = GURL("https://www.google.com/"); | 3485 request.url = GURL("https://www.google.com/"); |
3478 request.load_flags = 0; | 3486 request.load_flags = 0; |
3479 | 3487 |
3480 const char kSOCKS5GreetRequest[] = { 0x05, 0x01, 0x00 }; | 3488 const char kSOCKS5GreetRequest[] = { 0x05, 0x01, 0x00 }; |
3481 const char kSOCKS5GreetResponse[] = { 0x05, 0x00 }; | 3489 const char kSOCKS5GreetResponse[] = { 0x05, 0x00 }; |
3482 const unsigned char kSOCKS5OkRequest[] = | 3490 const unsigned char kSOCKS5OkRequest[] = { |
3483 { 0x05, 0x01, 0x00, 0x01, 127, 0, 0, 1, 0x01, 0xBB }; | 3491 0x05, // Version |
| 3492 0x01, // Command (CONNECT) |
| 3493 0x00, // Reserved. |
| 3494 0x03, // Address type (DOMAINNAME). |
| 3495 0x0E, // Length of domain (14) |
| 3496 // Domain string: |
| 3497 'w', 'w', 'w', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'c', 'o', 'm', |
| 3498 0x01, 0xBB, // 16-bit port (443) |
| 3499 }; |
| 3500 |
3484 const char kSOCKS5OkResponse[] = | 3501 const char kSOCKS5OkResponse[] = |
3485 { 0x05, 0x00, 0x00, 0x01, 0, 0, 0, 0, 0x00, 0x00 }; | 3502 { 0x05, 0x00, 0x00, 0x01, 0, 0, 0, 0, 0x00, 0x00 }; |
3486 | 3503 |
3487 MockWrite data_writes[] = { | 3504 MockWrite data_writes[] = { |
3488 MockWrite(true, kSOCKS5GreetRequest, arraysize(kSOCKS5GreetRequest)), | 3505 MockWrite(true, kSOCKS5GreetRequest, arraysize(kSOCKS5GreetRequest)), |
3489 MockWrite(true, reinterpret_cast<const char*>(kSOCKS5OkRequest), | 3506 MockWrite(true, reinterpret_cast<const char*>(kSOCKS5OkRequest), |
3490 arraysize(kSOCKS5OkRequest)), | 3507 arraysize(kSOCKS5OkRequest)), |
3491 MockWrite("GET / HTTP/1.1\r\n" | 3508 MockWrite("GET / HTTP/1.1\r\n" |
3492 "Host: www.google.com\r\n" | 3509 "Host: www.google.com\r\n" |
3493 "Connection: keep-alive\r\n\r\n") | 3510 "Connection: keep-alive\r\n\r\n") |
(...skipping 95 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3589 EXPECT_EQ(ERR_IO_PENDING, trans->Start(&request, &callback, NULL)); | 3606 EXPECT_EQ(ERR_IO_PENDING, trans->Start(&request, &callback, NULL)); |
3590 EXPECT_EQ(tests[i].expected_group_name, | 3607 EXPECT_EQ(tests[i].expected_group_name, |
3591 conn_pool->last_group_name_received()); | 3608 conn_pool->last_group_name_received()); |
3592 } | 3609 } |
3593 } | 3610 } |
3594 | 3611 |
3595 TEST_F(HttpNetworkTransactionTest, ReconsiderProxyAfterFailedConnection) { | 3612 TEST_F(HttpNetworkTransactionTest, ReconsiderProxyAfterFailedConnection) { |
3596 SessionDependencies session_deps( | 3613 SessionDependencies session_deps( |
3597 CreateFixedProxyService("myproxy:70;foobar:80")); | 3614 CreateFixedProxyService("myproxy:70;foobar:80")); |
3598 | 3615 |
| 3616 // This simulates failure resolving all hostnames; that means we will fail |
| 3617 // connecting to both proxies (myproxy:70 and foobar:80). |
3599 session_deps.host_resolver->rules()->AddSimulatedFailure("*"); | 3618 session_deps.host_resolver->rules()->AddSimulatedFailure("*"); |
3600 | 3619 |
3601 scoped_ptr<HttpTransaction> trans( | 3620 scoped_ptr<HttpTransaction> trans( |
3602 new HttpNetworkTransaction(CreateSession(&session_deps))); | 3621 new HttpNetworkTransaction(CreateSession(&session_deps))); |
3603 | 3622 |
3604 HttpRequestInfo request; | 3623 HttpRequestInfo request; |
3605 request.method = "GET"; | 3624 request.method = "GET"; |
3606 request.url = GURL("http://www.google.com/"); | 3625 request.url = GURL("http://www.google.com/"); |
3607 | 3626 |
3608 TestCompletionCallback callback; | 3627 TestCompletionCallback callback; |
(...skipping 328 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3937 MockRead("HTTP/1.0 200 OK\r\nContent-Length:6719476739\r\n\r\n"), | 3956 MockRead("HTTP/1.0 200 OK\r\nContent-Length:6719476739\r\n\r\n"), |
3938 MockRead(false, OK), | 3957 MockRead(false, OK), |
3939 }; | 3958 }; |
3940 SimpleGetHelperResult out = SimpleGetHelper(data_reads); | 3959 SimpleGetHelperResult out = SimpleGetHelper(data_reads); |
3941 EXPECT_EQ(OK, out.rv); | 3960 EXPECT_EQ(OK, out.rv); |
3942 EXPECT_EQ("HTTP/1.0 200 OK", out.status_line); | 3961 EXPECT_EQ("HTTP/1.0 200 OK", out.status_line); |
3943 EXPECT_EQ("", out.response_data); | 3962 EXPECT_EQ("", out.response_data); |
3944 } | 3963 } |
3945 | 3964 |
3946 } // namespace net | 3965 } // namespace net |
OLD | NEW |