OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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 <algorithm> | 7 #include <algorithm> |
8 #include <string> | 8 #include <string> |
9 | 9 |
10 #include "base/bind.h" | 10 #include "base/bind.h" |
(...skipping 26 matching lines...) Expand all Loading... |
37 #include "net/socket/ssl_client_socket.h" | 37 #include "net/socket/ssl_client_socket.h" |
38 #include "net/socket/ssl_client_socket_pool.h" | 38 #include "net/socket/ssl_client_socket_pool.h" |
39 #include "net/spdy/spdy_http_stream.h" | 39 #include "net/spdy/spdy_http_stream.h" |
40 #include "net/spdy/spdy_session.h" | 40 #include "net/spdy/spdy_session.h" |
41 #include "net/spdy/spdy_session_pool.h" | 41 #include "net/spdy/spdy_session_pool.h" |
42 #include "net/ssl/ssl_cert_request_info.h" | 42 #include "net/ssl/ssl_cert_request_info.h" |
43 | 43 |
44 namespace net { | 44 namespace net { |
45 | 45 |
46 // Returns parameters associated with the start of a HTTP stream job. | 46 // Returns parameters associated with the start of a HTTP stream job. |
47 base::Value* NetLogHttpStreamJobCallback( | 47 scoped_ptr<base::Value> NetLogHttpStreamJobCallback( |
48 const GURL* original_url, | 48 const GURL* original_url, |
49 const GURL* url, | 49 const GURL* url, |
50 const AlternativeService* alternative_service, | 50 const AlternativeService* alternative_service, |
51 RequestPriority priority, | 51 RequestPriority priority, |
52 NetLogCaptureMode /* capture_mode */) { | 52 NetLogCaptureMode /* capture_mode */) { |
53 base::DictionaryValue* dict = new base::DictionaryValue(); | 53 scoped_ptr<base::DictionaryValue> dict(new base::DictionaryValue()); |
54 dict->SetString("original_url", original_url->GetOrigin().spec()); | 54 dict->SetString("original_url", original_url->GetOrigin().spec()); |
55 dict->SetString("url", url->GetOrigin().spec()); | 55 dict->SetString("url", url->GetOrigin().spec()); |
56 dict->SetString("alternative_service", alternative_service->ToString()); | 56 dict->SetString("alternative_service", alternative_service->ToString()); |
57 dict->SetString("priority", RequestPriorityToString(priority)); | 57 dict->SetString("priority", RequestPriorityToString(priority)); |
58 return dict; | 58 return dict.Pass(); |
59 } | 59 } |
60 | 60 |
61 // Returns parameters associated with the Proto (with NPN negotiation) of a HTTP | 61 // Returns parameters associated with the Proto (with NPN negotiation) of a HTTP |
62 // stream. | 62 // stream. |
63 base::Value* NetLogHttpStreamProtoCallback( | 63 scoped_ptr<base::Value> NetLogHttpStreamProtoCallback( |
64 const SSLClientSocket::NextProtoStatus status, | 64 const SSLClientSocket::NextProtoStatus status, |
65 const std::string* proto, | 65 const std::string* proto, |
66 NetLogCaptureMode /* capture_mode */) { | 66 NetLogCaptureMode /* capture_mode */) { |
67 base::DictionaryValue* dict = new base::DictionaryValue(); | 67 scoped_ptr<base::DictionaryValue> dict(new base::DictionaryValue()); |
68 | 68 |
69 dict->SetString("next_proto_status", | 69 dict->SetString("next_proto_status", |
70 SSLClientSocket::NextProtoStatusToString(status)); | 70 SSLClientSocket::NextProtoStatusToString(status)); |
71 dict->SetString("proto", *proto); | 71 dict->SetString("proto", *proto); |
72 return dict; | 72 return dict.Pass(); |
73 } | 73 } |
74 | 74 |
75 HttpStreamFactoryImpl::Job::Job(HttpStreamFactoryImpl* stream_factory, | 75 HttpStreamFactoryImpl::Job::Job(HttpStreamFactoryImpl* stream_factory, |
76 HttpNetworkSession* session, | 76 HttpNetworkSession* session, |
77 const HttpRequestInfo& request_info, | 77 const HttpRequestInfo& request_info, |
78 RequestPriority priority, | 78 RequestPriority priority, |
79 const SSLConfig& server_ssl_config, | 79 const SSLConfig& server_ssl_config, |
80 const SSLConfig& proxy_ssl_config, | 80 const SSLConfig& proxy_ssl_config, |
81 NetLog* net_log) | 81 NetLog* net_log) |
82 : request_(NULL), | 82 : request_(NULL), |
(...skipping 556 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
639 } else { | 639 } else { |
640 server_ = HostPortPair::FromURL(request_info_.url); | 640 server_ = HostPortPair::FromURL(request_info_.url); |
641 } | 641 } |
642 origin_url_ = | 642 origin_url_ = |
643 stream_factory_->ApplyHostMappingRules(request_info_.url, &server_); | 643 stream_factory_->ApplyHostMappingRules(request_info_.url, &server_); |
644 valid_spdy_session_pool_.reset(new ValidSpdySessionPool( | 644 valid_spdy_session_pool_.reset(new ValidSpdySessionPool( |
645 session_->spdy_session_pool(), origin_url_, IsSpdyAlternate())); | 645 session_->spdy_session_pool(), origin_url_, IsSpdyAlternate())); |
646 | 646 |
647 net_log_.BeginEvent( | 647 net_log_.BeginEvent( |
648 NetLog::TYPE_HTTP_STREAM_JOB, | 648 NetLog::TYPE_HTTP_STREAM_JOB, |
649 base::Bind(&NetLogHttpStreamJobCallback, &request_info_.url, &origin_url_, | 649 base::Bind(NetLogHttpStreamJobCallback, &request_info_.url, &origin_url_, |
650 &alternative_service_, priority_)); | 650 &alternative_service_, priority_)); |
651 | 651 |
652 // Don't connect to restricted ports. | 652 // Don't connect to restricted ports. |
653 bool is_port_allowed = IsPortAllowedByDefault(server_.port()); | 653 bool is_port_allowed = IsPortAllowedByDefault(server_.port()); |
654 if (request_info_.url.SchemeIs("ftp")) { | 654 if (request_info_.url.SchemeIs("ftp")) { |
655 // Never share connection with other jobs for FTP requests. | 655 // Never share connection with other jobs for FTP requests. |
656 DCHECK(!waiting_job_); | 656 DCHECK(!waiting_job_); |
657 | 657 |
658 is_port_allowed = IsPortAllowedByFtp(server_.port()); | 658 is_port_allowed = IsPortAllowedByFtp(server_.port()); |
659 } | 659 } |
(...skipping 313 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
973 SSLClientSocket* ssl_socket = | 973 SSLClientSocket* ssl_socket = |
974 static_cast<SSLClientSocket*>(connection_->socket()); | 974 static_cast<SSLClientSocket*>(connection_->socket()); |
975 if (ssl_socket->WasNpnNegotiated()) { | 975 if (ssl_socket->WasNpnNegotiated()) { |
976 was_npn_negotiated_ = true; | 976 was_npn_negotiated_ = true; |
977 std::string proto; | 977 std::string proto; |
978 SSLClientSocket::NextProtoStatus status = | 978 SSLClientSocket::NextProtoStatus status = |
979 ssl_socket->GetNextProto(&proto); | 979 ssl_socket->GetNextProto(&proto); |
980 protocol_negotiated_ = SSLClientSocket::NextProtoFromString(proto); | 980 protocol_negotiated_ = SSLClientSocket::NextProtoFromString(proto); |
981 net_log_.AddEvent( | 981 net_log_.AddEvent( |
982 NetLog::TYPE_HTTP_STREAM_REQUEST_PROTO, | 982 NetLog::TYPE_HTTP_STREAM_REQUEST_PROTO, |
983 base::Bind(&NetLogHttpStreamProtoCallback, | 983 base::Bind(NetLogHttpStreamProtoCallback, status, &proto)); |
984 status, &proto)); | |
985 if (NextProtoIsSPDY(protocol_negotiated_)) | 984 if (NextProtoIsSPDY(protocol_negotiated_)) |
986 SwitchToSpdyMode(); | 985 SwitchToSpdyMode(); |
987 } | 986 } |
988 } | 987 } |
989 } else if (proxy_info_.is_https() && connection_->socket() && | 988 } else if (proxy_info_.is_https() && connection_->socket() && |
990 result == OK) { | 989 result == OK) { |
991 ProxyClientSocket* proxy_socket = | 990 ProxyClientSocket* proxy_socket = |
992 static_cast<ProxyClientSocket*>(connection_->socket()); | 991 static_cast<ProxyClientSocket*>(connection_->socket()); |
993 if (proxy_socket->IsUsingSpdy()) { | 992 if (proxy_socket->IsUsingSpdy()) { |
994 was_npn_negotiated_ = true; | 993 was_npn_negotiated_ = true; |
(...skipping 533 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1528 | 1527 |
1529 void HttpStreamFactoryImpl::Job:: | 1528 void HttpStreamFactoryImpl::Job:: |
1530 MaybeCopyConnectionAttemptsFromClientSocketHandleToRequest() { | 1529 MaybeCopyConnectionAttemptsFromClientSocketHandleToRequest() { |
1531 if (IsOrphaned() || !connection_) | 1530 if (IsOrphaned() || !connection_) |
1532 return; | 1531 return; |
1533 | 1532 |
1534 request_->AddConnectionAttempts(connection_->connection_attempts()); | 1533 request_->AddConnectionAttempts(connection_->connection_attempts()); |
1535 } | 1534 } |
1536 | 1535 |
1537 } // namespace net | 1536 } // namespace net |
OLD | NEW |