Chromium Code Reviews| Index: net/http/http_proxy_client_socket.cc |
| =================================================================== |
| --- net/http/http_proxy_client_socket.cc (revision 117986) |
| +++ net/http/http_proxy_client_socket.cc (working copy) |
| @@ -31,8 +31,7 @@ |
| const std::string& user_agent, |
| const HostPortPair& endpoint, |
| const HostPortPair& proxy_server, |
| - HttpAuthCache* http_auth_cache, |
| - HttpAuthHandlerFactory* http_auth_handler_factory, |
| + HttpAuthController* http_auth_controller, |
| bool tunnel, |
| bool using_spdy, |
| SSLClientSocket::NextProto protocol_negotiated, |
| @@ -43,13 +42,7 @@ |
| next_state_(STATE_NONE), |
| transport_(transport_socket), |
| endpoint_(endpoint), |
| - auth_(tunnel ? |
| - new HttpAuthController(HttpAuth::AUTH_PROXY, |
| - GURL((is_https_proxy ? "https://" : "http://") |
| - + proxy_server.ToString()), |
| - http_auth_cache, |
| - http_auth_handler_factory) |
| - : NULL), |
| + auth_(http_auth_controller), |
| tunnel_(tunnel), |
| using_spdy_(using_spdy), |
| protocol_negotiated_(protocol_negotiated), |
| @@ -67,12 +60,17 @@ |
| Disconnect(); |
| } |
| +const |
| +scoped_refptr<HttpAuthController>& HttpProxyClientSocket::auth_controller() { |
| + return auth_; |
| +} |
| + |
| int HttpProxyClientSocket::RestartWithAuth(const CompletionCallback& callback) { |
| DCHECK_EQ(STATE_NONE, next_state_); |
| DCHECK(user_callback_.is_null()); |
| int rv = PrepareForAuthRestart(); |
| - if (rv != OK) |
| + if (rv != OK || next_state_ == STATE_NONE) |
| return rv; |
| rv = DoLoop(OK); |
| @@ -258,10 +256,7 @@ |
| next_state_ = STATE_GENERATE_AUTH_TOKEN; |
| transport_->set_is_reused(true); |
| } else { |
| - // This assumes that the underlying transport socket is a TCP socket, |
| - // since only TCP sockets are restartable. |
| - next_state_ = STATE_TCP_RESTART; |
|
vandebo (ex-Chrome)
2012/01/19 20:12:49
You should also tear out the TCP_RESTART states.
Ryan Hamilton
2012/01/19 23:11:19
Done.
|
| - transport_->socket()->Disconnect(); |
| + next_state_ = STATE_NONE; |
|
vandebo (ex-Chrome)
2012/01/19 20:12:49
Seems like in this case we want to make the functi
Ryan Hamilton
2012/01/19 23:11:19
Done.
|
| } |
| // Reset the other member variables. |
| @@ -274,17 +269,6 @@ |
| return OK; |
| } |
| -int HttpProxyClientSocket::HandleAuthChallenge() { |
| - DCHECK(response_.headers); |
| - |
| - int rv = auth_->HandleAuthChallenge(response_.headers, false, true, net_log_); |
| - response_.auth_challenge = auth_->auth_info(); |
| - if (rv == OK) |
| - return ERR_PROXY_AUTH_REQUESTED; |
| - |
| - return rv; |
| -} |
| - |
| void HttpProxyClientSocket::LogBlockedTunnelResponse(int response_code) const { |
| LOG(WARNING) << "Blocked proxy response with status " << response_code |
| << " to CONNECT request for " |
| @@ -459,7 +443,7 @@ |
| // authentication code is smart enough to avoid being tricked by an |
| // active network attacker. |
| // The next state is intentionally not set as it should be STATE_NONE; |
| - return HandleAuthChallenge(); |
| + return HandleAuthChallenge(auth_, &response_, net_log_); |
| default: |
| if (is_https_proxy_) |