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

Unified Diff: net/quic/quic_stream_factory.cc

Issue 602763004: QUIC - Used Quic and IP Address in prefs persistent store. It is (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@persist_global
Patch Set: Fix try bot error Created 6 years, 3 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « net/quic/quic_stream_factory.h ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: net/quic/quic_stream_factory.cc
diff --git a/net/quic/quic_stream_factory.cc b/net/quic/quic_stream_factory.cc
index 6f71095fe9556a900a2ee9c6f85a2cbb5903b317..c7aeb4c8c5da6a363c8b4caf32f0c2344fb5068d 100644
--- a/net/quic/quic_stream_factory.cc
+++ b/net/quic/quic_stream_factory.cc
@@ -71,6 +71,9 @@ const int32 kServerSecureInitialCongestionWindow = 32;
// Be conservative, and just use double a typical TCP ICWND for HTTP.
const int32 kServerInecureInitialCongestionWindow = 20;
+const char kDummyHostname[] = "quic.global.props";
+const uint16 kDummyPort = 0;
+
void HistogramCreateSessionFailure(enum CreateSessionFailure error) {
UMA_HISTOGRAM_ENUMERATION("Net.QuicSession.CreationError", error,
CREATION_ERROR_MAX);
@@ -510,6 +513,7 @@ QuicStreamFactory::QuicStreamFactory(
always_require_handshake_confirmation),
disable_connection_pooling_(disable_connection_pooling),
port_seed_(random_generator_->RandUint64()),
+ check_persisted_supports_quic_(true),
weak_factory_(this) {
DCHECK(transport_security_state_);
crypto_config_.SetDefaults();
@@ -536,6 +540,17 @@ QuicStreamFactory::~QuicStreamFactory() {
STLDeleteValues(&active_jobs_);
}
+void QuicStreamFactory::set_require_confirmation(bool require_confirmation) {
+ require_confirmation_ = require_confirmation;
+ if (http_server_properties_ && (!(local_address_ == IPEndPoint()))) {
+ // TODO(rtenneti): Delete host_port_pair and persist data in globals.
+ HostPortPair host_port_pair(kDummyHostname, kDummyPort);
+ http_server_properties_->SetSupportsQuic(
+ host_port_pair, !require_confirmation,
+ local_address_.ToStringWithoutPort());
+ }
+}
+
int QuicStreamFactory::Create(const HostPortPair& host_port_pair,
bool is_https,
PrivacyMode privacy_mode,
@@ -616,7 +631,7 @@ bool QuicStreamFactory::OnResolution(
void QuicStreamFactory::OnJobComplete(Job* job, int rv) {
if (rv == OK) {
if (!always_require_handshake_confirmation_)
- require_confirmation_ = false;
+ set_require_confirmation(false);
// Create all the streams, but do not notify them yet.
for (RequestSet::iterator it = job_requests_map_[job].begin();
@@ -772,7 +787,7 @@ void QuicStreamFactory::ClearCachedStatesInCryptoConfig() {
void QuicStreamFactory::OnIPAddressChanged() {
CloseAllSessions(ERR_NETWORK_CHANGED);
- require_confirmation_ = true;
+ set_require_confirmation(true);
}
void QuicStreamFactory::OnCertAdded(const X509Certificate* cert) {
@@ -857,6 +872,18 @@ int QuicStreamFactory::CreateSession(
return rv;
}
+ socket->GetLocalAddress(&local_address_);
+ if (check_persisted_supports_quic_ && http_server_properties_) {
+ check_persisted_supports_quic_ = false;
+ // TODO(rtenneti): Delete host_port_pair and persist data in globals.
+ HostPortPair host_port_pair(kDummyHostname, kDummyPort);
+ SupportsQuic supports_quic(true, local_address_.ToStringWithoutPort());
+ if (http_server_properties_->GetSupportsQuic(
+ host_port_pair).Equals(supports_quic)) {
+ require_confirmation_ = false;
+ }
+ }
+
DefaultPacketWriterFactory packet_writer_factory(socket.get());
if (!helper_.get()) {
« no previous file with comments | « net/quic/quic_stream_factory.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698