Index: net/spdy/spdy_proxy_client_socket.cc |
=================================================================== |
--- net/spdy/spdy_proxy_client_socket.cc (revision 120368) |
+++ net/spdy/spdy_proxy_client_socket.cc (working copy) |
@@ -1,4 +1,4 @@ |
-// Copyright (c) 2012 The Chromium Authors. All rights reserved. |
+// Copyright (c) 2011 The Chromium Authors. All rights reserved. |
// Use of this source code is governed by a BSD-style license that can be |
// found in the LICENSE file. |
@@ -14,6 +14,8 @@ |
#include "net/base/auth.h" |
#include "net/base/io_buffer.h" |
#include "net/base/net_util.h" |
+#include "net/http/http_auth_cache.h" |
+#include "net/http/http_auth_handler_factory.h" |
#include "net/http/http_net_log_params.h" |
#include "net/http/http_proxy_utils.h" |
#include "net/http/http_response_headers.h" |
@@ -27,11 +29,16 @@ |
const HostPortPair& endpoint, |
const GURL& url, |
const HostPortPair& proxy_server, |
- HttpAuthController* http_auth_controller) |
+ HttpAuthCache* auth_cache, |
+ HttpAuthHandlerFactory* auth_handler_factory) |
: next_state_(STATE_DISCONNECTED), |
spdy_stream_(spdy_stream), |
endpoint_(endpoint), |
- auth_(http_auth_controller), |
+ auth_( |
+ new HttpAuthController(HttpAuth::AUTH_PROXY, |
+ GURL("https://" + proxy_server.ToString()), |
+ auth_cache, |
+ auth_handler_factory)), |
user_buffer_(NULL), |
write_buffer_len_(0), |
write_bytes_outstanding_(0), |
@@ -54,19 +61,6 @@ |
return response_.headers ? &response_ : NULL; |
} |
-const |
-scoped_refptr<HttpAuthController>& SpdyProxyClientSocket::GetAuthController() { |
- return auth_; |
-} |
- |
-int SpdyProxyClientSocket::RestartWithAuth(const CompletionCallback& callback) { |
- // A SPDY Stream can only handle a single request, so the underlying |
- // stream may not be reused and a new SpdyProxyClientSocket must be |
- // created (possibly on top of the same SPDY Session). |
- next_state_ = STATE_DISCONNECTED; |
- return ERR_NO_KEEP_ALIVE_ON_AUTH_RESTART; |
-} |
- |
HttpStream* SpdyProxyClientSocket::CreateConnectResponseStream() { |
DCHECK(response_stream_.get()); |
return response_stream_.release(); |
@@ -78,6 +72,8 @@ |
// ERR_TUNNEL_CONNECTION_FAILED will be returned for any other status. |
// In any of these cases, Read() may be called to retrieve the HTTP |
// response body. Any other return values should be considered fatal. |
+// TODO(rch): handle 407 proxy auth requested correctly, perhaps |
+// by creating a new stream for the subsequent request. |
// TODO(rch): create a more appropriate error code to disambiguate |
// the HTTPS Proxy tunnel failure from an HTTP Proxy tunnel failure. |
int SpdyProxyClientSocket::Connect(const CompletionCallback& callback) { |
@@ -383,17 +379,7 @@ |
if (response_.headers->response_code() == 200) { |
return OK; |
} else if (response_.headers->response_code() == 407) { |
- int rv = HandleAuthChallenge(auth_, &response_, net_log_); |
- if (rv != ERR_PROXY_AUTH_REQUESTED) { |
- return rv; |
- } |
- // SPDY only supports basic and digest auth |
- if (!auth_->auth_info() || |
- (auth_->auth_info()->scheme != "basic" && |
- auth_->auth_info()->scheme != "digest")) { |
- return ERR_PROXY_AUTH_UNSUPPORTED; |
- } |
- return ERR_PROXY_AUTH_REQUESTED; |
+ return ERR_TUNNEL_CONNECTION_FAILED; |
} else { |
// Immediately hand off our SpdyStream to a newly created SpdyHttpStream |
// so that any subsequent SpdyFrames are processed in the context of |
Property changes on: net/spdy/spdy_proxy_client_socket.cc |
___________________________________________________________________ |
Added: svn:mergeinfo |