| 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..92a89f9d3aa87e87355ed3ce4faf71072a19c489 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.
|
| + DCHECK(delegate_);
|
| int rv = delegate_->OnDataReceived(data, data_len);
|
| if (rv != OK) {
|
| DLOG(ERROR) << "Delegate refused data, rv: " << rv;
|
| @@ -28,12 +35,25 @@ 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;
|
| }
|
|
|
| +IPEndPoint QuicReliableClientStream::GetPeerAddress() const {
|
| + return session()->connection()->peer_address();
|
| +}
|
| +
|
| +int QuicReliableClientStream::WriteData(base::StringPiece data,
|
| + bool fin) {
|
| + return ReliableQuicStream::WriteData(data, fin);
|
| +}
|
| +
|
| } // namespace net
|
|
|