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/http/http_proxy_client_socket.h" | 5 #include "net/http/http_proxy_client_socket.h" |
6 | 6 |
7 #include "base/bind.h" | 7 #include "base/bind.h" |
8 #include "base/bind_helpers.h" | 8 #include "base/bind_helpers.h" |
9 #include "base/profiler/scoped_tracker.h" | 9 #include "base/profiler/scoped_tracker.h" |
10 #include "base/strings/string_util.h" | 10 #include "base/strings/string_util.h" |
(...skipping 284 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
295 http_stream_parser_.reset(); | 295 http_stream_parser_.reset(); |
296 request_line_.clear(); | 296 request_line_.clear(); |
297 request_headers_.Clear(); | 297 request_headers_.Clear(); |
298 response_ = HttpResponseInfo(); | 298 response_ = HttpResponseInfo(); |
299 return OK; | 299 return OK; |
300 } | 300 } |
301 | 301 |
302 void HttpProxyClientSocket::LogBlockedTunnelResponse() const { | 302 void HttpProxyClientSocket::LogBlockedTunnelResponse() const { |
303 ProxyClientSocket::LogBlockedTunnelResponse( | 303 ProxyClientSocket::LogBlockedTunnelResponse( |
304 response_.headers->response_code(), | 304 response_.headers->response_code(), |
305 request_.url, | |
306 is_https_proxy_); | 305 is_https_proxy_); |
307 } | 306 } |
308 | 307 |
309 void HttpProxyClientSocket::DoCallback(int result) { | 308 void HttpProxyClientSocket::DoCallback(int result) { |
310 DCHECK_NE(ERR_IO_PENDING, result); | 309 DCHECK_NE(ERR_IO_PENDING, result); |
311 DCHECK(!user_callback_.is_null()); | 310 DCHECK(!user_callback_.is_null()); |
312 | 311 |
313 // Since Run() may result in Read being called, | 312 // Since Run() may result in Read being called, |
314 // clear user_callback_ up front. | 313 // clear user_callback_ up front. |
315 CompletionCallback c = user_callback_; | 314 CompletionCallback c = user_callback_; |
(...skipping 91 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
407 // we have proxy info available. | 406 // we have proxy info available. |
408 if (request_line_.empty()) { | 407 if (request_line_.empty()) { |
409 DCHECK(request_headers_.IsEmpty()); | 408 DCHECK(request_headers_.IsEmpty()); |
410 HttpRequestHeaders authorization_headers; | 409 HttpRequestHeaders authorization_headers; |
411 if (auth_->HaveAuth()) | 410 if (auth_->HaveAuth()) |
412 auth_->AddAuthorizationHeader(&authorization_headers); | 411 auth_->AddAuthorizationHeader(&authorization_headers); |
413 if (proxy_delegate_) { | 412 if (proxy_delegate_) { |
414 proxy_delegate_->OnBeforeTunnelRequest(proxy_server_, | 413 proxy_delegate_->OnBeforeTunnelRequest(proxy_server_, |
415 &authorization_headers); | 414 &authorization_headers); |
416 } | 415 } |
417 BuildTunnelRequest(request_, authorization_headers, endpoint_, | 416 std::string user_agent; |
| 417 if (!request_.extra_headers.GetHeader(HttpRequestHeaders::kUserAgent, |
| 418 &user_agent)) { |
| 419 user_agent.clear(); |
| 420 } |
| 421 BuildTunnelRequest(endpoint_, authorization_headers, user_agent, |
418 &request_line_, &request_headers_); | 422 &request_line_, &request_headers_); |
419 | 423 |
420 net_log_.AddEvent( | 424 net_log_.AddEvent( |
421 NetLog::TYPE_HTTP_TRANSACTION_SEND_TUNNEL_HEADERS, | 425 NetLog::TYPE_HTTP_TRANSACTION_SEND_TUNNEL_HEADERS, |
422 base::Bind(&HttpRequestHeaders::NetLogCallback, | 426 base::Bind(&HttpRequestHeaders::NetLogCallback, |
423 base::Unretained(&request_headers_), | 427 base::Unretained(&request_headers_), |
424 &request_line_)); | 428 &request_line_)); |
425 } | 429 } |
426 | 430 |
427 parser_buf_ = new GrowableIOBuffer(); | 431 parser_buf_ = new GrowableIOBuffer(); |
(...skipping 124 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
552 "462784 HttpProxyClientSocket::DoTCPRestartComplete")); | 556 "462784 HttpProxyClientSocket::DoTCPRestartComplete")); |
553 | 557 |
554 if (result != OK) | 558 if (result != OK) |
555 return result; | 559 return result; |
556 | 560 |
557 next_state_ = STATE_GENERATE_AUTH_TOKEN; | 561 next_state_ = STATE_GENERATE_AUTH_TOKEN; |
558 return result; | 562 return result; |
559 } | 563 } |
560 | 564 |
561 } // namespace net | 565 } // namespace net |
OLD | NEW |