Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1702)

Unified Diff: net/spdy/spdy_proxy_client_socket.cc

Issue 9148011: Allow chrome to handle 407 auth challenges to CONNECT requests (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: '' Created 8 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: net/spdy/spdy_proxy_client_socket.cc
===================================================================
--- net/spdy/spdy_proxy_client_socket.cc (revision 117986)
+++ net/spdy/spdy_proxy_client_socket.cc (working copy)
@@ -14,8 +14,6 @@
#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"
@@ -29,16 +27,11 @@
const HostPortPair& endpoint,
const GURL& url,
const HostPortPair& proxy_server,
- HttpAuthCache* auth_cache,
- HttpAuthHandlerFactory* auth_handler_factory)
+ HttpAuthController* http_auth_controller)
: next_state_(STATE_DISCONNECTED),
spdy_stream_(spdy_stream),
endpoint_(endpoint),
- auth_(
- new HttpAuthController(HttpAuth::AUTH_PROXY,
- GURL("https://" + proxy_server.ToString()),
- auth_cache,
- auth_handler_factory)),
+ auth_(http_auth_controller),
user_buffer_(NULL),
write_buffer_len_(0),
write_bytes_outstanding_(0),
@@ -61,6 +54,19 @@
return response_.headers ? &response_ : NULL;
}
+const
+scoped_refptr<HttpAuthController>& SpdyProxyClientSocket::auth_controller() {
+ 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 OK;
vandebo (ex-Chrome) 2012/01/19 20:12:49 Same thing here - why return OK when the proxy poo
Ryan Hamilton 2012/01/19 23:11:19 Done.
+}
+
HttpStream* SpdyProxyClientSocket::CreateConnectResponseStream() {
DCHECK(response_stream_.get());
return response_stream_.release();
@@ -379,6 +385,16 @@
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_REQUESTED;
+ }
return ERR_TUNNEL_CONNECTION_FAILED;
} else {
// Immediately hand off our SpdyStream to a newly created SpdyHttpStream

Powered by Google App Engine
This is Rietveld 408576698