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

Side by Side Diff: net/socket_stream/socket_stream.cc

Issue 6191001: Cleanup: Use AUTH_SCHEME enum instead of a string. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: Merge with trunk Created 9 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 unified diff | Download patch | Annotate | Revision Log
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 // TODO(ukai): code is similar with http_network_transaction.cc. We should 5 // TODO(ukai): code is similar with http_network_transaction.cc. We should
6 // think about ways to share code, if possible. 6 // think about ways to share code, if possible.
7 7
8 #include "net/socket_stream/socket_stream.h" 8 #include "net/socket_stream/socket_stream.h"
9 9
10 #include <set> 10 #include <set>
(...skipping 596 matching lines...) Expand 10 before | Expand all | Expand 10 after
607 auth_identity_.username = entry->username(); 607 auth_identity_.username = entry->username();
608 auth_identity_.password = entry->password(); 608 auth_identity_.password = entry->password();
609 auth_handler_.swap(handler_preemptive); 609 auth_handler_.swap(handler_preemptive);
610 } 610 }
611 } 611 }
612 } 612 }
613 613
614 // Support basic authentication scheme only, because we don't have 614 // Support basic authentication scheme only, because we don't have
615 // HttpRequestInfo. 615 // HttpRequestInfo.
616 // TODO(ukai): Add support other authentication scheme. 616 // TODO(ukai): Add support other authentication scheme.
617 if (auth_handler_.get() && auth_handler_->scheme() == "basic") { 617 if (auth_handler_.get() &&
618 auth_handler_->auth_scheme() == HttpAuth::AUTH_SCHEME_BASIC) {
618 HttpRequestInfo request_info; 619 HttpRequestInfo request_info;
619 std::string auth_token; 620 std::string auth_token;
620 int rv = auth_handler_->GenerateAuthToken( 621 int rv = auth_handler_->GenerateAuthToken(
621 &auth_identity_.username, 622 &auth_identity_.username,
622 &auth_identity_.password, 623 &auth_identity_.password,
623 &request_info, 624 &request_info,
624 NULL, 625 NULL,
625 &auth_token); 626 &auth_token);
626 // TODO(cbentzel): Support async auth handlers. 627 // TODO(cbentzel): Support async auth handlers.
627 DCHECK_NE(ERR_IO_PENDING, rv); 628 DCHECK_NE(ERR_IO_PENDING, rv);
(...skipping 114 matching lines...) Expand 10 before | Expand all | Expand 10 after
742 return OK; 743 return OK;
743 case 407: // Proxy Authentication Required. 744 case 407: // Proxy Authentication Required.
744 result = HandleAuthChallenge(headers.get()); 745 result = HandleAuthChallenge(headers.get());
745 if (result == ERR_PROXY_AUTH_UNSUPPORTED && 746 if (result == ERR_PROXY_AUTH_UNSUPPORTED &&
746 auth_handler_.get() && delegate_) { 747 auth_handler_.get() && delegate_) {
747 DCHECK(!proxy_info_.is_empty()); 748 DCHECK(!proxy_info_.is_empty());
748 auth_info_ = new AuthChallengeInfo; 749 auth_info_ = new AuthChallengeInfo;
749 auth_info_->is_proxy = true; 750 auth_info_->is_proxy = true;
750 auth_info_->host_and_port = 751 auth_info_->host_and_port =
751 ASCIIToWide(proxy_info_.proxy_server().host_port_pair().ToString()); 752 ASCIIToWide(proxy_info_.proxy_server().host_port_pair().ToString());
752 auth_info_->scheme = ASCIIToWide(auth_handler_->scheme()); 753 auth_info_->scheme = ASCIIToWide(
754 HttpAuth::SchemeToString(auth_handler_->auth_scheme()));
753 auth_info_->realm = ASCIIToWide(auth_handler_->realm()); 755 auth_info_->realm = ASCIIToWide(auth_handler_->realm());
754 // Wait until RestartWithAuth or Close is called. 756 // Wait until RestartWithAuth or Close is called.
755 MessageLoop::current()->PostTask( 757 MessageLoop::current()->PostTask(
756 FROM_HERE, 758 FROM_HERE,
757 NewRunnableMethod(this, &SocketStream::DoAuthRequired)); 759 NewRunnableMethod(this, &SocketStream::DoAuthRequired));
758 next_state_ = STATE_AUTH_REQUIRED; 760 next_state_ = STATE_AUTH_REQUIRED;
759 return ERR_IO_PENDING; 761 return ERR_IO_PENDING;
760 } 762 }
761 default: 763 default:
762 break; 764 break;
(...skipping 174 matching lines...) Expand 10 before | Expand all | Expand 10 after
937 VLOG(1) << "The proxy " << auth_origin << " requested auth"; 939 VLOG(1) << "The proxy " << auth_origin << " requested auth";
938 940
939 // TODO(cbentzel): Since SocketStream only suppports basic authentication 941 // TODO(cbentzel): Since SocketStream only suppports basic authentication
940 // right now, another challenge is always treated as a rejection. 942 // right now, another challenge is always treated as a rejection.
941 // Ultimately this should be converted to use HttpAuthController like the 943 // Ultimately this should be converted to use HttpAuthController like the
942 // HttpNetworkTransaction has. 944 // HttpNetworkTransaction has.
943 if (auth_handler_.get() && !auth_identity_.invalid) { 945 if (auth_handler_.get() && !auth_identity_.invalid) {
944 if (auth_identity_.source != HttpAuth::IDENT_SRC_PATH_LOOKUP) 946 if (auth_identity_.source != HttpAuth::IDENT_SRC_PATH_LOOKUP)
945 auth_cache_.Remove(auth_origin, 947 auth_cache_.Remove(auth_origin,
946 auth_handler_->realm(), 948 auth_handler_->realm(),
947 auth_handler_->scheme(), 949 auth_handler_->auth_scheme(),
948 auth_identity_.username, 950 auth_identity_.username,
949 auth_identity_.password); 951 auth_identity_.password);
950 auth_handler_.reset(); 952 auth_handler_.reset();
951 auth_identity_ = HttpAuth::Identity(); 953 auth_identity_ = HttpAuth::Identity();
952 } 954 }
953 955
954 auth_identity_.invalid = true; 956 auth_identity_.invalid = true;
955 std::set<std::string> disabled_schemes; 957 std::set<HttpAuth::Scheme> disabled_schemes;
956 HttpAuth::ChooseBestChallenge(http_auth_handler_factory_, headers, 958 HttpAuth::ChooseBestChallenge(http_auth_handler_factory_, headers,
957 HttpAuth::AUTH_PROXY, 959 HttpAuth::AUTH_PROXY,
958 auth_origin, disabled_schemes, 960 auth_origin, disabled_schemes,
959 net_log_, &auth_handler_); 961 net_log_, &auth_handler_);
960 if (!auth_handler_.get()) { 962 if (!auth_handler_.get()) {
961 LOG(ERROR) << "Can't perform auth to the proxy " << auth_origin; 963 LOG(ERROR) << "Can't perform auth to the proxy " << auth_origin;
962 return ERR_TUNNEL_CONNECTION_FAILED; 964 return ERR_TUNNEL_CONNECTION_FAILED;
963 } 965 }
964 if (auth_handler_->NeedsIdentity()) { 966 if (auth_handler_->NeedsIdentity()) {
965 // We only support basic authentication scheme now. 967 // We only support basic authentication scheme now.
966 // TODO(ukai): Support other authentication scheme. 968 // TODO(ukai): Support other authentication scheme.
967 HttpAuthCache::Entry* entry = 969 HttpAuthCache::Entry* entry = auth_cache_.Lookup(
968 auth_cache_.Lookup(auth_origin, auth_handler_->realm(), "basic"); 970 auth_origin, auth_handler_->realm(), HttpAuth::AUTH_SCHEME_BASIC);
969 if (entry) { 971 if (entry) {
970 auth_identity_.source = HttpAuth::IDENT_SRC_REALM_LOOKUP; 972 auth_identity_.source = HttpAuth::IDENT_SRC_REALM_LOOKUP;
971 auth_identity_.invalid = false; 973 auth_identity_.invalid = false;
972 auth_identity_.username = entry->username(); 974 auth_identity_.username = entry->username();
973 auth_identity_.password = entry->password(); 975 auth_identity_.password = entry->password();
974 // Restart with auth info. 976 // Restart with auth info.
975 } 977 }
976 return ERR_PROXY_AUTH_UNSUPPORTED; 978 return ERR_PROXY_AUTH_UNSUPPORTED;
977 } else { 979 } else {
978 auth_identity_.invalid = false; 980 auth_identity_.invalid = false;
979 } 981 }
980 return ERR_TUNNEL_CONNECTION_FAILED; 982 return ERR_TUNNEL_CONNECTION_FAILED;
981 } 983 }
982 984
983 void SocketStream::DoAuthRequired() { 985 void SocketStream::DoAuthRequired() {
984 if (delegate_ && auth_info_.get()) 986 if (delegate_ && auth_info_.get())
985 delegate_->OnAuthRequired(this, auth_info_.get()); 987 delegate_->OnAuthRequired(this, auth_info_.get());
986 else 988 else
987 DoLoop(net::ERR_UNEXPECTED); 989 DoLoop(net::ERR_UNEXPECTED);
988 } 990 }
989 991
990 void SocketStream::DoRestartWithAuth() { 992 void SocketStream::DoRestartWithAuth() {
991 DCHECK_EQ(next_state_, STATE_AUTH_REQUIRED); 993 DCHECK_EQ(next_state_, STATE_AUTH_REQUIRED);
992 auth_cache_.Add(ProxyAuthOrigin(), 994 auth_cache_.Add(ProxyAuthOrigin(),
993 auth_handler_->realm(), 995 auth_handler_->realm(),
994 auth_handler_->scheme(), 996 auth_handler_->auth_scheme(),
995 auth_handler_->challenge(), 997 auth_handler_->challenge(),
996 auth_identity_.username, 998 auth_identity_.username,
997 auth_identity_.password, 999 auth_identity_.password,
998 std::string()); 1000 std::string());
999 1001
1000 tunnel_request_headers_ = NULL; 1002 tunnel_request_headers_ = NULL;
1001 tunnel_request_headers_bytes_sent_ = 0; 1003 tunnel_request_headers_bytes_sent_ = 0;
1002 tunnel_response_headers_ = NULL; 1004 tunnel_response_headers_ = NULL;
1003 tunnel_response_headers_capacity_ = 0; 1005 tunnel_response_headers_capacity_ = 0;
1004 tunnel_response_headers_len_ = 0; 1006 tunnel_response_headers_len_ = 0;
(...skipping 22 matching lines...) Expand all
1027 1029
1028 SSLConfigService* SocketStream::ssl_config_service() const { 1030 SSLConfigService* SocketStream::ssl_config_service() const {
1029 return context_->ssl_config_service(); 1031 return context_->ssl_config_service();
1030 } 1032 }
1031 1033
1032 ProxyService* SocketStream::proxy_service() const { 1034 ProxyService* SocketStream::proxy_service() const {
1033 return context_->proxy_service(); 1035 return context_->proxy_service();
1034 } 1036 }
1035 1037
1036 } // namespace net 1038 } // namespace net
OLDNEW
« no previous file with comments | « net/socket/ssl_client_socket_pool_unittest.cc ('k') | net/spdy/spdy_proxy_client_socket_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698