| 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..2e66897eafce5a867f6baaf1b52f273895700e17 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): buffer data if we don't have a delegate.
|
| + 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;
|
| }
|
|
|
|
|