Index: net/quic/quic_connection.h |
diff --git a/net/quic/quic_connection.h b/net/quic/quic_connection.h |
index 909fbbe4ff84e90e96621de2c1f83bbb031521b6..481f426e1937ee3b8ded29ae8341f39f1675775c 100644 |
--- a/net/quic/quic_connection.h |
+++ b/net/quic/quic_connection.h |
@@ -148,6 +148,9 @@ class NET_EXPORT_PRIVATE QuicConnectionDebugVisitorInterface |
virtual void OnCongestionFeedbackFrame( |
const QuicCongestionFeedbackFrame& frame) = 0; |
+ // Called when a StopWaitingFrame has been parsed. |
+ virtual void OnStopWaitingFrame(const QuicStopWaitingFrame& frame) = 0; |
+ |
// Called when a RstStreamFrame has been parsed. |
virtual void OnRstStreamFrame(const QuicRstStreamFrame& frame) = 0; |
@@ -302,6 +305,7 @@ class NET_EXPORT_PRIVATE QuicConnection |
virtual bool OnAckFrame(const QuicAckFrame& frame) OVERRIDE; |
virtual bool OnCongestionFeedbackFrame( |
const QuicCongestionFeedbackFrame& frame) OVERRIDE; |
+ virtual bool OnStopWaitingFrame(const QuicStopWaitingFrame& frame) OVERRIDE; |
virtual bool OnRstStreamFrame(const QuicRstStreamFrame& frame) OVERRIDE; |
virtual bool OnConnectionCloseFrame( |
const QuicConnectionCloseFrame& frame) OVERRIDE; |
@@ -317,6 +321,7 @@ class NET_EXPORT_PRIVATE QuicConnection |
IsHandshake handshake) OVERRIDE; |
virtual QuicAckFrame* CreateAckFrame() OVERRIDE; |
virtual QuicCongestionFeedbackFrame* CreateFeedbackFrame() OVERRIDE; |
+ virtual QuicStopWaitingFrame* CreateStopWaitingFrame() OVERRIDE; |
virtual bool OnSerializedPacket(const SerializedPacket& packet) OVERRIDE; |
// Accessors |
@@ -425,6 +430,9 @@ class NET_EXPORT_PRIVATE QuicConnection |
return sent_packet_manager_; |
} |
+ // Make sure a stop waiting we got from our peer is sane. |
+ bool ValidateStopWaitingFrame(const QuicStopWaitingFrame& stop_waiting); |
+ |
bool CanWrite(TransmissionType transmission_type, |
HasRetransmittableData retransmittable, |
IsHandshake handshake); |
@@ -549,8 +557,10 @@ class NET_EXPORT_PRIVATE QuicConnection |
void ProcessAckFrame(const QuicAckFrame& incoming_ack); |
- // Update the |sent_info| for an outgoing ack. |
- void UpdateSentPacketInfo(SentPacketInfo* sent_info); |
+ void ProcessStopWaitingFrame(const QuicStopWaitingFrame& stop_waiting); |
+ |
+ // Update |stop_waiting| for an outgoing ack. |
+ void UpdateStopWaiting(QuicStopWaitingFrame* stop_waiting); |
// Queues an ack or sets the ack alarm when an incoming packet arrives that |
// should be acked. |
@@ -597,6 +607,7 @@ class NET_EXPORT_PRIVATE QuicConnection |
std::vector<QuicStreamFrame> last_stream_frames_; |
std::vector<QuicAckFrame> last_ack_frames_; |
std::vector<QuicCongestionFeedbackFrame> last_congestion_frames_; |
+ std::vector<QuicStopWaitingFrame> last_stop_waiting_frames_; |
std::vector<QuicRstStreamFrame> last_rst_frames_; |
std::vector<QuicGoAwayFrame> last_goaway_frames_; |
std::vector<QuicWindowUpdateFrame> last_window_update_frames_; |
@@ -609,6 +620,9 @@ class NET_EXPORT_PRIVATE QuicConnection |
// Largest sequence sent by the peer which had an ack frame (latest ack info). |
QuicPacketSequenceNumber largest_seen_packet_with_ack_; |
+ // Largest sequence number sent by the peer which had a stop waiting frame. |
+ QuicPacketSequenceNumber largest_seen_packet_with_stop_waiting_; |
+ |
// Collection of packets which were received before encryption was |
// established, but which could not be decrypted. We buffer these on |
// the assumption that they could not be processed because they were |