diff options
author | rch@chromium.org <rch@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2014-04-07 20:34:07 +0000 |
---|---|---|
committer | rch@chromium.org <rch@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2014-04-07 20:34:07 +0000 |
commit | 63b866ebe66141ccf3493aae6c5fe58a1517e207 (patch) | |
tree | 48a2bdb8495c67cedd00336057ad06c6ffc667b3 /net | |
parent | cfd837c4da9166959475f9f309ab5f5253c76560 (diff) | |
download | chromium_src-63b866ebe66141ccf3493aae6c5fe58a1517e207.zip chromium_src-63b866ebe66141ccf3493aae6c5fe58a1517e207.tar.gz chromium_src-63b866ebe66141ccf3493aae6c5fe58a1517e207.tar.bz2 |
More attempts to fix the crash in QuicConnection::CanWrite.
BUG=354669
Review URL: https://codereview.chromium.org/227233009
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@262195 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'net')
-rw-r--r-- | net/quic/quic_client_session.cc | 6 | ||||
-rw-r--r-- | net/quic/quic_session.cc | 6 |
2 files changed, 11 insertions, 1 deletions
diff --git a/net/quic/quic_client_session.cc b/net/quic/quic_client_session.cc index 5fe6e10..b00aa79 100644 --- a/net/quic/quic_client_session.cc +++ b/net/quic/quic_client_session.cc @@ -179,6 +179,12 @@ QuicClientSession::~QuicClientSession() { } } + if (connection()->connected()) { + // Ensure that the connection is closed by the time the session is + // destroyed. + connection()->CloseConnection(QUIC_INTERNAL_ERROR, false); + } + if (IsEncryptionEstablished()) RecordHandshakeState(STATE_ENCRYPTION_ESTABLISHED); if (IsCryptoHandshakeConfirmed()) diff --git a/net/quic/quic_session.cc b/net/quic/quic_session.cc index 3a3207e..900c705 100644 --- a/net/quic/quic_session.cc +++ b/net/quic/quic_session.cc @@ -317,7 +317,11 @@ size_t QuicSession::WriteHeaders( void QuicSession::SendRstStream(QuicStreamId id, QuicRstStreamErrorCode error, QuicStreamOffset bytes_written) { - connection_->SendRstStream(id, error, bytes_written); + if (connection()->connected()) { + // Don't bother sending a RST_STREAM frame if the connection is already + // closed. + connection_->SendRstStream(id, error, bytes_written); + } CloseStreamInner(id, true); } |