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

Side by Side Diff: net/quic/core/quic_protocol.cc

Issue 2515613002: deprecate FLAGS_quic_disable_pre_34 (Closed)
Patch Set: Created 4 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/core/quic_protocol.h ('k') | net/quic/core/quic_protocol_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/core/quic_protocol.h" 5 #include "net/quic/core/quic_protocol.h"
6 6
7 #include "base/memory/ptr_util.h" 7 #include "base/memory/ptr_util.h"
8 #include "base/strings/string_number_conversions.h" 8 #include "base/strings/string_number_conversions.h"
9 #include "net/quic/core/quic_flags.h" 9 #include "net/quic/core/quic_flags.h"
10 #include "net/quic/core/quic_utils.h" 10 #include "net/quic/core/quic_utils.h"
(...skipping 18 matching lines...) Expand all
29 29
30 size_t GetPacketHeaderSize(QuicVersion version, 30 size_t GetPacketHeaderSize(QuicVersion version,
31 QuicConnectionIdLength connection_id_length, 31 QuicConnectionIdLength connection_id_length,
32 bool include_version, 32 bool include_version,
33 bool include_path_id, 33 bool include_path_id,
34 bool include_diversification_nonce, 34 bool include_diversification_nonce,
35 QuicPacketNumberLength packet_number_length) { 35 QuicPacketNumberLength packet_number_length) {
36 return kPublicFlagsSize + connection_id_length + 36 return kPublicFlagsSize + connection_id_length +
37 (include_version ? kQuicVersionSize : 0) + 37 (include_version ? kQuicVersionSize : 0) +
38 (include_path_id ? kQuicPathIdSize : 0) + packet_number_length + 38 (include_path_id ? kQuicPathIdSize : 0) + packet_number_length +
39 (include_diversification_nonce ? kDiversificationNonceSize : 0) + 39 (include_diversification_nonce ? kDiversificationNonceSize : 0);
40 (version <= QUIC_VERSION_33 ? kPrivateFlagsSize : 0);
41 } 40 }
42 41
43 size_t GetStartOfEncryptedData(QuicVersion version, 42 size_t GetStartOfEncryptedData(QuicVersion version,
44 const QuicPacketHeader& header) { 43 const QuicPacketHeader& header) {
45 return GetPacketHeaderSize(version, header) - 44 return GetPacketHeaderSize(version, header);
46 (version <= QUIC_VERSION_33 ? kPrivateFlagsSize : 0);
47 } 45 }
48 46
49 size_t GetStartOfEncryptedData(QuicVersion version, 47 size_t GetStartOfEncryptedData(QuicVersion version,
50 QuicConnectionIdLength connection_id_length, 48 QuicConnectionIdLength connection_id_length,
51 bool include_version, 49 bool include_version,
52 bool include_path_id, 50 bool include_path_id,
53 bool include_diversification_nonce, 51 bool include_diversification_nonce,
54 QuicPacketNumberLength packet_number_length) { 52 QuicPacketNumberLength packet_number_length) {
55 // Encryption starts before private flags. 53 // Encryption starts before private flags.
56 return GetPacketHeaderSize(version, connection_id_length, include_version, 54 return GetPacketHeaderSize(version, connection_id_length, include_version,
57 include_path_id, include_diversification_nonce, 55 include_path_id, include_diversification_nonce,
58 packet_number_length) - 56 packet_number_length);
59 (version <= QUIC_VERSION_33 ? kPrivateFlagsSize : 0);
60 } 57 }
61 58
62 QuicPacketPublicHeader::QuicPacketPublicHeader() 59 QuicPacketPublicHeader::QuicPacketPublicHeader()
63 : connection_id(0), 60 : connection_id(0),
64 connection_id_length(PACKET_8BYTE_CONNECTION_ID), 61 connection_id_length(PACKET_8BYTE_CONNECTION_ID),
65 multipath_flag(false), 62 multipath_flag(false),
66 reset_flag(false), 63 reset_flag(false),
67 version_flag(false), 64 version_flag(false),
68 packet_number_length(PACKET_6BYTE_PACKET_NUMBER), 65 packet_number_length(PACKET_6BYTE_PACKET_NUMBER),
69 nonce(nullptr) {} 66 nonce(nullptr) {}
70 67
71 QuicPacketPublicHeader::QuicPacketPublicHeader( 68 QuicPacketPublicHeader::QuicPacketPublicHeader(
72 const QuicPacketPublicHeader& other) = default; 69 const QuicPacketPublicHeader& other) = default;
73 70
74 QuicPacketPublicHeader::~QuicPacketPublicHeader() {} 71 QuicPacketPublicHeader::~QuicPacketPublicHeader() {}
75 72
76 QuicPacketHeader::QuicPacketHeader() 73 QuicPacketHeader::QuicPacketHeader()
77 : packet_number(0), 74 : packet_number(0), path_id(kDefaultPathId) {}
78 path_id(kDefaultPathId),
79 entropy_flag(false),
80 entropy_hash(0) {}
81 75
82 QuicPacketHeader::QuicPacketHeader(const QuicPacketPublicHeader& header) 76 QuicPacketHeader::QuicPacketHeader(const QuicPacketPublicHeader& header)
83 : public_header(header), 77 : public_header(header), packet_number(0), path_id(kDefaultPathId) {}
84 packet_number(0),
85 path_id(kDefaultPathId),
86 entropy_flag(false),
87 entropy_hash(0) {}
88 78
89 QuicPacketHeader::QuicPacketHeader(const QuicPacketHeader& other) = default; 79 QuicPacketHeader::QuicPacketHeader(const QuicPacketHeader& other) = default;
90 80
91 QuicPublicResetPacket::QuicPublicResetPacket() 81 QuicPublicResetPacket::QuicPublicResetPacket()
92 : nonce_proof(0), rejected_packet_number(0) {} 82 : nonce_proof(0), rejected_packet_number(0) {}
93 83
94 QuicPublicResetPacket::QuicPublicResetPacket( 84 QuicPublicResetPacket::QuicPublicResetPacket(
95 const QuicPacketPublicHeader& header) 85 const QuicPacketPublicHeader& header)
96 : public_header(header), nonce_proof(0), rejected_packet_number(0) {} 86 : public_header(header), nonce_proof(0), rejected_packet_number(0) {}
97 87
(...skipping 80 matching lines...) Expand 10 before | Expand all | Expand 10 after
178 for (size_t i = 0; i < header.public_header.versions.size(); ++i) { 168 for (size_t i = 0; i < header.public_header.versions.size(); ++i) {
179 os << " "; 169 os << " ";
180 os << QuicVersionToString(header.public_header.versions[i]); 170 os << QuicVersionToString(header.public_header.versions[i]);
181 } 171 }
182 } 172 }
183 if (header.public_header.nonce != nullptr) { 173 if (header.public_header.nonce != nullptr) {
184 os << ", diversification_nonce: " 174 os << ", diversification_nonce: "
185 << QuicUtils::HexEncode(StringPiece(header.public_header.nonce->data(), 175 << QuicUtils::HexEncode(StringPiece(header.public_header.nonce->data(),
186 header.public_header.nonce->size())); 176 header.public_header.nonce->size()));
187 } 177 }
188 os << ", entropy_flag: " << header.entropy_flag 178 os << ", path_id: " << static_cast<int>(header.path_id)
189 << ", entropy hash: " << static_cast<int>(header.entropy_hash)
190 << ", path_id: " << static_cast<int>(header.path_id)
191 << ", packet_number: " << header.packet_number << " }\n"; 179 << ", packet_number: " << header.packet_number << " }\n";
192 return os; 180 return os;
193 } 181 }
194 182
195 bool IsAwaitingPacket(const QuicAckFrame& ack_frame, 183 bool IsAwaitingPacket(const QuicAckFrame& ack_frame,
196 QuicPacketNumber packet_number, 184 QuicPacketNumber packet_number,
197 QuicPacketNumber peer_least_packet_awaiting_ack) { 185 QuicPacketNumber peer_least_packet_awaiting_ack) {
198 if (ack_frame.missing) {
199 return packet_number > ack_frame.largest_observed ||
200 ack_frame.packets.Contains(packet_number);
201 }
202 return packet_number >= peer_least_packet_awaiting_ack && 186 return packet_number >= peer_least_packet_awaiting_ack &&
203 !ack_frame.packets.Contains(packet_number); 187 !ack_frame.packets.Contains(packet_number);
204 } 188 }
205 189
206 QuicStopWaitingFrame::QuicStopWaitingFrame() 190 QuicStopWaitingFrame::QuicStopWaitingFrame()
207 : path_id(kDefaultPathId), entropy_hash(0), least_unacked(0) {} 191 : path_id(kDefaultPathId), least_unacked(0) {}
208 192
209 QuicStopWaitingFrame::~QuicStopWaitingFrame() {} 193 QuicStopWaitingFrame::~QuicStopWaitingFrame() {}
210 194
211 QuicAckFrame::QuicAckFrame() 195 QuicAckFrame::QuicAckFrame()
212 : largest_observed(0), 196 : largest_observed(0),
213 ack_delay_time(QuicTime::Delta::Infinite()), 197 ack_delay_time(QuicTime::Delta::Infinite()),
214 path_id(kDefaultPathId), 198 path_id(kDefaultPathId) {}
215 entropy_hash(0),
216 is_truncated(false),
217 missing(true) {}
218 199
219 QuicAckFrame::QuicAckFrame(const QuicAckFrame& other) = default; 200 QuicAckFrame::QuicAckFrame(const QuicAckFrame& other) = default;
220 201
221 QuicAckFrame::~QuicAckFrame() {} 202 QuicAckFrame::~QuicAckFrame() {}
222 203
223 QuicRstStreamFrame::QuicRstStreamFrame() 204 QuicRstStreamFrame::QuicRstStreamFrame()
224 : stream_id(0), error_code(QUIC_STREAM_NO_ERROR), byte_offset(0) {} 205 : stream_id(0), error_code(QUIC_STREAM_NO_ERROR), byte_offset(0) {}
225 206
226 QuicRstStreamFrame::QuicRstStreamFrame(QuicStreamId stream_id, 207 QuicRstStreamFrame::QuicRstStreamFrame(QuicStreamId stream_id,
227 QuicRstStreamErrorCode error_code, 208 QuicRstStreamErrorCode error_code,
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after
264 QuicFrame::QuicFrame(QuicWindowUpdateFrame* frame) 245 QuicFrame::QuicFrame(QuicWindowUpdateFrame* frame)
265 : type(WINDOW_UPDATE_FRAME), window_update_frame(frame) {} 246 : type(WINDOW_UPDATE_FRAME), window_update_frame(frame) {}
266 247
267 QuicFrame::QuicFrame(QuicBlockedFrame* frame) 248 QuicFrame::QuicFrame(QuicBlockedFrame* frame)
268 : type(BLOCKED_FRAME), blocked_frame(frame) {} 249 : type(BLOCKED_FRAME), blocked_frame(frame) {}
269 250
270 QuicFrame::QuicFrame(QuicPathCloseFrame* frame) 251 QuicFrame::QuicFrame(QuicPathCloseFrame* frame)
271 : type(PATH_CLOSE_FRAME), path_close_frame(frame) {} 252 : type(PATH_CLOSE_FRAME), path_close_frame(frame) {}
272 253
273 ostream& operator<<(ostream& os, const QuicStopWaitingFrame& sent_info) { 254 ostream& operator<<(ostream& os, const QuicStopWaitingFrame& sent_info) {
274 os << "{ entropy_hash: " << static_cast<int>(sent_info.entropy_hash) 255 os << "{ least_unacked: " << sent_info.least_unacked << " }\n";
275 << ", least_unacked: " << sent_info.least_unacked << " }\n";
276 return os; 256 return os;
277 } 257 }
278 258
279 PacketNumberQueue::PacketNumberQueue() = default; 259 PacketNumberQueue::PacketNumberQueue() = default;
280 PacketNumberQueue::PacketNumberQueue(const PacketNumberQueue& other) = default; 260 PacketNumberQueue::PacketNumberQueue(const PacketNumberQueue& other) = default;
281 // TODO(rtenneti): on windows RValue reference gives errors. 261 // TODO(rtenneti): on windows RValue reference gives errors.
282 // PacketNumberQueue::PacketNumberQueue(PacketNumberQueue&& other) = default; 262 // PacketNumberQueue::PacketNumberQueue(PacketNumberQueue&& other) = default;
283 PacketNumberQueue::~PacketNumberQueue() {} 263 PacketNumberQueue::~PacketNumberQueue() {}
284 264
285 PacketNumberQueue& PacketNumberQueue::operator=( 265 PacketNumberQueue& PacketNumberQueue::operator=(
(...skipping 107 matching lines...) Expand 10 before | Expand all | Expand 10 after
393 for (const Interval<QuicPacketNumber>& interval : q) { 373 for (const Interval<QuicPacketNumber>& interval : q) {
394 for (QuicPacketNumber packet_number = interval.min(); 374 for (QuicPacketNumber packet_number = interval.min();
395 packet_number < interval.max(); ++packet_number) { 375 packet_number < interval.max(); ++packet_number) {
396 os << packet_number << " "; 376 os << packet_number << " ";
397 } 377 }
398 } 378 }
399 return os; 379 return os;
400 } 380 }
401 381
402 ostream& operator<<(ostream& os, const QuicAckFrame& ack_frame) { 382 ostream& operator<<(ostream& os, const QuicAckFrame& ack_frame) {
403 os << "{ entropy_hash: " << static_cast<int>(ack_frame.entropy_hash) 383 os << "{ largest_observed: " << ack_frame.largest_observed
404 << ", largest_observed: " << ack_frame.largest_observed
405 << ", ack_delay_time: " << ack_frame.ack_delay_time.ToMicroseconds() 384 << ", ack_delay_time: " << ack_frame.ack_delay_time.ToMicroseconds()
406 << ", packets: [ " << ack_frame.packets << " ]" 385 << ", packets: [ " << ack_frame.packets << " ]"
407 << ", is_truncated: " << ack_frame.is_truncated
408 << ", received_packets: [ "; 386 << ", received_packets: [ ";
409 for (const std::pair<QuicPacketNumber, QuicTime>& p : 387 for (const std::pair<QuicPacketNumber, QuicTime>& p :
410 ack_frame.received_packet_times) { 388 ack_frame.received_packet_times) {
411 os << p.first << " at " << p.second.ToDebuggingValue() << " "; 389 os << p.first << " at " << p.second.ToDebuggingValue() << " ";
412 } 390 }
413 os << " ] }\n"; 391 os << " ] }\n";
414 return os; 392 return os;
415 } 393 }
416 394
417 ostream& operator<<(ostream& os, const QuicFrame& frame) { 395 ostream& operator<<(ostream& os, const QuicFrame& frame) {
(...skipping 217 matching lines...) Expand 10 before | Expand all | Expand 10 after
635 613
636 StringPiece QuicPacket::Plaintext(QuicVersion version) const { 614 StringPiece QuicPacket::Plaintext(QuicVersion version) const {
637 const size_t start_of_encrypted_data = GetStartOfEncryptedData( 615 const size_t start_of_encrypted_data = GetStartOfEncryptedData(
638 version, connection_id_length_, includes_version_, includes_path_id_, 616 version, connection_id_length_, includes_version_, includes_path_id_,
639 includes_diversification_nonce_, packet_number_length_); 617 includes_diversification_nonce_, packet_number_length_);
640 return StringPiece(data() + start_of_encrypted_data, 618 return StringPiece(data() + start_of_encrypted_data,
641 length() - start_of_encrypted_data); 619 length() - start_of_encrypted_data);
642 } 620 }
643 621
644 QuicVersionManager::QuicVersionManager(QuicVersionVector supported_versions) 622 QuicVersionManager::QuicVersionManager(QuicVersionVector supported_versions)
645 : disable_pre_34_(FLAGS_quic_disable_pre_34), 623 : enable_version_35_(FLAGS_quic_enable_version_35),
646 enable_version_35_(FLAGS_quic_enable_version_35),
647 enable_version_36_(FLAGS_quic_enable_version_36_v2), 624 enable_version_36_(FLAGS_quic_enable_version_36_v2),
648 allowed_supported_versions_(supported_versions), 625 allowed_supported_versions_(supported_versions),
649 filtered_supported_versions_( 626 filtered_supported_versions_(
650 FilterSupportedVersions(supported_versions)) {} 627 FilterSupportedVersions(supported_versions)) {}
651 628
652 QuicVersionManager::~QuicVersionManager() {} 629 QuicVersionManager::~QuicVersionManager() {}
653 630
654 const QuicVersionVector& QuicVersionManager::GetSupportedVersions() { 631 const QuicVersionVector& QuicVersionManager::GetSupportedVersions() {
655 if (disable_pre_34_ != FLAGS_quic_disable_pre_34 || 632 if (enable_version_35_ != FLAGS_quic_enable_version_35 ||
656 enable_version_35_ != FLAGS_quic_enable_version_35 ||
657 enable_version_36_ != FLAGS_quic_enable_version_36_v2) { 633 enable_version_36_ != FLAGS_quic_enable_version_36_v2) {
658 disable_pre_34_ = FLAGS_quic_disable_pre_34;
659 enable_version_35_ = FLAGS_quic_enable_version_35; 634 enable_version_35_ = FLAGS_quic_enable_version_35;
660 enable_version_36_ = FLAGS_quic_enable_version_36_v2; 635 enable_version_36_ = FLAGS_quic_enable_version_36_v2;
661 filtered_supported_versions_ = 636 filtered_supported_versions_ =
662 FilterSupportedVersions(allowed_supported_versions_); 637 FilterSupportedVersions(allowed_supported_versions_);
663 } 638 }
664 return filtered_supported_versions_; 639 return filtered_supported_versions_;
665 } 640 }
666 641
667 AckListenerWrapper::AckListenerWrapper(QuicAckListenerInterface* listener, 642 AckListenerWrapper::AckListenerWrapper(QuicAckListenerInterface* listener,
668 QuicPacketLength data_length) 643 QuicPacketLength data_length)
669 : ack_listener(listener), length(data_length) { 644 : ack_listener(listener), length(data_length) {
670 DCHECK(listener != nullptr); 645 DCHECK(listener != nullptr);
671 } 646 }
672 647
673 AckListenerWrapper::AckListenerWrapper(const AckListenerWrapper& other) = 648 AckListenerWrapper::AckListenerWrapper(const AckListenerWrapper& other) =
674 default; 649 default;
675 650
676 AckListenerWrapper::~AckListenerWrapper() {} 651 AckListenerWrapper::~AckListenerWrapper() {}
677 652
678 SerializedPacket::SerializedPacket(QuicPathId path_id, 653 SerializedPacket::SerializedPacket(QuicPathId path_id,
679 QuicPacketNumber packet_number, 654 QuicPacketNumber packet_number,
680 QuicPacketNumberLength packet_number_length, 655 QuicPacketNumberLength packet_number_length,
681 const char* encrypted_buffer, 656 const char* encrypted_buffer,
682 QuicPacketLength encrypted_length, 657 QuicPacketLength encrypted_length,
683 QuicPacketEntropyHash entropy_hash,
684 bool has_ack, 658 bool has_ack,
685 bool has_stop_waiting) 659 bool has_stop_waiting)
686 : encrypted_buffer(encrypted_buffer), 660 : encrypted_buffer(encrypted_buffer),
687 encrypted_length(encrypted_length), 661 encrypted_length(encrypted_length),
688 has_crypto_handshake(NOT_HANDSHAKE), 662 has_crypto_handshake(NOT_HANDSHAKE),
689 num_padding_bytes(0), 663 num_padding_bytes(0),
690 path_id(path_id), 664 path_id(path_id),
691 packet_number(packet_number), 665 packet_number(packet_number),
692 packet_number_length(packet_number_length), 666 packet_number_length(packet_number_length),
693 encryption_level(ENCRYPTION_NONE), 667 encryption_level(ENCRYPTION_NONE),
694 entropy_hash(entropy_hash),
695 has_ack(has_ack), 668 has_ack(has_ack),
696 has_stop_waiting(has_stop_waiting), 669 has_stop_waiting(has_stop_waiting),
697 transmission_type(NOT_RETRANSMISSION), 670 transmission_type(NOT_RETRANSMISSION),
698 original_path_id(kInvalidPathId), 671 original_path_id(kInvalidPathId),
699 original_packet_number(0) {} 672 original_packet_number(0) {}
700 673
701 SerializedPacket::SerializedPacket(const SerializedPacket& other) = default; 674 SerializedPacket::SerializedPacket(const SerializedPacket& other) = default;
702 675
703 SerializedPacket::~SerializedPacket() {} 676 SerializedPacket::~SerializedPacket() {}
704 677
(...skipping 25 matching lines...) Expand all
730 is_unackable(false), 703 is_unackable(false),
731 has_crypto_handshake(has_crypto_handshake), 704 has_crypto_handshake(has_crypto_handshake),
732 num_padding_bytes(num_padding_bytes), 705 num_padding_bytes(num_padding_bytes),
733 retransmission(0) {} 706 retransmission(0) {}
734 707
735 TransmissionInfo::TransmissionInfo(const TransmissionInfo& other) = default; 708 TransmissionInfo::TransmissionInfo(const TransmissionInfo& other) = default;
736 709
737 TransmissionInfo::~TransmissionInfo() {} 710 TransmissionInfo::~TransmissionInfo() {}
738 711
739 } // namespace net 712 } // namespace net
OLDNEW
« no previous file with comments | « net/quic/core/quic_protocol.h ('k') | net/quic/core/quic_protocol_test.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698