Index: net/quic/quic_stream_factory.cc |
diff --git a/net/quic/quic_stream_factory.cc b/net/quic/quic_stream_factory.cc |
index 51b3b9df919ffbcd05ecdad72cd305e964c5b379..404ed1935b70f21f5e74960ee84adddeae61f129 100644 |
--- a/net/quic/quic_stream_factory.cc |
+++ b/net/quic/quic_stream_factory.cc |
@@ -888,9 +888,17 @@ int QuicStreamFactory::CreateSession( |
server_info.Pass(), config, |
base::MessageLoop::current()->message_loop_proxy().get(), |
net_log.net_log()); |
+ all_sessions_[*session] = server_id; // owning pointer |
(*session)->InitializeSession(server_id, &crypto_config_, |
quic_crypto_client_stream_factory_); |
- all_sessions_[*session] = server_id; // owning pointer |
+ bool closed_during_initialize = !ContainsKey(all_sessions_, *session); |
+ UMA_HISTOGRAM_BOOLEAN("Net.QuicSession.ClosedDuringInitializeSession", |
+ closed_during_initialize); |
+ if (closed_during_initialize) { |
+ DLOG(DFATAL) << "Session closed during initialize"; |
+ *session = NULL; |
+ return ERR_CONNECTION_CLOSED; |
+ } |
return OK; |
} |