Chromium Code Reviews| Index: net/http/http_proxy_client_socket.cc |
| =================================================================== |
| --- net/http/http_proxy_client_socket.cc (revision 68959) |
| +++ net/http/http_proxy_client_socket.cc (working copy) |
| @@ -12,6 +12,7 @@ |
| #include "net/base/io_buffer.h" |
| #include "net/base/net_log.h" |
| #include "net/base/net_util.h" |
| +#include "net/http/http_basic_stream.h" |
| #include "net/http/http_net_log_params.h" |
| #include "net/http/http_network_session.h" |
| #include "net/http/http_proxy_utils.h" |
| @@ -31,7 +32,8 @@ |
| HttpAuthCache* http_auth_cache, |
| HttpAuthHandlerFactory* http_auth_handler_factory, |
| bool tunnel, |
| - bool using_spdy) |
| + bool using_spdy, |
| + bool is_https_proxy) |
| : ALLOW_THIS_IN_INITIALIZER_LIST( |
| io_callback_(this, &HttpProxyClientSocket::OnIOComplete)), |
| next_state_(STATE_NONE), |
| @@ -46,7 +48,9 @@ |
| : NULL), |
| tunnel_(tunnel), |
| using_spdy_(using_spdy), |
| + is_https_proxy_(is_https_proxy), |
| net_log_(transport_socket->socket()->NetLog()) { |
| + LOG(INFO) << "Creating an HttpProxyClientSocket: " << this; |
|
vandebo (ex-Chrome)
2010/12/15 22:52:38
dd
|
| // Synthesize the bits of a request that we actually use. |
| request_.url = request_url; |
| request_.method = "GET"; |
| @@ -56,9 +60,16 @@ |
| } |
| HttpProxyClientSocket::~HttpProxyClientSocket() { |
| + LOG(INFO) << "Destroying an HttpProxyClientSocket: " << this; |
|
vandebo (ex-Chrome)
2010/12/15 22:52:38
dd
|
| Disconnect(); |
| } |
| +HttpStream* HttpProxyClientSocket::CreateConnectResponseStream() { |
| + return new HttpBasicStream(transport_.release(), |
| + http_stream_parser_.release(), false); |
| +} |
| + |
| + |
| int HttpProxyClientSocket::Connect(CompletionCallback* callback) { |
| DCHECK(transport_.get()); |
| DCHECK(transport_->socket()); |
| @@ -145,7 +156,8 @@ |
| } |
| void HttpProxyClientSocket::Disconnect() { |
| - transport_->socket()->Disconnect(); |
| + if (transport_.get()) |
| + transport_->socket()->Disconnect(); |
| // Reset other states to make sure they aren't mistakenly used later. |
| // These are the states initialized by Connect(). |
| @@ -405,6 +417,8 @@ |
| return HandleAuthChallenge(); |
| default: |
| + if (is_https_proxy_) |
| + return ERR_HTTPS_PROXY_TUNNEL_RESPONSE; |
| // For all other status codes, we conservatively fail the CONNECT |
| // request. |
| // We lose something by doing this. We have seen proxy 403, 404, and |