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

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

Issue 2430973004: Landing Recent QUIC changes until 10:38 AM, Oct 17, 2016 UTC-4 (Closed)
Patch Set: Improving flagsaver logging Created 4 years, 2 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 unified diff | Download patch
« no previous file with comments | « net/quic/core/quic_framer.h ('k') | net/quic/core/quic_framer_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_framer.h" 5 #include "net/quic/core/quic_framer.h"
6 6
7 #include <cstdint> 7 #include <cstdint>
8 #include <memory> 8 #include <memory>
9 #include <vector> 9 #include <vector>
10 10
(...skipping 790 matching lines...) Expand 10 before | Expand all | Expand 10 after
801 return QuicTime::Delta::FromMicroseconds(time); 801 return QuicTime::Delta::FromMicroseconds(time);
802 } 802 }
803 803
804 bool QuicFramer::IsValidPath(QuicPathId path_id, 804 bool QuicFramer::IsValidPath(QuicPathId path_id,
805 QuicPacketNumber* base_packet_number) { 805 QuicPacketNumber* base_packet_number) {
806 if (ContainsKey(closed_paths_, path_id)) { 806 if (ContainsKey(closed_paths_, path_id)) {
807 // Path is closed. 807 // Path is closed.
808 return false; 808 return false;
809 } 809 }
810 810
811 if (FLAGS_quic_packet_numbers_largest_received) { 811 if (path_id == last_path_id_) {
812 if (path_id == last_path_id_) { 812 *base_packet_number = largest_packet_number_;
813 *base_packet_number = largest_packet_number_; 813 return true;
814 return true; 814 }
815 }
816 815
817 if (ContainsKey(largest_packet_numbers_, path_id)) { 816 if (ContainsKey(largest_packet_numbers_, path_id)) {
818 *base_packet_number = largest_packet_numbers_[path_id]; 817 *base_packet_number = largest_packet_numbers_[path_id];
819 } else {
820 *base_packet_number = 0;
821 }
822 } else { 818 } else {
823 if (path_id == last_path_id_) { 819 *base_packet_number = 0;
824 *base_packet_number = last_packet_number_;
825 return true;
826 }
827
828 if (ContainsKey(last_packet_numbers_, path_id)) {
829 *base_packet_number = last_packet_numbers_[path_id];
830 } else {
831 *base_packet_number = 0;
832 }
833 } 820 }
834 821
835 return true; 822 return true;
836 } 823 }
837 824
838 void QuicFramer::SetLastPacketNumber(const QuicPacketHeader& header) { 825 void QuicFramer::SetLastPacketNumber(const QuicPacketHeader& header) {
839 if (header.public_header.multipath_flag && header.path_id != last_path_id_) { 826 if (header.public_header.multipath_flag && header.path_id != last_path_id_) {
840 if (last_path_id_ != kInvalidPathId) { 827 if (last_path_id_ != kInvalidPathId) {
841 // Save current last packet number before changing path. 828 // Save current last packet number before changing path.
842 last_packet_numbers_[last_path_id_] = last_packet_number_; 829 largest_packet_numbers_[last_path_id_] = largest_packet_number_;
843 if (FLAGS_quic_packet_numbers_largest_received) {
844 largest_packet_numbers_[last_path_id_] = largest_packet_number_;
845 }
846 } 830 }
847 // Change path. 831 // Change path.
848 last_path_id_ = header.path_id; 832 last_path_id_ = header.path_id;
849 } 833 }
850 last_packet_number_ = header.packet_number; 834 last_packet_number_ = header.packet_number;
851 if (FLAGS_quic_packet_numbers_largest_received) { 835 largest_packet_number_ = max(header.packet_number, largest_packet_number_);
852 largest_packet_number_ = max(header.packet_number, largest_packet_number_);
853 }
854 } 836 }
855 837
856 void QuicFramer::OnPathClosed(QuicPathId path_id) { 838 void QuicFramer::OnPathClosed(QuicPathId path_id) {
857 closed_paths_.insert(path_id); 839 closed_paths_.insert(path_id);
858 last_packet_numbers_.erase(path_id); 840 largest_packet_numbers_.erase(path_id);
859 } 841 }
860 842
861 QuicPacketNumber QuicFramer::CalculatePacketNumberFromWire( 843 QuicPacketNumber QuicFramer::CalculatePacketNumberFromWire(
862 QuicPacketNumberLength packet_number_length, 844 QuicPacketNumberLength packet_number_length,
863 QuicPacketNumber base_packet_number, 845 QuicPacketNumber base_packet_number,
864 QuicPacketNumber packet_number) const { 846 QuicPacketNumber packet_number) const {
865 // The new packet number might have wrapped to the next epoch, or 847 // The new packet number might have wrapped to the next epoch, or
866 // it might have reverse wrapped to the previous epoch, or it might 848 // it might have reverse wrapped to the previous epoch, or it might
867 // remain in the same epoch. Select the packet number closest to the 849 // remain in the same epoch. Select the packet number closest to the
868 // next expected packet number, the previous packet number plus 1. 850 // next expected packet number, the previous packet number plus 1.
(...skipping 197 matching lines...) Expand 10 before | Expand all | Expand 10 after
1066 1048
1067 bool QuicFramer::ProcessUnauthenticatedHeader(QuicDataReader* encrypted_reader, 1049 bool QuicFramer::ProcessUnauthenticatedHeader(QuicDataReader* encrypted_reader,
1068 QuicPacketHeader* header) { 1050 QuicPacketHeader* header) {
1069 header->path_id = kDefaultPathId; 1051 header->path_id = kDefaultPathId;
1070 if (header->public_header.multipath_flag && 1052 if (header->public_header.multipath_flag &&
1071 !ProcessPathId(encrypted_reader, &header->path_id)) { 1053 !ProcessPathId(encrypted_reader, &header->path_id)) {
1072 set_detailed_error("Unable to read path id."); 1054 set_detailed_error("Unable to read path id.");
1073 return RaiseError(QUIC_INVALID_PACKET_HEADER); 1055 return RaiseError(QUIC_INVALID_PACKET_HEADER);
1074 } 1056 }
1075 1057
1076 QuicPacketNumber base_packet_number = 1058 QuicPacketNumber base_packet_number = largest_packet_number_;
1077 FLAGS_quic_packet_numbers_largest_received ? largest_packet_number_
1078 : last_packet_number_;
1079 if (header->public_header.multipath_flag && 1059 if (header->public_header.multipath_flag &&
1080 !IsValidPath(header->path_id, &base_packet_number)) { 1060 !IsValidPath(header->path_id, &base_packet_number)) {
1081 // Stop processing because path is closed. 1061 // Stop processing because path is closed.
1082 return false; 1062 return false;
1083 } 1063 }
1084 1064
1085 if (!ProcessPacketSequenceNumber( 1065 if (!ProcessPacketSequenceNumber(
1086 encrypted_reader, header->public_header.packet_number_length, 1066 encrypted_reader, header->public_header.packet_number_length,
1087 base_packet_number, &header->packet_number)) { 1067 base_packet_number, &header->packet_number)) {
1088 set_detailed_error("Unable to read packet number."); 1068 set_detailed_error("Unable to read packet number.");
(...skipping 1491 matching lines...) Expand 10 before | Expand all | Expand 10 after
2580 2560
2581 bool QuicFramer::RaiseError(QuicErrorCode error) { 2561 bool QuicFramer::RaiseError(QuicErrorCode error) {
2582 DVLOG(1) << "Error: " << QuicUtils::ErrorToString(error) 2562 DVLOG(1) << "Error: " << QuicUtils::ErrorToString(error)
2583 << " detail: " << detailed_error_; 2563 << " detail: " << detailed_error_;
2584 set_error(error); 2564 set_error(error);
2585 visitor_->OnError(this); 2565 visitor_->OnError(this);
2586 return false; 2566 return false;
2587 } 2567 }
2588 2568
2589 } // namespace net 2569 } // namespace net
OLDNEW
« no previous file with comments | « net/quic/core/quic_framer.h ('k') | net/quic/core/quic_framer_test.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698