gfe-relnote: In QUIC, do not use framer object in QuicDispatcher. Protected by gfe2_restart_flag_quic_no_framer_object_in_dispatcher. Also, dispatcher does not parse and validate packet number anymore. PiperOrigin-RevId: 247959538 Change-Id: Ia0f7901428537f392b05ffd6beb2984bffd00232
diff --git a/quic/core/quic_framer.h b/quic/core/quic_framer.h index e2d7b4d..59e300c 100644 --- a/quic/core/quic_framer.h +++ b/quic/core/quic_framer.h
@@ -373,6 +373,21 @@ uint64_t retry_token_length, QuicVariableLengthIntegerLength length_length); + // Lightweight parsing of |packet| and populates |format|, |version_flag|, + // |version_label|, |destination_connection_id_length|, + // |destination_connection_id| and |detailed_error|. Please note, + // |expected_connection_id_length| is only used to determine IETF short header + // packet's destination connection ID length. + static QuicErrorCode ProcessPacketDispatcher( + const QuicEncryptedPacket& packet, + uint8_t expected_connection_id_length, + PacketHeaderFormat* format, + bool* version_flag, + QuicVersionLabel* version_label, + uint8_t* destination_connection_id_length, + QuicConnectionId* destination_connection_id, + std::string* detailed_error); + // Serializes a packet containing |frames| into |buffer|. // Returns the length of the packet, which must not be longer than // |packet_length|. Returns 0 if it fails to serialize. @@ -665,13 +680,14 @@ // Validates and updates |destination_connection_id_length| and // |source_connection_id_length|. - static bool ValidateIetfConnectionIdLength( - uint8_t connection_id_lengths_byte, + static bool ProcessAndValidateIetfConnectionIdLength( + QuicDataReader* reader, ParsedQuicVersion version, bool should_update_expected_connection_id_length, uint8_t* expected_connection_id_length, uint8_t* destination_connection_id_length, - uint8_t* source_connection_id_length); + uint8_t* source_connection_id_length, + std::string* detailed_error); bool ProcessIetfHeaderTypeByte(QuicDataReader* reader, QuicPacketHeader* header); @@ -921,6 +937,8 @@ // Updated by WritePacketHeader. QuicConnectionId last_serialized_connection_id_; // The last QUIC version label received. + // TODO(fayang): Remove this when deprecating + // quic_no_framer_object_in_dispatcher. QuicVersionLabel last_version_label_; // Version of the protocol being used. ParsedQuicVersion version_; @@ -975,10 +993,14 @@ // encode its length. This variable contains the length we expect to read. // This is also used to validate the long header connection ID lengths in // older versions of QUIC. + // TODO(fayang): Remove this when deprecating + // quic_no_framer_object_in_dispatcher. uint8_t expected_connection_id_length_; // When this is true, QuicFramer will change expected_connection_id_length_ // to the received destination connection ID length of all IETF long headers. + // TODO(fayang): Remove this when deprecating + // quic_no_framer_object_in_dispatcher. bool should_update_expected_connection_id_length_; // Indicates whether this framer supports multiple packet number spaces.