summaryrefslogtreecommitdiffstats
path: root/net/quic/reliable_quic_stream.cc
diff options
context:
space:
mode:
Diffstat (limited to 'net/quic/reliable_quic_stream.cc')
-rw-r--r--net/quic/reliable_quic_stream.cc15
1 files changed, 10 insertions, 5 deletions
diff --git a/net/quic/reliable_quic_stream.cc b/net/quic/reliable_quic_stream.cc
index d9f9343..d3e7cf8 100644
--- a/net/quic/reliable_quic_stream.cc
+++ b/net/quic/reliable_quic_stream.cc
@@ -27,7 +27,7 @@ ReliableQuicStream::~ReliableQuicStream() {
bool ReliableQuicStream::WillAcceptStreamFrame(
const QuicStreamFrame& frame) const {
if (read_side_closed_) {
- return false;
+ return true;
}
if (frame.stream_id != id_) {
LOG(ERROR) << "Error!";
@@ -39,10 +39,9 @@ bool ReliableQuicStream::WillAcceptStreamFrame(
bool ReliableQuicStream::OnStreamFrame(const QuicStreamFrame& frame) {
DCHECK_EQ(frame.stream_id, id_);
if (read_side_closed_) {
- // This can only happen if a client sends data after sending a fin or stream
- // reset.
- Close(QUIC_STREAM_DATA_AFTER_TERMINATION);
- return false;
+ DLOG(INFO) << "Ignoring frame " << frame.stream_id;
+ // We don't want to be reading: blackhole the data.
+ return true;
}
bool accepted = sequencer_.OnStreamFrame(frame);
@@ -106,6 +105,9 @@ int ReliableQuicStream::WriteData(StringPiece data, bool fin) {
}
void ReliableQuicStream::CloseReadSide() {
+ if (read_side_closed_) {
+ return;
+ }
DLOG(INFO) << "Done reading from stream " << id();
read_side_closed_ = true;
@@ -115,6 +117,9 @@ void ReliableQuicStream::CloseReadSide() {
}
void ReliableQuicStream::CloseWriteSide() {
+ if (write_side_closed_) {
+ return;
+ }
DLOG(INFO) << "Done writing to stream " << id();
write_side_closed_ = true;