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

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

Issue 6804032: Add TLS-SRP (RFC 5054) support Base URL: http://git.chromium.org/git/chromium.git@trunk
Patch Set: use system srp and mpi libs, not local copies Created 9 years, 8 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 #include "net/http/http_stream_request.h" 5 #include "net/http/http_stream_request.h"
6 6
7 #include "base/stl_util-inl.h" 7 #include "base/stl_util-inl.h"
8 #include "base/string_number_conversions.h" 8 #include "base/string_number_conversions.h"
9 #include "base/string_util.h" 9 #include "base/string_util.h"
10 #include "base/stringprintf.h" 10 #include "base/stringprintf.h"
(...skipping 188 matching lines...) Expand 10 before | Expand all | Expand 10 after
199 const HttpResponseInfo& response, 199 const HttpResponseInfo& response,
200 HttpAuthController* auth_controller) { 200 HttpAuthController* auth_controller) {
201 delegate_->OnNeedsProxyAuth(response, auth_controller); 201 delegate_->OnNeedsProxyAuth(response, auth_controller);
202 } 202 }
203 203
204 void HttpStreamRequest::OnNeedsClientAuthCallback( 204 void HttpStreamRequest::OnNeedsClientAuthCallback(
205 SSLCertRequestInfo* cert_info) { 205 SSLCertRequestInfo* cert_info) {
206 delegate_->OnNeedsClientAuth(cert_info); 206 delegate_->OnNeedsClientAuth(cert_info);
207 } 207 }
208 208
209 void HttpStreamRequest::OnNeedsTLSLoginCallback(
210 AuthChallengeInfo* login_info) {
211 delegate_->OnNeedsTLSLogin(login_info);
212 }
213
209 void HttpStreamRequest::OnHttpsProxyTunnelResponseCallback( 214 void HttpStreamRequest::OnHttpsProxyTunnelResponseCallback(
210 const HttpResponseInfo& response_info, 215 const HttpResponseInfo& response_info,
211 HttpStream* stream) { 216 HttpStream* stream) {
212 delegate_->OnHttpsProxyTunnelResponse(response_info, stream); 217 delegate_->OnHttpsProxyTunnelResponse(response_info, stream);
213 } 218 }
214 219
215 void HttpStreamRequest::OnPreconnectsComplete(int result) { 220 void HttpStreamRequest::OnPreconnectsComplete(int result) {
216 preconnect_delegate_->OnPreconnectsComplete(this, result); 221 preconnect_delegate_->OnPreconnectsComplete(this, result);
217 } 222 }
218 223
(...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after
272 return ERR_IO_PENDING; 277 return ERR_IO_PENDING;
273 278
274 case ERR_SSL_CLIENT_AUTH_CERT_NEEDED: 279 case ERR_SSL_CLIENT_AUTH_CERT_NEEDED:
275 MessageLoop::current()->PostTask( 280 MessageLoop::current()->PostTask(
276 FROM_HERE, 281 FROM_HERE,
277 method_factory_.NewRunnableMethod( 282 method_factory_.NewRunnableMethod(
278 &HttpStreamRequest::OnNeedsClientAuthCallback, 283 &HttpStreamRequest::OnNeedsClientAuthCallback,
279 connection_->ssl_error_response_info().cert_request_info)); 284 connection_->ssl_error_response_info().cert_request_info));
280 return ERR_IO_PENDING; 285 return ERR_IO_PENDING;
281 286
287 case ERR_TLS_CLIENT_LOGIN_NEEDED:
288 MessageLoop::current()->PostTask(
289 FROM_HERE,
290 method_factory_.NewRunnableMethod(
291 &HttpStreamRequest::OnNeedsTLSLoginCallback,
292 connection_->ssl_error_response_info().login_request_info));
293 return ERR_TLS_CLIENT_LOGIN_NEEDED;
294
282 case ERR_HTTPS_PROXY_TUNNEL_RESPONSE: 295 case ERR_HTTPS_PROXY_TUNNEL_RESPONSE:
283 { 296 {
284 DCHECK(connection_.get()); 297 DCHECK(connection_.get());
285 DCHECK(connection_->socket()); 298 DCHECK(connection_->socket());
286 DCHECK(establishing_tunnel_); 299 DCHECK(establishing_tunnel_);
287 300
288 ProxyClientSocket* proxy_socket = 301 ProxyClientSocket* proxy_socket =
289 static_cast<ProxyClientSocket*>(connection_->socket()); 302 static_cast<ProxyClientSocket*>(connection_->socket());
290 MessageLoop::current()->PostTask( 303 MessageLoop::current()->PostTask(
291 FROM_HERE, 304 FROM_HERE,
(...skipping 184 matching lines...) Expand 10 before | Expand all | Expand 10 after
476 489
477 int HttpStreamRequest::DoInitConnection() { 490 int HttpStreamRequest::DoInitConnection() {
478 DCHECK(!connection_->is_initialized()); 491 DCHECK(!connection_->is_initialized());
479 DCHECK(proxy_info()->proxy_server().is_valid()); 492 DCHECK(proxy_info()->proxy_server().is_valid());
480 next_state_ = STATE_INIT_CONNECTION_COMPLETE; 493 next_state_ = STATE_INIT_CONNECTION_COMPLETE;
481 494
482 bool want_spdy_over_npn = 495 bool want_spdy_over_npn =
483 alternate_protocol_mode_ == kUsingAlternateProtocol && 496 alternate_protocol_mode_ == kUsingAlternateProtocol &&
484 alternate_protocol_ == HttpAlternateProtocols::NPN_SPDY_2; 497 alternate_protocol_ == HttpAlternateProtocols::NPN_SPDY_2;
485 using_ssl_ = request_info().url.SchemeIs("https") || 498 using_ssl_ = request_info().url.SchemeIs("https") ||
499 request_info().url.SchemeIs("httpsv") ||
486 ShouldForceSpdySSL() || want_spdy_over_npn; 500 ShouldForceSpdySSL() || want_spdy_over_npn;
487 using_spdy_ = false; 501 using_spdy_ = false;
488 502
489 // If spdy has been turned off on-the-fly, then there may be SpdySessions 503 // If spdy has been turned off on-the-fly, then there may be SpdySessions
490 // still active. But don't use them unless spdy is currently on. 504 // still active. But don't use them unless spdy is currently on.
491 if (HttpStreamFactory::spdy_enabled()) { 505 if (HttpStreamFactory::spdy_enabled()) {
492 // Check first if we have a spdy session for this group. If so, then go 506 // Check first if we have a spdy session for this group. If so, then go
493 // straight to using that. 507 // straight to using that.
494 HostPortProxyPair pair(endpoint_, proxy_info()->proxy_server()); 508 HostPortProxyPair pair(endpoint_, proxy_info()->proxy_server());
495 if (session_->spdy_session_pool()->HasSession(pair)) { 509 if (session_->spdy_session_pool()->HasSession(pair)) {
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after
540 disable_resolver_cache); 554 disable_resolver_cache);
541 } else { 555 } else {
542 ProxyServer proxy_server = proxy_info()->proxy_server(); 556 ProxyServer proxy_server = proxy_info()->proxy_server();
543 proxy_host_port.reset(new HostPortPair(proxy_server.host_port_pair())); 557 proxy_host_port.reset(new HostPortPair(proxy_server.host_port_pair()));
544 scoped_refptr<TCPSocketParams> proxy_tcp_params( 558 scoped_refptr<TCPSocketParams> proxy_tcp_params(
545 new TCPSocketParams(*proxy_host_port, request_info().priority, 559 new TCPSocketParams(*proxy_host_port, request_info().priority,
546 request_info().referrer, disable_resolver_cache)); 560 request_info().referrer, disable_resolver_cache));
547 561
548 if (proxy_info()->is_http() || proxy_info()->is_https()) { 562 if (proxy_info()->is_http() || proxy_info()->is_https()) {
549 GURL authentication_url = request_info().url; 563 GURL authentication_url = request_info().url;
550 if (using_ssl_ && !authentication_url.SchemeIs("https")) { 564 if (using_ssl_ && !authentication_url.SchemeIs("https") &&
565 !authentication_url.SchemeIs("httpsv")) {
551 // If a proxy tunnel connection needs to be established due to 566 // If a proxy tunnel connection needs to be established due to
552 // an Alternate-Protocol, the URL needs to be changed to indicate 567 // an Alternate-Protocol, the URL needs to be changed to indicate
553 // https or digest authentication attempts will fail. 568 // https or digest authentication attempts will fail.
554 // For example, suppose the initial request was for 569 // For example, suppose the initial request was for
555 // "http://www.example.com/index.html". If this is an SSL 570 // "http://www.example.com/index.html". If this is an SSL
556 // upgrade due to alternate protocol, the digest authorization 571 // upgrade due to alternate protocol, the digest authorization
557 // should have a uri="www.example.com:443" field rather than a 572 // should have a uri="www.example.com:443" field rather than a
558 // "/index.html" entry, even though the original request URL has not 573 // "/index.html" entry, even though the original request URL has not
559 // changed. 574 // changed.
560 authentication_url = UpgradeUrlToHttps(authentication_url); 575 authentication_url = UpgradeUrlToHttps(authentication_url);
(...skipping 535 matching lines...) Expand 10 before | Expand all | Expand 10 after
1096 base::TimeDelta::FromMinutes(6), 1111 base::TimeDelta::FromMinutes(6),
1097 100); 1112 100);
1098 break; 1113 break;
1099 default: 1114 default:
1100 NOTREACHED(); 1115 NOTREACHED();
1101 break; 1116 break;
1102 } 1117 }
1103 } 1118 }
1104 1119
1105 } // namespace net 1120 } // namespace net
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698