Index: net/tools/quic/quic_client.cc |
diff --git a/net/tools/quic/quic_client.cc b/net/tools/quic/quic_client.cc |
index 52c4e2cfdde7152b3c67f30a606b83f607997415..ca87c2f58e107f7c6da143cc302f8e9d76aac782 100644 |
--- a/net/tools/quic/quic_client.cc |
+++ b/net/tools/quic/quic_client.cc |
@@ -178,14 +178,21 @@ bool QuicClient::StartConnect() { |
DCHECK(!connected()); |
QuicPacketWriter* writer = CreateQuicPacketWriter(); |
- if (writer_.get() != writer) { |
- writer_.reset(writer); |
- } |
session_.reset(new QuicClientSession( |
config_, |
- new QuicConnection(GenerateConnectionId(), server_address_, helper_.get(), |
- writer_.get(), false, supported_versions_))); |
+ new QuicConnection(GenerateConnectionId(), |
+ server_address_, |
+ helper_.get(), |
+ writer, |
+ false /* owns_writer */, |
+ false /* is_server */, |
+ supported_versions_))); |
+ // Reset |writer_| after |session_| so that the old writer outlives the old |
+ // session. |
+ if (writer_.get() != writer) { |
+ writer_.reset(writer); |
+ } |
session_->InitializeSession(server_id_, &crypto_config_); |
return session_->CryptoConnect(); |
} |