Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(263)

Unified Diff: net/quic/quic_connection.cc

Issue 157803007: Land Recent QUIC Changes. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: win_x64 compiler error fix Created 6 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « net/quic/crypto/strike_register.cc ('k') | net/quic/quic_connection_test.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: net/quic/quic_connection.cc
diff --git a/net/quic/quic_connection.cc b/net/quic/quic_connection.cc
index 5565b28866118b8e7139219ae64f488a983cb2e9..59421ca2912dc69241c15ec596f788d71e7a22b4 100644
--- a/net/quic/quic_connection.cc
+++ b/net/quic/quic_connection.cc
@@ -368,6 +368,11 @@ bool QuicConnection::OnPacketHeader(const QuicPacketHeader& header) {
debug_visitor_->OnPacketHeader(header);
}
+ if (header.fec_flag && framer_.version() <= QUIC_VERSION_14) {
+ DLOG(WARNING) << "Ignoring FEC packets for versions prior to 15.";
+ return false;
+ }
+
if (!ProcessValidatedPacket()) {
return false;
}
@@ -473,8 +478,10 @@ bool QuicConnection::OnAckFrame(const QuicAckFrame& incoming_ack) {
void QuicConnection::ProcessAckFrame(const QuicAckFrame& incoming_ack) {
largest_seen_packet_with_ack_ = last_header_.packet_sequence_number;
- received_packet_manager_.UpdatePacketInformationReceivedByPeer(incoming_ack);
- received_packet_manager_.UpdatePacketInformationSentByPeer(incoming_ack);
+ received_packet_manager_.UpdatePacketInformationReceivedByPeer(
+ incoming_ack.received_info);
+ received_packet_manager_.UpdatePacketInformationSentByPeer(
+ incoming_ack.sent_info);
// Possibly close any FecGroups which are now irrelevant.
CloseFecGroupsBefore(incoming_ack.sent_info.least_unacked + 1);
@@ -574,6 +581,15 @@ bool QuicConnection::ValidateAckFrame(const QuicAckFrame& incoming_ack) {
return false;
}
+ for (SequenceNumberSet::const_iterator iter =
+ incoming_ack.received_info.revived_packets.begin();
+ iter != incoming_ack.received_info.revived_packets.end(); ++iter) {
+ if (!ContainsKey(incoming_ack.received_info.missing_packets, *iter)) {
+ DLOG(ERROR) << ENDPOINT
+ << "Peer specified revived packet which was not missing.";
+ return false;
+ }
+ }
return true;
}
@@ -582,8 +598,7 @@ void QuicConnection::OnFecData(const QuicFecData& fec) {
DCHECK_NE(0u, last_header_.fec_group);
QuicFecGroup* group = GetFecGroup();
if (group != NULL) {
- group->UpdateFec(last_header_.packet_sequence_number,
- last_header_.entropy_flag, fec);
+ group->UpdateFec(last_header_.packet_sequence_number, fec);
}
}
@@ -645,10 +660,13 @@ void QuicConnection::OnPacketComplete() {
return;
}
- received_packet_manager_.RecordPacketReceived(last_size_,
- last_header_,
- time_of_last_received_packet_,
- last_packet_revived_);
+ if (last_packet_revived_) {
+ received_packet_manager_.RecordPacketRevived(
+ last_header_.packet_sequence_number);
+ } else {
+ received_packet_manager_.RecordPacketReceived(
+ last_size_, last_header_, time_of_last_received_packet_);
+ }
for (size_t i = 0; i < last_stream_frames_.size(); ++i) {
stats_.stream_bytes_received +=
last_stream_frames_[i].data.TotalBufferSize();
« no previous file with comments | « net/quic/crypto/strike_register.cc ('k') | net/quic/quic_connection_test.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698