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

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

Issue 2791343002: relnote: n/a (flag verification) (Closed)
Patch Set: Created 3 years, 8 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 | « no previous file | net/tools/quic/quic_dispatcher.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 9
10 #include "base/compiler_specific.h" 10 #include "base/compiler_specific.h"
11 #include "net/quic/core/crypto/crypto_framer.h" 11 #include "net/quic/core/crypto/crypto_framer.h"
12 #include "net/quic/core/crypto/crypto_handshake_message.h" 12 #include "net/quic/core/crypto/crypto_handshake_message.h"
13 #include "net/quic/core/crypto/crypto_protocol.h" 13 #include "net/quic/core/crypto/crypto_protocol.h"
14 #include "net/quic/core/crypto/null_decrypter.h" 14 #include "net/quic/core/crypto/null_decrypter.h"
15 #include "net/quic/core/crypto/null_encrypter.h" 15 #include "net/quic/core/crypto/null_encrypter.h"
16 #include "net/quic/core/crypto/quic_decrypter.h" 16 #include "net/quic/core/crypto/quic_decrypter.h"
17 #include "net/quic/core/crypto/quic_encrypter.h" 17 #include "net/quic/core/crypto/quic_encrypter.h"
18 #include "net/quic/core/quic_data_reader.h" 18 #include "net/quic/core/quic_data_reader.h"
19 #include "net/quic/core/quic_data_writer.h" 19 #include "net/quic/core/quic_data_writer.h"
20 #include "net/quic/core/quic_flags.h" 20 #include "net/quic/core/quic_flags.h"
21 #include "net/quic/core/quic_socket_address_coder.h" 21 #include "net/quic/core/quic_socket_address_coder.h"
22 #include "net/quic/core/quic_utils.h" 22 #include "net/quic/core/quic_utils.h"
23 #include "net/quic/platform/api/quic_aligned.h" 23 #include "net/quic/platform/api/quic_aligned.h"
24 #include "net/quic/platform/api/quic_bug_tracker.h" 24 #include "net/quic/platform/api/quic_bug_tracker.h"
25 #include "net/quic/platform/api/quic_flag_utils.h"
25 #include "net/quic/platform/api/quic_logging.h" 26 #include "net/quic/platform/api/quic_logging.h"
26 #include "net/quic/platform/api/quic_map_util.h" 27 #include "net/quic/platform/api/quic_map_util.h"
27 #include "net/quic/platform/api/quic_ptr_util.h" 28 #include "net/quic/platform/api/quic_ptr_util.h"
28 29
29 using std::string; 30 using std::string;
30 31
31 namespace net { 32 namespace net {
32 33
33 namespace { 34 namespace {
34 35
(...skipping 734 matching lines...) Expand 10 before | Expand all | Expand 10 after
769 public_header->multipath_flag = 770 public_header->multipath_flag =
770 (public_flags & PACKET_PUBLIC_FLAGS_MULTIPATH) != 0; 771 (public_flags & PACKET_PUBLIC_FLAGS_MULTIPATH) != 0;
771 public_header->reset_flag = (public_flags & PACKET_PUBLIC_FLAGS_RST) != 0; 772 public_header->reset_flag = (public_flags & PACKET_PUBLIC_FLAGS_RST) != 0;
772 public_header->version_flag = 773 public_header->version_flag =
773 (public_flags & PACKET_PUBLIC_FLAGS_VERSION) != 0; 774 (public_flags & PACKET_PUBLIC_FLAGS_VERSION) != 0;
774 775
775 if (validate_flags_ && !public_header->version_flag && 776 if (validate_flags_ && !public_header->version_flag &&
776 public_flags > (FLAGS_quic_reloadable_flag_quic_remove_multipath_bit 777 public_flags > (FLAGS_quic_reloadable_flag_quic_remove_multipath_bit
777 ? PACKET_PUBLIC_FLAGS_MAX_WITHOUT_MULTIPATH_FLAG 778 ? PACKET_PUBLIC_FLAGS_MAX_WITHOUT_MULTIPATH_FLAG
778 : PACKET_PUBLIC_FLAGS_MAX)) { 779 : PACKET_PUBLIC_FLAGS_MAX)) {
780 if (FLAGS_quic_reloadable_flag_quic_remove_multipath_bit) {
781 QUIC_FLAG_COUNT_N(quic_reloadable_flag_quic_remove_multipath_bit, 1, 2);
782 }
779 set_detailed_error("Illegal public flags value."); 783 set_detailed_error("Illegal public flags value.");
780 return false; 784 return false;
781 } 785 }
782 786
783 if (public_header->reset_flag && public_header->version_flag) { 787 if (public_header->reset_flag && public_header->version_flag) {
784 set_detailed_error("Got version flag in reset packet"); 788 set_detailed_error("Got version flag in reset packet");
785 return false; 789 return false;
786 } 790 }
787 791
788 switch (public_flags & PACKET_PUBLIC_FLAGS_8BYTE_CONNECTION_ID) { 792 switch (public_flags & PACKET_PUBLIC_FLAGS_8BYTE_CONNECTION_ID) {
(...skipping 24 matching lines...) Expand all
813 817
814 // If the version from the new packet is the same as the version of this 818 // If the version from the new packet is the same as the version of this
815 // framer, then the public flags should be set to something we understand. 819 // framer, then the public flags should be set to something we understand.
816 // If not, this raises an error. 820 // If not, this raises an error.
817 last_version_tag_ = version_tag; 821 last_version_tag_ = version_tag;
818 QuicVersion version = QuicTagToQuicVersion(version_tag); 822 QuicVersion version = QuicTagToQuicVersion(version_tag);
819 if (version == quic_version_ && 823 if (version == quic_version_ &&
820 public_flags > (FLAGS_quic_reloadable_flag_quic_remove_multipath_bit 824 public_flags > (FLAGS_quic_reloadable_flag_quic_remove_multipath_bit
821 ? PACKET_PUBLIC_FLAGS_MAX_WITHOUT_MULTIPATH_FLAG 825 ? PACKET_PUBLIC_FLAGS_MAX_WITHOUT_MULTIPATH_FLAG
822 : PACKET_PUBLIC_FLAGS_MAX)) { 826 : PACKET_PUBLIC_FLAGS_MAX)) {
827 if (FLAGS_quic_reloadable_flag_quic_remove_multipath_bit) {
828 QUIC_FLAG_COUNT_N(quic_reloadable_flag_quic_remove_multipath_bit, 1, 2);
829 }
823 set_detailed_error("Illegal public flags value."); 830 set_detailed_error("Illegal public flags value.");
824 return false; 831 return false;
825 } 832 }
826 public_header->versions.push_back(version); 833 public_header->versions.push_back(version);
827 } 834 }
828 835
829 // A nonce should only be present in packets from the server to the client, 836 // A nonce should only be present in packets from the server to the client,
830 // which are neither version negotiation nor public reset packets. 837 // which are neither version negotiation nor public reset packets.
831 if (public_flags & PACKET_PUBLIC_FLAGS_NONCE && 838 if (public_flags & PACKET_PUBLIC_FLAGS_NONCE &&
832 !(public_flags & PACKET_PUBLIC_FLAGS_VERSION) && 839 !(public_flags & PACKET_PUBLIC_FLAGS_VERSION) &&
(...skipping 1272 matching lines...) Expand 10 before | Expand all | Expand 10 after
2105 2112
2106 bool QuicFramer::RaiseError(QuicErrorCode error) { 2113 bool QuicFramer::RaiseError(QuicErrorCode error) {
2107 QUIC_DLOG(INFO) << ENDPOINT << "Error: " << QuicErrorCodeToString(error) 2114 QUIC_DLOG(INFO) << ENDPOINT << "Error: " << QuicErrorCodeToString(error)
2108 << " detail: " << detailed_error_; 2115 << " detail: " << detailed_error_;
2109 set_error(error); 2116 set_error(error);
2110 visitor_->OnError(this); 2117 visitor_->OnError(this);
2111 return false; 2118 return false;
2112 } 2119 }
2113 2120
2114 } // namespace net 2121 } // namespace net
OLDNEW
« no previous file with comments | « no previous file | net/tools/quic/quic_dispatcher.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698