Index: net/quic/quic_stream_sequencer.h |
diff --git a/net/quic/quic_stream_sequencer.h b/net/quic/quic_stream_sequencer.h |
index da2cf413e1afbebf5356ac45218cf63ac82fdef2..a4580a9ca3f9c52e1577b1230c8b4de70ec59c7d 100644 |
--- a/net/quic/quic_stream_sequencer.h |
+++ b/net/quic/quic_stream_sequencer.h |
@@ -58,6 +58,10 @@ class NET_EXPORT_PRIVATE QuicStreamSequencer { |
// Returns true if the sequencer has received this frame before. |
bool IsDuplicate(const QuicStreamFrame& frame) const; |
+ // Returns true if |frame| contains data which overlaps buffered data |
+ // (indicating an invalid stream frame has been received). |
+ bool FrameOverlapsBufferedData(const QuicStreamFrame& frame) const; |
+ |
// Calls |ProcessRawData| on |stream_| for each buffered frame that may |
// be processed. |
void FlushBufferedFrames(); |
@@ -95,6 +99,10 @@ class NET_EXPORT_PRIVATE QuicStreamSequencer { |
QuicStreamOffset num_bytes_consumed_; |
// TODO(alyssar) use something better than strings. |
+ // TODO(rjshade): In future we may support retransmission of partial stream |
+ // frames, in which case we will have to allow receipt of overlapping frames. |
+ // Maybe write new frames into a ring buffer, and keep track of consumed |
+ // bytes, and gaps. |
typedef map<QuicStreamOffset, string> FrameMap; |
// Stores buffered frames (maps from sequence number -> frame data as string). |