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

Side by Side Diff: net/quic/quic_framer.cc

Issue 734063004: Update from https://crrev.com/304418 (Closed) Base URL: https://github.com/domokit/mojo.git@master
Patch Set: Created 6 years, 1 month 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 unified diff | Download patch
« no previous file with comments | « net/quic/quic_flags.cc ('k') | net/quic/quic_http_stream_test.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "net/quic/quic_framer.h" 5 #include "net/quic/quic_framer.h"
6 6
7 #include "base/containers/hash_tables.h" 7 #include "base/containers/hash_tables.h"
8 #include "base/stl_util.h" 8 #include "base/stl_util.h"
9 #include "net/quic/crypto/crypto_framer.h" 9 #include "net/quic/crypto/crypto_framer.h"
10 #include "net/quic/crypto/crypto_handshake_message.h" 10 #include "net/quic/crypto/crypto_handshake_message.h"
(...skipping 960 matching lines...) Expand 10 before | Expand all | Expand 10 after
971 default: 971 default:
972 LOG(DFATAL) << "Unreachable case statement."; 972 LOG(DFATAL) << "Unreachable case statement.";
973 return PACKET_FLAGS_6BYTE_SEQUENCE; 973 return PACKET_FLAGS_6BYTE_SEQUENCE;
974 } 974 }
975 } 975 }
976 976
977 // static 977 // static
978 QuicFramer::AckFrameInfo QuicFramer::GetAckFrameInfo( 978 QuicFramer::AckFrameInfo QuicFramer::GetAckFrameInfo(
979 const QuicAckFrame& frame) { 979 const QuicAckFrame& frame) {
980 AckFrameInfo ack_info; 980 AckFrameInfo ack_info;
981 if (!frame.missing_packets.empty()) { 981 if (frame.missing_packets.empty()) {
982 DCHECK_GE(frame.largest_observed, *frame.missing_packets.rbegin()); 982 return ack_info;
983 size_t cur_range_length = 0; 983 }
984 SequenceNumberSet::const_iterator iter = frame.missing_packets.begin(); 984 DCHECK_GE(frame.largest_observed, *frame.missing_packets.rbegin());
985 QuicPacketSequenceNumber last_missing = *iter; 985 size_t cur_range_length = 0;
986 ++iter; 986 SequenceNumberSet::const_iterator iter = frame.missing_packets.begin();
987 for (; iter != frame.missing_packets.end(); ++iter) { 987 QuicPacketSequenceNumber last_missing = *iter;
988 if (cur_range_length != numeric_limits<uint8>::max() && 988 ++iter;
989 *iter == (last_missing + 1)) { 989 for (; iter != frame.missing_packets.end(); ++iter) {
990 ++cur_range_length; 990 if (cur_range_length != numeric_limits<uint8>::max() &&
991 } else { 991 *iter == (last_missing + 1)) {
992 ack_info.nack_ranges[last_missing - cur_range_length] = 992 ++cur_range_length;
993 cur_range_length; 993 } else {
994 cur_range_length = 0; 994 ack_info.nack_ranges[last_missing - cur_range_length] = cur_range_length;
995 } 995 cur_range_length = 0;
996 ack_info.max_delta = max(ack_info.max_delta, *iter - last_missing);
997 last_missing = *iter;
998 } 996 }
999 // Include the last nack range. 997 ack_info.max_delta = max(ack_info.max_delta, *iter - last_missing);
1000 ack_info.nack_ranges[last_missing - cur_range_length] = cur_range_length; 998 last_missing = *iter;
1001 // Include the range to the largest observed.
1002 ack_info.max_delta = max(ack_info.max_delta,
1003 frame.largest_observed - last_missing);
1004 } 999 }
1000 // Include the last nack range.
1001 ack_info.nack_ranges[last_missing - cur_range_length] = cur_range_length;
1002 // Include the range to the largest observed.
1003 ack_info.max_delta =
1004 max(ack_info.max_delta, frame.largest_observed - last_missing);
1005 return ack_info; 1005 return ack_info;
1006 } 1006 }
1007 1007
1008 bool QuicFramer::ProcessPacketHeader( 1008 bool QuicFramer::ProcessPacketHeader(
1009 QuicPacketHeader* header, 1009 QuicPacketHeader* header,
1010 const QuicEncryptedPacket& packet) { 1010 const QuicEncryptedPacket& packet) {
1011 if (!ProcessPacketSequenceNumber(header->public_header.sequence_number_length, 1011 if (!ProcessPacketSequenceNumber(header->public_header.sequence_number_length,
1012 &header->packet_sequence_number)) { 1012 &header->packet_sequence_number)) {
1013 set_detailed_error("Unable to read sequence number."); 1013 set_detailed_error("Unable to read sequence number.");
1014 return RaiseError(QUIC_INVALID_PACKET_HEADER); 1014 return RaiseError(QUIC_INVALID_PACKET_HEADER);
(...skipping 1300 matching lines...) Expand 10 before | Expand all | Expand 10 after
2315 2315
2316 bool QuicFramer::RaiseError(QuicErrorCode error) { 2316 bool QuicFramer::RaiseError(QuicErrorCode error) {
2317 DVLOG(1) << "Error detail: " << detailed_error_; 2317 DVLOG(1) << "Error detail: " << detailed_error_;
2318 set_error(error); 2318 set_error(error);
2319 visitor_->OnError(this); 2319 visitor_->OnError(this);
2320 reader_.reset(nullptr); 2320 reader_.reset(nullptr);
2321 return false; 2321 return false;
2322 } 2322 }
2323 2323
2324 } // namespace net 2324 } // namespace net
OLDNEW
« no previous file with comments | « net/quic/quic_flags.cc ('k') | net/quic/quic_http_stream_test.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698