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

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

Issue 665083009: ABANDONED Handle multiple AlternateProtocols for each HostPortPair. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Custom entries for broken_alternate_protocol_list_ and map_. Created 5 years, 10 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
OLDNEW
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 54 matching lines...) Expand 10 before | Expand all | Expand 10 after
65 dict->SetString("proto", *proto); 65 dict->SetString("proto", *proto);
66 return dict; 66 return dict;
67 } 67 }
68 68
69 HttpStreamFactoryImpl::Job::Job(HttpStreamFactoryImpl* stream_factory, 69 HttpStreamFactoryImpl::Job::Job(HttpStreamFactoryImpl* stream_factory,
70 HttpNetworkSession* session, 70 HttpNetworkSession* session,
71 const HttpRequestInfo& request_info, 71 const HttpRequestInfo& request_info,
72 RequestPriority priority, 72 RequestPriority priority,
73 const SSLConfig& server_ssl_config, 73 const SSLConfig& server_ssl_config,
74 const SSLConfig& proxy_ssl_config, 74 const SSLConfig& proxy_ssl_config,
75 NetLog* net_log) 75 NetLog* net_log,
76 AlternateProtocolInfo alternate_protocol)
76 : request_(NULL), 77 : request_(NULL),
77 request_info_(request_info), 78 request_info_(request_info),
78 priority_(priority), 79 priority_(priority),
79 server_ssl_config_(server_ssl_config), 80 server_ssl_config_(server_ssl_config),
80 proxy_ssl_config_(proxy_ssl_config), 81 proxy_ssl_config_(proxy_ssl_config),
81 net_log_(BoundNetLog::Make(net_log, NetLog::SOURCE_HTTP_STREAM_JOB)), 82 net_log_(BoundNetLog::Make(net_log, NetLog::SOURCE_HTTP_STREAM_JOB)),
82 io_callback_(base::Bind(&Job::OnIOComplete, base::Unretained(this))), 83 io_callback_(base::Bind(&Job::OnIOComplete, base::Unretained(this))),
83 connection_(new ClientSocketHandle), 84 connection_(new ClientSocketHandle),
84 session_(session), 85 session_(session),
85 stream_factory_(stream_factory), 86 stream_factory_(stream_factory),
86 next_state_(STATE_NONE), 87 next_state_(STATE_NONE),
87 pac_request_(NULL), 88 pac_request_(NULL),
89 alternate_protocol_(alternate_protocol),
88 blocking_job_(NULL), 90 blocking_job_(NULL),
89 waiting_job_(NULL), 91 waiting_job_(NULL),
90 using_ssl_(false), 92 using_ssl_(false),
91 using_spdy_(false), 93 using_spdy_(false),
92 using_quic_(false), 94 using_quic_(false),
93 quic_request_(session_->quic_stream_factory()), 95 quic_request_(session_->quic_stream_factory()),
94 using_existing_quic_session_(false), 96 using_existing_quic_session_(false),
95 spdy_certificate_error_(OK), 97 spdy_certificate_error_(OK),
96 establishing_tunnel_(false), 98 establishing_tunnel_(false),
97 was_npn_negotiated_(false), 99 was_npn_negotiated_(false),
(...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after
156 case STATE_RESOLVE_PROXY_COMPLETE: 158 case STATE_RESOLVE_PROXY_COMPLETE:
157 return session_->proxy_service()->GetLoadState(pac_request_); 159 return session_->proxy_service()->GetLoadState(pac_request_);
158 case STATE_INIT_CONNECTION_COMPLETE: 160 case STATE_INIT_CONNECTION_COMPLETE:
159 case STATE_CREATE_STREAM_COMPLETE: 161 case STATE_CREATE_STREAM_COMPLETE:
160 return using_quic_ ? LOAD_STATE_CONNECTING : connection_->GetLoadState(); 162 return using_quic_ ? LOAD_STATE_CONNECTING : connection_->GetLoadState();
161 default: 163 default:
162 return LOAD_STATE_IDLE; 164 return LOAD_STATE_IDLE;
163 } 165 }
164 } 166 }
165 167
166 void HttpStreamFactoryImpl::Job::MarkAsAlternate( 168 void HttpStreamFactoryImpl::Job::MarkAsAlternate(const GURL& original_url) {
167 const GURL& original_url,
168 AlternateProtocolInfo alternate) {
169 DCHECK(!original_url_.get()); 169 DCHECK(!original_url_.get());
170 original_url_.reset(new GURL(original_url)); 170 original_url_.reset(new GURL(original_url));
171 if (alternate.protocol == QUIC) { 171 if (alternate_protocol_.protocol == QUIC) {
172 DCHECK(session_->params().enable_quic); 172 DCHECK(session_->params().enable_quic);
173 using_quic_ = true; 173 using_quic_ = true;
174 } 174 }
175 } 175 }
176 176
177 void HttpStreamFactoryImpl::Job::WaitFor(Job* job) { 177 void HttpStreamFactoryImpl::Job::WaitFor(Job* job) {
178 DCHECK_EQ(STATE_NONE, next_state_); 178 DCHECK_EQ(STATE_NONE, next_state_);
179 DCHECK_EQ(STATE_NONE, job->next_state_); 179 DCHECK_EQ(STATE_NONE, job->next_state_);
180 DCHECK(!blocking_job_); 180 DCHECK(!blocking_job_);
181 DCHECK(!job->waiting_job_); 181 DCHECK(!job->waiting_job_);
(...skipping 1277 matching lines...) Expand 10 before | Expand all | Expand 10 after
1459 void HttpStreamFactoryImpl::Job::MaybeMarkAlternateProtocolBroken() { 1459 void HttpStreamFactoryImpl::Job::MaybeMarkAlternateProtocolBroken() {
1460 if (job_status_ == STATUS_RUNNING || other_job_status_ == STATUS_RUNNING) 1460 if (job_status_ == STATUS_RUNNING || other_job_status_ == STATUS_RUNNING)
1461 return; 1461 return;
1462 1462
1463 bool is_alternate_protocol_job = original_url_.get() != NULL; 1463 bool is_alternate_protocol_job = original_url_.get() != NULL;
1464 if (is_alternate_protocol_job) { 1464 if (is_alternate_protocol_job) {
1465 if (job_status_ == STATUS_BROKEN && other_job_status_ == STATUS_SUCCEEDED) { 1465 if (job_status_ == STATUS_BROKEN && other_job_status_ == STATUS_SUCCEEDED) {
1466 HistogramBrokenAlternateProtocolLocation( 1466 HistogramBrokenAlternateProtocolLocation(
1467 BROKEN_ALTERNATE_PROTOCOL_LOCATION_HTTP_STREAM_FACTORY_IMPL_JOB_ALT); 1467 BROKEN_ALTERNATE_PROTOCOL_LOCATION_HTTP_STREAM_FACTORY_IMPL_JOB_ALT);
1468 session_->http_server_properties()->SetBrokenAlternateProtocol( 1468 session_->http_server_properties()->SetBrokenAlternateProtocol(
1469 HostPortPair::FromURL(*original_url_)); 1469 HostPortPair::FromURL(*original_url_), alternate_protocol_);
1470 } 1470 }
1471 return; 1471 return;
1472 } 1472 }
1473 1473
1474 if (job_status_ == STATUS_SUCCEEDED && other_job_status_ == STATUS_BROKEN) { 1474 if (job_status_ == STATUS_SUCCEEDED && other_job_status_ == STATUS_BROKEN) {
1475 HistogramBrokenAlternateProtocolLocation( 1475 HistogramBrokenAlternateProtocolLocation(
1476 BROKEN_ALTERNATE_PROTOCOL_LOCATION_HTTP_STREAM_FACTORY_IMPL_JOB_MAIN); 1476 BROKEN_ALTERNATE_PROTOCOL_LOCATION_HTTP_STREAM_FACTORY_IMPL_JOB_MAIN);
1477 session_->http_server_properties()->SetBrokenAlternateProtocol( 1477 session_->http_server_properties()->SetBrokenAlternateProtocol(
1478 HostPortPair::FromURL(request_info_.url)); 1478 HostPortPair::FromURL(request_info_.url), alternate_protocol_);
1479 } 1479 }
1480 } 1480 }
1481 1481
1482 } // namespace net 1482 } // namespace net
OLDNEW
« no previous file with comments | « net/http/http_stream_factory_impl_job.h ('k') | net/http/http_stream_factory_impl_request_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698