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

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

Issue 874603004: Remove HasAlternateProtocol(). (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Return broken alternate protocols. 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_server_properties_impl.h" 5 #include "net/http/http_server_properties_impl.h"
6 6
7 #include "base/bind.h" 7 #include "base/bind.h"
8 #include "base/logging.h" 8 #include "base/logging.h"
9 #include "base/memory/scoped_ptr.h" 9 #include "base/memory/scoped_ptr.h"
10 #include "base/message_loop/message_loop.h" 10 #include "base/message_loop/message_loop.h"
(...skipping 161 matching lines...) Expand 10 before | Expand all | Expand 10 after
172 const HostPortPair& host_port_pair) { 172 const HostPortPair& host_port_pair) {
173 DCHECK(CalledOnValidThread()); 173 DCHECK(CalledOnValidThread());
174 if (host_port_pair.host().empty()) 174 if (host_port_pair.host().empty())
175 return false; 175 return false;
176 176
177 SpdyServerHostPortMap::iterator spdy_host_port = 177 SpdyServerHostPortMap::iterator spdy_host_port =
178 spdy_servers_map_.Get(host_port_pair.ToString()); 178 spdy_servers_map_.Get(host_port_pair.ToString());
179 if (spdy_host_port != spdy_servers_map_.end() && spdy_host_port->second) 179 if (spdy_host_port != spdy_servers_map_.end() && spdy_host_port->second)
180 return true; 180 return true;
181 181
182 if (!HasAlternateProtocol(host_port_pair)) 182 const AlternateProtocolInfo info = GetAlternateProtocol(host_port_pair);
183 return false;
184
185 AlternateProtocolInfo info = GetAlternateProtocol(host_port_pair);
186 return info.protocol == QUIC; 183 return info.protocol == QUIC;
187 } 184 }
188 185
189 void HttpServerPropertiesImpl::SetSupportsSpdy( 186 void HttpServerPropertiesImpl::SetSupportsSpdy(
190 const HostPortPair& host_port_pair, 187 const HostPortPair& host_port_pair,
191 bool support_spdy) { 188 bool support_spdy) {
192 DCHECK(CalledOnValidThread()); 189 DCHECK(CalledOnValidThread());
193 if (host_port_pair.host().empty()) 190 if (host_port_pair.host().empty())
194 return; 191 return;
195 192
(...skipping 25 matching lines...) Expand all
221 http11_servers_.insert(host_port_pair); 218 http11_servers_.insert(host_port_pair);
222 } 219 }
223 220
224 void HttpServerPropertiesImpl::MaybeForceHTTP11(const HostPortPair& server, 221 void HttpServerPropertiesImpl::MaybeForceHTTP11(const HostPortPair& server,
225 SSLConfig* ssl_config) { 222 SSLConfig* ssl_config) {
226 if (RequiresHTTP11(server)) { 223 if (RequiresHTTP11(server)) {
227 ForceHTTP11(ssl_config); 224 ForceHTTP11(ssl_config);
228 } 225 }
229 } 226 }
230 227
231 bool HttpServerPropertiesImpl::HasAlternateProtocol(
232 const HostPortPair& server) {
233 if (g_forced_alternate_protocol)
234 return true;
235 AlternateProtocolMap::const_iterator it =
236 GetAlternateProtocolIterator(server);
237 return it != alternate_protocol_map_.end() &&
238 it->second.probability >= alternate_protocol_probability_threshold_;
239 }
240
241 std::string HttpServerPropertiesImpl::GetCanonicalSuffix( 228 std::string HttpServerPropertiesImpl::GetCanonicalSuffix(
242 const std::string& host) { 229 const std::string& host) {
243 // If this host ends with a canonical suffix, then return the canonical 230 // If this host ends with a canonical suffix, then return the canonical
244 // suffix. 231 // suffix.
245 for (size_t i = 0; i < canonical_suffixes_.size(); ++i) { 232 for (size_t i = 0; i < canonical_suffixes_.size(); ++i) {
246 std::string canonical_suffix = canonical_suffixes_[i]; 233 std::string canonical_suffix = canonical_suffixes_[i];
247 if (EndsWith(host, canonical_suffixes_[i], false)) { 234 if (EndsWith(host, canonical_suffixes_[i], false)) {
248 return canonical_suffix; 235 return canonical_suffix;
249 } 236 }
250 } 237 }
251 return std::string(); 238 return std::string();
252 } 239 }
253 240
254 AlternateProtocolInfo 241 AlternateProtocolInfo HttpServerPropertiesImpl::GetAlternateProtocol(
255 HttpServerPropertiesImpl::GetAlternateProtocol(
256 const HostPortPair& server) { 242 const HostPortPair& server) {
257 DCHECK(HasAlternateProtocol(server));
258
259 AlternateProtocolMap::const_iterator it = 243 AlternateProtocolMap::const_iterator it =
260 GetAlternateProtocolIterator(server); 244 GetAlternateProtocolIterator(server);
261 if (it != alternate_protocol_map_.end()) 245 if (it != alternate_protocol_map_.end() &&
Bence 2015/02/03 20:43:20 Note that previously GetAlternateProtocol() was ab
246 it->second.probability >= alternate_protocol_probability_threshold_)
262 return it->second; 247 return it->second;
263 248
264 // We must be forcing an alternate. 249 if (g_forced_alternate_protocol)
265 DCHECK(g_forced_alternate_protocol); 250 return *g_forced_alternate_protocol;
266 return *g_forced_alternate_protocol; 251
252 AlternateProtocolInfo uninitialized_alternate_protocol;
253 return uninitialized_alternate_protocol;
267 } 254 }
268 255
269 void HttpServerPropertiesImpl::SetAlternateProtocol( 256 void HttpServerPropertiesImpl::SetAlternateProtocol(
270 const HostPortPair& server, 257 const HostPortPair& server,
271 uint16 alternate_port, 258 uint16 alternate_port,
272 AlternateProtocol alternate_protocol, 259 AlternateProtocol alternate_protocol,
273 double alternate_probability) { 260 double alternate_probability) {
274 261
275 AlternateProtocolInfo alternate(alternate_port, 262 AlternateProtocolInfo alternate(alternate_port,
276 alternate_protocol, 263 alternate_protocol,
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
315 HostPortPair canonical_host(canonical_suffix, server.port()); 302 HostPortPair canonical_host(canonical_suffix, server.port());
316 canonical_host_to_origin_map_[canonical_host] = server; 303 canonical_host_to_origin_map_[canonical_host] = server;
317 break; 304 break;
318 } 305 }
319 } 306 }
320 } 307 }
321 308
322 void HttpServerPropertiesImpl::SetBrokenAlternateProtocol( 309 void HttpServerPropertiesImpl::SetBrokenAlternateProtocol(
323 const HostPortPair& server) { 310 const HostPortPair& server) {
324 AlternateProtocolMap::iterator it = alternate_protocol_map_.Get(server); 311 AlternateProtocolMap::iterator it = alternate_protocol_map_.Get(server);
312 const AlternateProtocolInfo alternate = GetAlternateProtocol(server);
325 if (it == alternate_protocol_map_.end()) { 313 if (it == alternate_protocol_map_.end()) {
326 if (!HasAlternateProtocol(server)) { 314 if (alternate.protocol == UNINITIALIZED_ALTERNATE_PROTOCOL) {
327 LOG(DFATAL) << "Trying to mark unknown alternate protocol broken."; 315 LOG(DFATAL) << "Trying to mark unknown alternate protocol broken.";
328 return; 316 return;
329 } 317 }
330 // This server's alternate protocol information is coming from a canonical 318 // This server's alternate protocol information is coming from a canonical
331 // server. Add an entry in the map for this server explicitly so that 319 // server. Add an entry in the map for this server explicitly so that
332 // it can be marked as broken. 320 // it can be marked as broken.
333 it = alternate_protocol_map_.Put(server, GetAlternateProtocol(server)); 321 it = alternate_protocol_map_.Put(server, alternate);
334 } 322 }
335 it->second.is_broken = true; 323 it->second.is_broken = true;
336 int count = ++broken_alternate_protocol_map_[server]; 324 int count = ++broken_alternate_protocol_map_[server];
337 base::TimeDelta delay = 325 base::TimeDelta delay =
338 base::TimeDelta::FromSeconds(kBrokenAlternateProtocolDelaySecs); 326 base::TimeDelta::FromSeconds(kBrokenAlternateProtocolDelaySecs);
339 BrokenAlternateProtocolEntry entry; 327 BrokenAlternateProtocolEntry entry;
340 entry.server = server; 328 entry.server = server;
341 entry.when = base::TimeTicks::Now() + delay * (1 << (count - 1)); 329 entry.when = base::TimeTicks::Now() + delay * (1 << (count - 1));
342 broken_alternate_protocol_list_.push_back(entry); 330 broken_alternate_protocol_list_.push_back(entry);
343 331
(...skipping 191 matching lines...) Expand 10 before | Expand all | Expand 10 after
535 base::TimeDelta delay = when > now ? when - now : base::TimeDelta(); 523 base::TimeDelta delay = when > now ? when - now : base::TimeDelta();
536 base::MessageLoop::current()->PostDelayedTask( 524 base::MessageLoop::current()->PostDelayedTask(
537 FROM_HERE, 525 FROM_HERE,
538 base::Bind( 526 base::Bind(
539 &HttpServerPropertiesImpl::ExpireBrokenAlternateProtocolMappings, 527 &HttpServerPropertiesImpl::ExpireBrokenAlternateProtocolMappings,
540 weak_ptr_factory_.GetWeakPtr()), 528 weak_ptr_factory_.GetWeakPtr()),
541 delay); 529 delay);
542 } 530 }
543 531
544 } // namespace net 532 } // namespace net
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698