Chromium Code Reviews| Index: net/quic/quic_reliable_client_stream.cc |
| diff --git a/net/quic/quic_reliable_client_stream.cc b/net/quic/quic_reliable_client_stream.cc |
| index 09fb01ef6c9fb114b07b062ffd00091f1df7fdbe..24fef64ae623cbdbac3ae0998a0dee39c359ee59 100644 |
| --- a/net/quic/quic_reliable_client_stream.cc |
| +++ b/net/quic/quic_reliable_client_stream.cc |
| @@ -5,19 +5,26 @@ |
| #include "net/quic/quic_reliable_client_stream.h" |
| #include "net/base/net_errors.h" |
| +#include "net/quic/quic_session.h" |
| namespace net { |
| QuicReliableClientStream::QuicReliableClientStream(QuicStreamId id, |
| QuicSession* session) |
| - : ReliableQuicStream(id, session) { |
| + : ReliableQuicStream(id, session), |
| + delegate_(NULL) { |
| } |
| QuicReliableClientStream::~QuicReliableClientStream() { |
| + if (delegate_) { |
| + delegate_->OnClose(error()); |
| + } |
| } |
| uint32 QuicReliableClientStream::ProcessData(const char* data, |
| uint32 data_len) { |
| + // TODO(rch): buffere data if we don't have a delegate. |
|
willchan no longer on Chromium
2012/11/23 03:17:43
s/buffere/buffer/
Ryan Hamilton
2012/11/23 04:19:53
Done.
|
| + DCHECK(delegate_); |
| int rv = delegate_->OnDataReceived(data, data_len); |
| if (rv != OK) { |
| DLOG(ERROR) << "Delegate refused data, rv: " << rv; |
| @@ -28,11 +35,15 @@ uint32 QuicReliableClientStream::ProcessData(const char* data, |
| } |
| void QuicReliableClientStream::TerminateFromPeer(bool half_close) { |
| - delegate_->OnClose(error()); |
| + if (delegate_) { |
| + delegate_->OnClose(error()); |
| + delegate_ = NULL; |
| + } |
| } |
| void QuicReliableClientStream::SetDelegate( |
| QuicReliableClientStream::Delegate* delegate) { |
| + DCHECK((!delegate_ && delegate) || (delegate_ && !delegate)); |
| delegate_ = delegate; |
| } |