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

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

Issue 3039028: Make HttpAuthController not reference counted. (Closed)
Patch Set: Created 10 years, 5 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 unified diff | Download patch
« no previous file with comments | « net/http/http_network_transaction.h ('k') | net/http/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) 2010 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2010 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_network_transaction.h" 5 #include "net/http/http_network_transaction.h"
6 6
7 #include <set> 7 #include <set>
8 #include <vector> 8 #include <vector>
9 9
10 #include "base/compiler_specific.h" 10 #include "base/compiler_specific.h"
(...skipping 296 matching lines...) Expand 10 before | Expand all | Expand 10 after
307 const std::wstring& username, 307 const std::wstring& username,
308 const std::wstring& password, 308 const std::wstring& password,
309 CompletionCallback* callback) { 309 CompletionCallback* callback) {
310 HttpAuth::Target target = pending_auth_target_; 310 HttpAuth::Target target = pending_auth_target_;
311 if (target == HttpAuth::AUTH_NONE) { 311 if (target == HttpAuth::AUTH_NONE) {
312 NOTREACHED(); 312 NOTREACHED();
313 return ERR_UNEXPECTED; 313 return ERR_UNEXPECTED;
314 } 314 }
315 pending_auth_target_ = HttpAuth::AUTH_NONE; 315 pending_auth_target_ = HttpAuth::AUTH_NONE;
316 316
317 auth_controllers_[target]->ResetAuth(username, password);
318
319 if (target == HttpAuth::AUTH_PROXY && using_ssl_ && proxy_info_.is_http()) { 317 if (target == HttpAuth::AUTH_PROXY && using_ssl_ && proxy_info_.is_http()) {
320 DCHECK(establishing_tunnel_); 318 DCHECK(establishing_tunnel_);
319 DCHECK(auth_controllers_[target].get() == NULL);
321 next_state_ = STATE_INIT_CONNECTION; 320 next_state_ = STATE_INIT_CONNECTION;
321 auth_controllers_[target].reset(new HttpAuthController(target,
322 AuthURL(target),
323 session_));
324 auth_controllers_[target]->SetCredentials(username, password);
322 ResetStateForRestart(); 325 ResetStateForRestart();
323 } else { 326 } else {
327 auth_controllers_[target]->SetCredentials(username, password);
328 auth_controllers_[target]->PrepareForAuthRestart();
324 PrepareForAuthRestart(target); 329 PrepareForAuthRestart(target);
325 } 330 }
326 331
327 DCHECK(user_callback_ == NULL); 332 DCHECK(user_callback_ == NULL);
328 int rv = DoLoop(OK); 333 int rv = DoLoop(OK);
329 if (rv == ERR_IO_PENDING) 334 if (rv == ERR_IO_PENDING)
330 user_callback_ = callback; 335 user_callback_ = callback;
331 336
332 return rv; 337 return rv;
333 } 338 }
(...skipping 365 matching lines...) Expand 10 before | Expand all | Expand 10 after
699 704
700 int HttpNetworkTransaction::DoInitConnection() { 705 int HttpNetworkTransaction::DoInitConnection() {
701 DCHECK(!connection_->is_initialized()); 706 DCHECK(!connection_->is_initialized());
702 DCHECK(proxy_info_.proxy_server().is_valid()); 707 DCHECK(proxy_info_.proxy_server().is_valid());
703 next_state_ = STATE_INIT_CONNECTION_COMPLETE; 708 next_state_ = STATE_INIT_CONNECTION_COMPLETE;
704 709
705 // Now that the proxy server has been resolved, create the auth_controllers_. 710 // Now that the proxy server has been resolved, create the auth_controllers_.
706 for (int i = 0; i < HttpAuth::AUTH_NUM_TARGETS; i++) { 711 for (int i = 0; i < HttpAuth::AUTH_NUM_TARGETS; i++) {
707 HttpAuth::Target target = static_cast<HttpAuth::Target>(i); 712 HttpAuth::Target target = static_cast<HttpAuth::Target>(i);
708 if (!auth_controllers_[target].get()) 713 if (!auth_controllers_[target].get())
709 auth_controllers_[target] = new HttpAuthController(target, 714 auth_controllers_[target].reset(new HttpAuthController(target,
710 AuthURL(target), 715 AuthURL(target),
711 session_); 716 session_));
712 } 717 }
713 718
714 bool want_spdy = alternate_protocol_mode_ == kUsingAlternateProtocol 719 bool want_spdy = alternate_protocol_mode_ == kUsingAlternateProtocol
715 && alternate_protocol_ == HttpAlternateProtocols::NPN_SPDY_1; 720 && alternate_protocol_ == HttpAlternateProtocols::NPN_SPDY_1;
716 using_ssl_ = request_->url.SchemeIs("https") || want_spdy; 721 using_ssl_ = request_->url.SchemeIs("https") || want_spdy;
717 using_spdy_ = false; 722 using_spdy_ = false;
718 response_.was_fetched_via_proxy = !proxy_info_.is_direct(); 723 response_.was_fetched_via_proxy = !proxy_info_.is_direct();
719 724
720 // Use the fixed testing ports if they've been provided. 725 // Use the fixed testing ports if they've been provided.
721 if (using_ssl_) { 726 if (using_ssl_) {
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after
758 request_->referrer, 763 request_->referrer,
759 disable_resolver_cache); 764 disable_resolver_cache);
760 } else { 765 } else {
761 ProxyServer proxy_server = proxy_info_.proxy_server(); 766 ProxyServer proxy_server = proxy_info_.proxy_server();
762 proxy_host_port.reset(new HostPortPair(proxy_server.host_port_pair())); 767 proxy_host_port.reset(new HostPortPair(proxy_server.host_port_pair()));
763 scoped_refptr<TCPSocketParams> proxy_tcp_params = 768 scoped_refptr<TCPSocketParams> proxy_tcp_params =
764 new TCPSocketParams(*proxy_host_port, request_->priority, 769 new TCPSocketParams(*proxy_host_port, request_->priority,
765 request_->referrer, disable_resolver_cache); 770 request_->referrer, disable_resolver_cache);
766 771
767 if (proxy_info_.is_http()) { 772 if (proxy_info_.is_http()) {
768 scoped_refptr<HttpAuthController> http_proxy_auth; 773 scoped_ptr<HttpAuthController> http_proxy_auth;
769 if (using_ssl_) { 774 if (using_ssl_) {
770 http_proxy_auth = auth_controllers_[HttpAuth::AUTH_PROXY]; 775 http_proxy_auth.reset(
776 auth_controllers_[HttpAuth::AUTH_PROXY].release());
771 establishing_tunnel_ = true; 777 establishing_tunnel_ = true;
772 } 778 }
773 http_proxy_params = new HttpProxySocketParams(proxy_tcp_params, 779 http_proxy_params = new HttpProxySocketParams(proxy_tcp_params,
774 request_->url, endpoint_, 780 request_->url, endpoint_,
775 http_proxy_auth, 781 http_proxy_auth.release(),
776 using_ssl_); 782 using_ssl_);
777 } else { 783 } else {
778 DCHECK(proxy_info_.is_socks()); 784 DCHECK(proxy_info_.is_socks());
779 char socks_version; 785 char socks_version;
780 if (proxy_server.scheme() == ProxyServer::SCHEME_SOCKS5) 786 if (proxy_server.scheme() == ProxyServer::SCHEME_SOCKS5)
781 socks_version = '5'; 787 socks_version = '5';
782 else 788 else
783 socks_version = '4'; 789 socks_version = '4';
784 connection_group = 790 connection_group =
785 StringPrintf("socks%c/%s", socks_version, connection_group.c_str()); 791 StringPrintf("socks%c/%s", socks_version, connection_group.c_str());
(...skipping 1002 matching lines...) Expand 10 before | Expand all | Expand 10 after
1788 default: 1794 default:
1789 description = StringPrintf("Unknown state 0x%08X (%u)", state, state); 1795 description = StringPrintf("Unknown state 0x%08X (%u)", state, state);
1790 break; 1796 break;
1791 } 1797 }
1792 return description; 1798 return description;
1793 } 1799 }
1794 1800
1795 #undef STATE_CASE 1801 #undef STATE_CASE
1796 1802
1797 } // namespace net 1803 } // namespace net
OLDNEW
« no previous file with comments | « net/http/http_network_transaction.h ('k') | net/http/http_proxy_client_socket.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698