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

Side by Side Diff: net/http/http_stream_factory_impl_job.cc

Issue 8912010: Revert 110965 - Allow chrome to handle 407 auth challenges to CONNECT requests (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: Created 9 years 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 unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « net/http/http_proxy_utils.cc ('k') | net/http/proxy_client_socket.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2011 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_stream_factory_impl_job.h" 5 #include "net/http/http_stream_factory_impl_job.h"
6 6
7 #include "base/bind.h" 7 #include "base/bind.h"
8 #include "base/logging.h" 8 #include "base/logging.h"
9 #include "base/stl_util.h" 9 #include "base/stl_util.h"
10 #include "base/string_util.h" 10 #include "base/string_util.h"
(...skipping 388 matching lines...) Expand 10 before | Expand all | Expand 10 after
399 return ERR_IO_PENDING; 399 return ERR_IO_PENDING;
400 } 400 }
401 401
402 switch (result) { 402 switch (result) {
403 case ERR_PROXY_AUTH_REQUESTED: 403 case ERR_PROXY_AUTH_REQUESTED:
404 { 404 {
405 DCHECK(connection_.get()); 405 DCHECK(connection_.get());
406 DCHECK(connection_->socket()); 406 DCHECK(connection_->socket());
407 DCHECK(establishing_tunnel_); 407 DCHECK(establishing_tunnel_);
408 408
409 ProxyClientSocket* proxy_socket = 409 HttpProxyClientSocket* http_proxy_socket =
410 static_cast<ProxyClientSocket*>(connection_->socket()); 410 static_cast<HttpProxyClientSocket*>(connection_->socket());
411 const HttpResponseInfo* tunnel_auth_response = 411 const HttpResponseInfo* tunnel_auth_response =
412 proxy_socket->GetConnectResponseInfo(); 412 http_proxy_socket->GetConnectResponseInfo();
413 413
414 next_state_ = STATE_WAITING_USER_ACTION; 414 next_state_ = STATE_WAITING_USER_ACTION;
415 MessageLoop::current()->PostTask( 415 MessageLoop::current()->PostTask(
416 FROM_HERE, 416 FROM_HERE,
417 base::Bind( 417 base::Bind(
418 &HttpStreamFactoryImpl::Job::OnNeedsProxyAuthCallback, 418 &HttpStreamFactoryImpl::Job::OnNeedsProxyAuthCallback,
419 ptr_factory_.GetWeakPtr(), 419 ptr_factory_.GetWeakPtr(),
420 *tunnel_auth_response, 420 *tunnel_auth_response,
421 proxy_socket->auth_controller())); 421 http_proxy_socket->auth_controller()));
422 } 422 }
423 return ERR_IO_PENDING; 423 return ERR_IO_PENDING;
424 424
425 case ERR_SSL_CLIENT_AUTH_CERT_NEEDED: 425 case ERR_SSL_CLIENT_AUTH_CERT_NEEDED:
426 MessageLoop::current()->PostTask( 426 MessageLoop::current()->PostTask(
427 FROM_HERE, 427 FROM_HERE,
428 base::Bind( 428 base::Bind(
429 &HttpStreamFactoryImpl::Job::OnNeedsClientAuthCallback, 429 &HttpStreamFactoryImpl::Job::OnNeedsClientAuthCallback,
430 ptr_factory_.GetWeakPtr(), 430 ptr_factory_.GetWeakPtr(),
431 connection_->ssl_error_response_info().cert_request_info)); 431 connection_->ssl_error_response_info().cert_request_info));
(...skipping 503 matching lines...) Expand 10 before | Expand all | Expand 10 after
935 if (result < 0) 935 if (result < 0)
936 return result; 936 return result;
937 937
938 session_->proxy_service()->ReportSuccess(proxy_info_); 938 session_->proxy_service()->ReportSuccess(proxy_info_);
939 next_state_ = STATE_NONE; 939 next_state_ = STATE_NONE;
940 return OK; 940 return OK;
941 } 941 }
942 942
943 int HttpStreamFactoryImpl::Job::DoRestartTunnelAuth() { 943 int HttpStreamFactoryImpl::Job::DoRestartTunnelAuth() {
944 next_state_ = STATE_RESTART_TUNNEL_AUTH_COMPLETE; 944 next_state_ = STATE_RESTART_TUNNEL_AUTH_COMPLETE;
945 ProxyClientSocket* proxy_socket = 945 HttpProxyClientSocket* http_proxy_socket =
946 static_cast<ProxyClientSocket*>(connection_->socket()); 946 static_cast<HttpProxyClientSocket*>(connection_->socket());
947 return proxy_socket->RestartWithAuth(&io_callback_); 947 return http_proxy_socket->RestartWithAuth(&io_callback_);
948 } 948 }
949 949
950 int HttpStreamFactoryImpl::Job::DoRestartTunnelAuthComplete(int result) { 950 int HttpStreamFactoryImpl::Job::DoRestartTunnelAuthComplete(int result) {
951 if (result == ERR_PROXY_AUTH_REQUESTED) 951 if (result == ERR_PROXY_AUTH_REQUESTED)
952 return result; 952 return result;
953 953
954 if (result == OK) { 954 if (result == OK) {
955 // Now that we've got the ProxyClientSocket prepared to restart. We have 955 // Now that we've got the HttpProxyClientSocket connected. We have
956 // to release it as an idle socket into the pool and start the connection 956 // to release it as an idle socket into the pool and start the connection
957 // process from the beginning. Trying to pass it in with the 957 // process from the beginning. Trying to pass it in with the
958 // SSLSocketParams might cause a deadlock since params are dispatched 958 // SSLSocketParams might cause a deadlock since params are dispatched
959 // interchangeably. This request won't necessarily get this http proxy 959 // interchangeably. This request won't necessarily get this http proxy
960 // socket, but there will be forward progress. 960 // socket, but there will be forward progress.
961 establishing_tunnel_ = false; 961 establishing_tunnel_ = false;
962 ReturnToStateInitConnection(!connection_->socket()->IsConnectedAndIdle()); 962 ReturnToStateInitConnection(false /* do not close connection */);
963 return OK; 963 return OK;
964 } 964 }
965 965
966 return ReconsiderProxyAfterError(result); 966 return ReconsiderProxyAfterError(result);
967 } 967 }
968 968
969 void HttpStreamFactoryImpl::Job::ReturnToStateInitConnection( 969 void HttpStreamFactoryImpl::Job::ReturnToStateInitConnection(
970 bool close_connection) { 970 bool close_connection) {
971 if (close_connection && connection_->socket()) 971 if (close_connection && connection_->socket())
972 connection_->socket()->Disconnect(); 972 connection_->socket()->Disconnect();
(...skipping 219 matching lines...) Expand 10 before | Expand all | Expand 10 after
1192 return false; 1192 return false;
1193 } 1193 }
1194 if (request_info_.method != "GET" && request_info_.method != "HEAD") { 1194 if (request_info_.method != "GET" && request_info_.method != "HEAD") {
1195 return false; 1195 return false;
1196 } 1196 }
1197 return stream_factory_->http_pipelined_host_pool_.IsHostEligibleForPipelining( 1197 return stream_factory_->http_pipelined_host_pool_.IsHostEligibleForPipelining(
1198 origin_); 1198 origin_);
1199 } 1199 }
1200 1200
1201 } // namespace net 1201 } // namespace net
OLDNEW
« no previous file with comments | « net/http/http_proxy_utils.cc ('k') | net/http/proxy_client_socket.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698