OLD | NEW |
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/quic/quic_client_session.h" | 5 #include "net/quic/quic_client_session.h" |
6 | 6 |
7 #include "base/callback_helpers.h" | 7 #include "base/callback_helpers.h" |
8 #include "base/message_loop/message_loop.h" | 8 #include "base/message_loop/message_loop.h" |
9 #include "base/metrics/histogram.h" | 9 #include "base/metrics/histogram.h" |
10 #include "base/metrics/sparse_histogram.h" | 10 #include "base/metrics/sparse_histogram.h" |
(...skipping 600 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
611 QuicErrorCode quic_error) { | 611 QuicErrorCode quic_error) { |
612 if (!callback_.is_null()) { | 612 if (!callback_.is_null()) { |
613 base::ResetAndReturn(&callback_).Run(net_error); | 613 base::ResetAndReturn(&callback_).Run(net_error); |
614 } | 614 } |
615 CloseAllStreams(net_error); | 615 CloseAllStreams(net_error); |
616 CloseAllObservers(net_error); | 616 CloseAllObservers(net_error); |
617 net_log_.AddEvent( | 617 net_log_.AddEvent( |
618 NetLog::TYPE_QUIC_SESSION_CLOSE_ON_ERROR, | 618 NetLog::TYPE_QUIC_SESSION_CLOSE_ON_ERROR, |
619 NetLog::IntegerCallback("net_error", net_error)); | 619 NetLog::IntegerCallback("net_error", net_error)); |
620 | 620 |
621 connection()->CloseConnection(quic_error, false); | 621 if (connection()->connected()) |
| 622 connection()->CloseConnection(quic_error, false); |
622 DCHECK(!connection()->connected()); | 623 DCHECK(!connection()->connected()); |
623 } | 624 } |
624 | 625 |
625 void QuicClientSession::CloseAllStreams(int net_error) { | 626 void QuicClientSession::CloseAllStreams(int net_error) { |
626 while (!streams()->empty()) { | 627 while (!streams()->empty()) { |
627 ReliableQuicStream* stream = streams()->begin()->second; | 628 ReliableQuicStream* stream = streams()->begin()->second; |
628 QuicStreamId id = stream->id(); | 629 QuicStreamId id = stream->id(); |
629 static_cast<QuicReliableClientStream*>(stream)->OnError(net_error); | 630 static_cast<QuicReliableClientStream*>(stream)->OnError(net_error); |
630 CloseStream(id); | 631 CloseStream(id); |
631 } | 632 } |
(...skipping 96 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
728 RecordUnexpectedNotGoingAway(NOTIFY_FACTORY_OF_SESSION_CLOSED); | 729 RecordUnexpectedNotGoingAway(NOTIFY_FACTORY_OF_SESSION_CLOSED); |
729 | 730 |
730 going_away_ = true; | 731 going_away_ = true; |
731 DCHECK_EQ(0u, GetNumOpenStreams()); | 732 DCHECK_EQ(0u, GetNumOpenStreams()); |
732 // Will delete |this|. | 733 // Will delete |this|. |
733 if (stream_factory_) | 734 if (stream_factory_) |
734 stream_factory_->OnSessionClosed(this); | 735 stream_factory_->OnSessionClosed(this); |
735 } | 736 } |
736 | 737 |
737 } // namespace net | 738 } // namespace net |
OLD | NEW |