In GFE, consider decrypted 0-RTT packets as full packet to relax the amplification factor. Protected by FLAGS_quic_reloadable_flag_quic_relax_amplification_factor. PiperOrigin-RevId: 344253202 Change-Id: I7aadd2c94635e95c4f4bcfd486f07616e002fd84
diff --git a/quic/core/chlo_extractor.cc b/quic/core/chlo_extractor.cc index 851967a..a252d61 100644 --- a/quic/core/chlo_extractor.cc +++ b/quic/core/chlo_extractor.cc
@@ -45,7 +45,8 @@ absl::string_view /*retry_without_tag*/) override {} bool OnUnauthenticatedPublicHeader(const QuicPacketHeader& header) override; bool OnUnauthenticatedHeader(const QuicPacketHeader& header) override; - void OnDecryptedPacket(EncryptionLevel /*level*/) override {} + void OnDecryptedPacket(size_t /*length*/, + EncryptionLevel /*level*/) override {} bool OnPacketHeader(const QuicPacketHeader& header) override; void OnCoalescedPacket(const QuicEncryptedPacket& packet) override; void OnUndecryptablePacket(const QuicEncryptedPacket& packet,
diff --git a/quic/core/quic_connection.cc b/quic/core/quic_connection.cc index 3ba720f..00fa44c 100644 --- a/quic/core/quic_connection.cc +++ b/quic/core/quic_connection.cc
@@ -1144,7 +1144,8 @@ return ack_alarm_->IsSet(); } -void QuicConnection::OnDecryptedPacket(EncryptionLevel level) { +void QuicConnection::OnDecryptedPacket(size_t /*length*/, + EncryptionLevel level) { last_decrypted_packet_level_ = level; last_packet_decrypted_ = true; if (EnforceAntiAmplificationLimit()) {
diff --git a/quic/core/quic_connection.h b/quic/core/quic_connection.h index 136eb90..10ebebb 100644 --- a/quic/core/quic_connection.h +++ b/quic/core/quic_connection.h
@@ -612,7 +612,7 @@ absl::string_view retry_without_tag) override; bool OnUnauthenticatedPublicHeader(const QuicPacketHeader& header) override; bool OnUnauthenticatedHeader(const QuicPacketHeader& header) override; - void OnDecryptedPacket(EncryptionLevel level) override; + void OnDecryptedPacket(size_t length, EncryptionLevel level) override; bool OnPacketHeader(const QuicPacketHeader& header) override; void OnCoalescedPacket(const QuicEncryptedPacket& packet) override; void OnUndecryptablePacket(const QuicEncryptedPacket& packet, @@ -1233,6 +1233,13 @@ // list. bool HandleWriteBlocked(); + // Whether connection enforces anti-amplification limit. + bool EnforceAntiAmplificationLimit() const; + + void AddBytesReceivedBeforeAddressValidation(size_t length) { + bytes_received_before_address_validation_ += length; + } + private: friend class test::QuicConnectionPeer; @@ -1455,9 +1462,6 @@ // Whether incoming_connection_ids_ contains connection_id. bool HasIncomingConnectionId(QuicConnectionId connection_id); - // Whether connection enforces anti-amplification limit. - bool EnforceAntiAmplificationLimit() const; - // Whether connection is limited by amplification factor. bool LimitedByAmplificationFactor() const;
diff --git a/quic/core/quic_framer.cc b/quic/core/quic_framer.cc index 98c0dd7..be14a0b 100644 --- a/quic/core/quic_framer.cc +++ b/quic/core/quic_framer.cc
@@ -1832,8 +1832,9 @@ size_t decrypted_length = 0; EncryptionLevel decrypted_level; - if (!DecryptPayload(encrypted, associated_data, *header, decrypted_buffer, - buffer_length, &decrypted_length, &decrypted_level)) { + if (!DecryptPayload(packet.length(), encrypted, associated_data, *header, + decrypted_buffer, buffer_length, &decrypted_length, + &decrypted_level)) { if (IsIetfStatelessResetPacket(*header)) { // This is a stateless reset packet. QuicIetfStatelessResetPacket packet( @@ -1934,8 +1935,9 @@ size_t decrypted_length = 0; EncryptionLevel decrypted_level; - if (!DecryptPayload(encrypted, associated_data, *header, decrypted_buffer, - buffer_length, &decrypted_length, &decrypted_level)) { + if (!DecryptPayload(packet.length(), encrypted, associated_data, *header, + decrypted_buffer, buffer_length, &decrypted_length, + &decrypted_level)) { const EncryptionLevel decryption_level = decrypter_level_; // This version uses trial decryption so we always report to our visitor // that we are not certain we have the correct decryption key. @@ -4694,7 +4696,8 @@ return encrypter_[ENCRYPTION_FORWARD_SECURE]->GetConfidentialityLimit(); } -bool QuicFramer::DecryptPayload(absl::string_view encrypted, +bool QuicFramer::DecryptPayload(size_t udp_packet_length, + absl::string_view encrypted, absl::string_view associated_data, const QuicPacketHeader& header, char* decrypted_buffer, @@ -4788,7 +4791,7 @@ header.packet_number.ToUint64(), associated_data, encrypted, decrypted_buffer, decrypted_length, buffer_length); if (success) { - visitor_->OnDecryptedPacket(level); + visitor_->OnDecryptedPacket(udp_packet_length, level); *decrypted_level = level; potential_peer_key_update_attempt_count_ = 0; if (attempt_key_update) { @@ -4835,7 +4838,8 @@ decrypted_buffer, decrypted_length, buffer_length); } if (success) { - visitor_->OnDecryptedPacket(alternative_decrypter_level_); + visitor_->OnDecryptedPacket(udp_packet_length, + alternative_decrypter_level_); *decrypted_level = decrypter_level_; if (alternative_decrypter_latch_) { if (!EncryptionLevelIsValid(alternative_decrypter_level_)) {
diff --git a/quic/core/quic_framer.h b/quic/core/quic_framer.h index fba99f8..bed6162 100644 --- a/quic/core/quic_framer.h +++ b/quic/core/quic_framer.h
@@ -121,9 +121,9 @@ // cease. virtual bool OnUnauthenticatedHeader(const QuicPacketHeader& header) = 0; - // Called when a packet has been decrypted. |level| is the encryption level - // of the packet. - virtual void OnDecryptedPacket(EncryptionLevel level) = 0; + // Called when a packet has been decrypted. |length| is the packet length, + // and |level| is the encryption level of the packet. + virtual void OnDecryptedPacket(size_t length, EncryptionLevel level) = 0; // Called when the complete header of a packet had been parsed. // If OnPacketHeader returns false, framing for this packet will cease. @@ -849,7 +849,8 @@ bool no_message_length, QuicMessageFrame* frame); - bool DecryptPayload(absl::string_view encrypted, + bool DecryptPayload(size_t udp_packet_length, + absl::string_view encrypted, absl::string_view associated_data, const QuicPacketHeader& header, char* decrypted_buffer,
diff --git a/quic/core/quic_framer_test.cc b/quic/core/quic_framer_test.cc index da6cd5a..04eca30 100644 --- a/quic/core/quic_framer_test.cc +++ b/quic/core/quic_framer_test.cc
@@ -290,7 +290,8 @@ return true; } - void OnDecryptedPacket(EncryptionLevel /*level*/) override { + void OnDecryptedPacket(size_t /*length*/, + EncryptionLevel /*level*/) override { EXPECT_EQ(0u, framer_->current_received_frame_type()); } @@ -9765,7 +9766,7 @@ EXPECT_CALL(visitor, OnPacketComplete()); EXPECT_CALL(visitor, OnUnauthenticatedPublicHeader(_)).WillOnce(Return(true)); EXPECT_CALL(visitor, OnUnauthenticatedHeader(_)).WillOnce(Return(true)); - EXPECT_CALL(visitor, OnDecryptedPacket(_)); + EXPECT_CALL(visitor, OnDecryptedPacket(_, _)); unsigned char* p = packet; size_t p_size = ABSL_ARRAYSIZE(packet); @@ -9824,7 +9825,7 @@ .Times(1) .WillOnce(Return(true)); EXPECT_CALL(visitor, OnPacketHeader(_)).Times(1).WillOnce(Return(true)); - EXPECT_CALL(visitor, OnDecryptedPacket(_)).Times(1); + EXPECT_CALL(visitor, OnDecryptedPacket(_, _)).Times(1); EXPECT_CALL(visitor, OnError(_)).Times(0); EXPECT_CALL(visitor, OnStreamFrame(_)).Times(0); if (!QuicVersionUsesCryptoFrames(framer_.version().transport_version)) { @@ -9870,7 +9871,7 @@ .Times(1) .WillOnce(Return(true)); EXPECT_CALL(visitor, OnPacketHeader(_)).Times(1); - EXPECT_CALL(visitor, OnDecryptedPacket(_)).Times(1); + EXPECT_CALL(visitor, OnDecryptedPacket(_, _)).Times(1); EXPECT_CALL(visitor, OnError(_)).Times(1); EXPECT_CALL(visitor, OnStreamFrame(_)).Times(0); EXPECT_CALL(visitor, OnPacketComplete()).Times(0);
diff --git a/quic/core/quic_packet_creator_test.cc b/quic/core/quic_packet_creator_test.cc index b33389d..91dbf24 100644 --- a/quic/core/quic_packet_creator_test.cc +++ b/quic/core/quic_packet_creator_test.cc
@@ -317,7 +317,7 @@ EXPECT_CALL(framer_visitor_, OnPacket()); EXPECT_CALL(framer_visitor_, OnUnauthenticatedPublicHeader(_)); EXPECT_CALL(framer_visitor_, OnUnauthenticatedHeader(_)); - EXPECT_CALL(framer_visitor_, OnDecryptedPacket(_)); + EXPECT_CALL(framer_visitor_, OnDecryptedPacket(_, _)); EXPECT_CALL(framer_visitor_, OnPacketHeader(_)); EXPECT_CALL(framer_visitor_, OnAckFrameStart(_, _)) .WillOnce(Return(true)); @@ -355,7 +355,7 @@ EXPECT_CALL(framer_visitor_, OnPacket()); EXPECT_CALL(framer_visitor_, OnUnauthenticatedPublicHeader(_)); EXPECT_CALL(framer_visitor_, OnUnauthenticatedHeader(_)); - EXPECT_CALL(framer_visitor_, OnDecryptedPacket(_)); + EXPECT_CALL(framer_visitor_, OnDecryptedPacket(_, _)); EXPECT_CALL(framer_visitor_, OnPacketHeader(_)); EXPECT_CALL(framer_visitor_, OnConnectionCloseFrame(_)); EXPECT_CALL(framer_visitor_, OnPacketComplete()); @@ -931,7 +931,7 @@ EXPECT_CALL(framer_visitor_, OnPacket()); EXPECT_CALL(framer_visitor_, OnUnauthenticatedPublicHeader(_)); EXPECT_CALL(framer_visitor_, OnUnauthenticatedHeader(_)); - EXPECT_CALL(framer_visitor_, OnDecryptedPacket(_)); + EXPECT_CALL(framer_visitor_, OnDecryptedPacket(_, _)); EXPECT_CALL(framer_visitor_, OnPacketHeader(_)); if (VersionHasIetfQuicFrames(creator_.transport_version())) { EXPECT_CALL(framer_visitor_, OnPathChallengeFrame(_)); @@ -963,7 +963,7 @@ EXPECT_CALL(framer_visitor_, OnPacket()); EXPECT_CALL(framer_visitor_, OnUnauthenticatedPublicHeader(_)); EXPECT_CALL(framer_visitor_, OnUnauthenticatedHeader(_)); - EXPECT_CALL(framer_visitor_, OnDecryptedPacket(_)); + EXPECT_CALL(framer_visitor_, OnDecryptedPacket(_, _)); EXPECT_CALL(framer_visitor_, OnPacketHeader(_)); EXPECT_CALL(framer_visitor_, OnPathChallengeFrame(_)); EXPECT_CALL(framer_visitor_, OnPaddingFrame(_)); @@ -993,7 +993,7 @@ EXPECT_CALL(framer_visitor_, OnPacket()); EXPECT_CALL(framer_visitor_, OnUnauthenticatedPublicHeader(_)); EXPECT_CALL(framer_visitor_, OnUnauthenticatedHeader(_)); - EXPECT_CALL(framer_visitor_, OnDecryptedPacket(_)); + EXPECT_CALL(framer_visitor_, OnDecryptedPacket(_, _)); EXPECT_CALL(framer_visitor_, OnPacketHeader(_)); EXPECT_CALL(framer_visitor_, OnPathResponseFrame(_)); EXPECT_CALL(framer_visitor_, OnPaddingFrame(_)); @@ -1023,7 +1023,7 @@ EXPECT_CALL(framer_visitor_, OnPacket()); EXPECT_CALL(framer_visitor_, OnUnauthenticatedPublicHeader(_)); EXPECT_CALL(framer_visitor_, OnUnauthenticatedHeader(_)); - EXPECT_CALL(framer_visitor_, OnDecryptedPacket(_)); + EXPECT_CALL(framer_visitor_, OnDecryptedPacket(_, _)); EXPECT_CALL(framer_visitor_, OnPacketHeader(_)); EXPECT_CALL(framer_visitor_, OnPathResponseFrame(_)); EXPECT_CALL(framer_visitor_, OnPacketComplete()); @@ -1054,7 +1054,7 @@ EXPECT_CALL(framer_visitor_, OnPacket()); EXPECT_CALL(framer_visitor_, OnUnauthenticatedPublicHeader(_)); EXPECT_CALL(framer_visitor_, OnUnauthenticatedHeader(_)); - EXPECT_CALL(framer_visitor_, OnDecryptedPacket(_)); + EXPECT_CALL(framer_visitor_, OnDecryptedPacket(_, _)); EXPECT_CALL(framer_visitor_, OnPacketHeader(_)); EXPECT_CALL(framer_visitor_, OnPathResponseFrame(_)).Times(2); EXPECT_CALL(framer_visitor_, OnPaddingFrame(_)); @@ -1087,7 +1087,7 @@ EXPECT_CALL(framer_visitor_, OnPacket()); EXPECT_CALL(framer_visitor_, OnUnauthenticatedPublicHeader(_)); EXPECT_CALL(framer_visitor_, OnUnauthenticatedHeader(_)); - EXPECT_CALL(framer_visitor_, OnDecryptedPacket(_)); + EXPECT_CALL(framer_visitor_, OnDecryptedPacket(_, _)); EXPECT_CALL(framer_visitor_, OnPacketHeader(_)); EXPECT_CALL(framer_visitor_, OnPathResponseFrame(_)).Times(2); EXPECT_CALL(framer_visitor_, OnPacketComplete()); @@ -1121,7 +1121,7 @@ EXPECT_CALL(framer_visitor_, OnPacket()); EXPECT_CALL(framer_visitor_, OnUnauthenticatedPublicHeader(_)); EXPECT_CALL(framer_visitor_, OnUnauthenticatedHeader(_)); - EXPECT_CALL(framer_visitor_, OnDecryptedPacket(_)); + EXPECT_CALL(framer_visitor_, OnDecryptedPacket(_, _)); EXPECT_CALL(framer_visitor_, OnPacketHeader(_)); EXPECT_CALL(framer_visitor_, OnPathResponseFrame(_)).Times(3); EXPECT_CALL(framer_visitor_, OnPaddingFrame(_)); @@ -1156,7 +1156,7 @@ EXPECT_CALL(framer_visitor_, OnPacket()); EXPECT_CALL(framer_visitor_, OnUnauthenticatedPublicHeader(_)); EXPECT_CALL(framer_visitor_, OnUnauthenticatedHeader(_)); - EXPECT_CALL(framer_visitor_, OnDecryptedPacket(_)); + EXPECT_CALL(framer_visitor_, OnDecryptedPacket(_, _)); EXPECT_CALL(framer_visitor_, OnPacketHeader(_)); EXPECT_CALL(framer_visitor_, OnPathResponseFrame(_)).Times(3); EXPECT_CALL(framer_visitor_, OnPacketComplete()); @@ -1289,7 +1289,7 @@ EXPECT_CALL(framer_visitor_, OnPacket()); EXPECT_CALL(framer_visitor_, OnUnauthenticatedPublicHeader(_)); EXPECT_CALL(framer_visitor_, OnUnauthenticatedHeader(_)); - EXPECT_CALL(framer_visitor_, OnDecryptedPacket(_)); + EXPECT_CALL(framer_visitor_, OnDecryptedPacket(_, _)); EXPECT_CALL(framer_visitor_, OnPacketHeader(_)) .WillOnce(DoAll(SaveArg<0>(&header), Return(true))); if (QuicVersionUsesCryptoFrames(client_framer_.transport_version())) { @@ -1326,7 +1326,7 @@ EXPECT_CALL(framer_visitor_, OnPacket()); EXPECT_CALL(framer_visitor_, OnUnauthenticatedPublicHeader(_)); EXPECT_CALL(framer_visitor_, OnUnauthenticatedHeader(_)); - EXPECT_CALL(framer_visitor_, OnDecryptedPacket(_)); + EXPECT_CALL(framer_visitor_, OnDecryptedPacket(_, _)); EXPECT_CALL(framer_visitor_, OnPacketHeader(_)) .WillOnce(DoAll(SaveArg<0>(&header), Return(true))); if (QuicVersionUsesCryptoFrames(client_framer_.transport_version())) { @@ -1514,7 +1514,7 @@ EXPECT_CALL(framer_visitor_, OnPacket()); EXPECT_CALL(framer_visitor_, OnUnauthenticatedPublicHeader(_)); EXPECT_CALL(framer_visitor_, OnUnauthenticatedHeader(_)); - EXPECT_CALL(framer_visitor_, OnDecryptedPacket(_)); + EXPECT_CALL(framer_visitor_, OnDecryptedPacket(_, _)); EXPECT_CALL(framer_visitor_, OnPacketHeader(_)); EXPECT_CALL(framer_visitor_, OnStreamFrame(_)); if (client_framer_.version().HasHeaderProtection()) { @@ -1604,7 +1604,7 @@ EXPECT_CALL(framer_visitor_, OnPacket()); EXPECT_CALL(framer_visitor_, OnUnauthenticatedPublicHeader(_)); EXPECT_CALL(framer_visitor_, OnUnauthenticatedHeader(_)); - EXPECT_CALL(framer_visitor_, OnDecryptedPacket(_)); + EXPECT_CALL(framer_visitor_, OnDecryptedPacket(_, _)); EXPECT_CALL(framer_visitor_, OnPacketHeader(_)); EXPECT_CALL(framer_visitor_, OnPaddingFrame(_)); EXPECT_CALL(framer_visitor_, OnPacketComplete()); @@ -1969,7 +1969,7 @@ EXPECT_CALL(framer_visitor_, OnPacket()); EXPECT_CALL(framer_visitor_, OnUnauthenticatedPublicHeader(_)); EXPECT_CALL(framer_visitor_, OnUnauthenticatedHeader(_)); - EXPECT_CALL(framer_visitor_, OnDecryptedPacket(_)); + EXPECT_CALL(framer_visitor_, OnDecryptedPacket(_, _)); EXPECT_CALL(framer_visitor_, OnPacketHeader(_)) .WillOnce(DoAll(SaveArg<0>(&header), Return(true))); if (QuicVersionUsesCryptoFrames(client_framer_.transport_version())) { @@ -2078,7 +2078,7 @@ EXPECT_CALL(framer_visitor_, OnPacket()); EXPECT_CALL(framer_visitor_, OnUnauthenticatedPublicHeader(_)); EXPECT_CALL(framer_visitor_, OnUnauthenticatedHeader(_)); - EXPECT_CALL(framer_visitor_, OnDecryptedPacket(_)); + EXPECT_CALL(framer_visitor_, OnDecryptedPacket(_, _)); EXPECT_CALL(framer_visitor_, OnPacketHeader(_)); // The packet should only have 2 stream frames. EXPECT_CALL(framer_visitor_, OnStreamFrame(_)); @@ -2155,7 +2155,7 @@ })); } EXPECT_CALL(framer_visitor_, OnUnauthenticatedHeader(_)); - EXPECT_CALL(framer_visitor_, OnDecryptedPacket(_)); + EXPECT_CALL(framer_visitor_, OnDecryptedPacket(_, _)); EXPECT_CALL(framer_visitor_, OnPacketHeader(_)); EXPECT_CALL(framer_visitor_, OnAckFrameStart(_, _)).WillOnce(Return(true)); EXPECT_CALL(framer_visitor_,
diff --git a/quic/core/quic_session_test.cc b/quic/core/quic_session_test.cc index 13b0a8d..943025a 100644 --- a/quic/core/quic_session_test.cc +++ b/quic/core/quic_session_test.cc
@@ -576,7 +576,7 @@ EXPECT_CALL(framer_visitor_, OnPacket()); EXPECT_CALL(framer_visitor_, OnUnauthenticatedPublicHeader(_)); EXPECT_CALL(framer_visitor_, OnUnauthenticatedHeader(_)); - EXPECT_CALL(framer_visitor_, OnDecryptedPacket(_)); + EXPECT_CALL(framer_visitor_, OnDecryptedPacket(_, _)); EXPECT_CALL(framer_visitor_, OnPacketHeader(_)); EXPECT_CALL(framer_visitor_, OnPathResponseFrame(_)) .WillOnce(
diff --git a/quic/core/tls_chlo_extractor.h b/quic/core/tls_chlo_extractor.h index 718e5fa..0063808 100644 --- a/quic/core/tls_chlo_extractor.h +++ b/quic/core/tls_chlo_extractor.h
@@ -74,7 +74,8 @@ bool OnUnauthenticatedHeader(const QuicPacketHeader& /*header*/) override { return true; } - void OnDecryptedPacket(EncryptionLevel /*level*/) override {} + void OnDecryptedPacket(size_t /*packet_length*/, + EncryptionLevel /*level*/) override {} bool OnPacketHeader(const QuicPacketHeader& /*header*/) override { return true; }
diff --git a/quic/test_tools/crypto_test_utils.cc b/quic/test_tools/crypto_test_utils.cc index 00f7f1b..960f1d9 100644 --- a/quic/test_tools/crypto_test_utils.cc +++ b/quic/test_tools/crypto_test_utils.cc
@@ -756,7 +756,9 @@ continue; } QuicConnectionPeer::SwapCrypters(dest_conn, framer.framer()); - dest_conn->OnDecryptedPacket(framer.last_decrypted_level()); + dest_conn->OnDecryptedPacket( + source_conn->encrypted_packets_[index]->length(), + framer.last_decrypted_level()); if (dest_stream->handshake_protocol() == PROTOCOL_TLS1_3) { // Try to process the packet with a framer that only has the NullDecrypter @@ -777,7 +779,9 @@ // packet was decrypted at. This is needed by TLS to know what encryption // level was used for the data it's receiving, so we plumb this information // from the SimpleQuicFramer back into the connection. - dest_conn->OnDecryptedPacket(framer.last_decrypted_level()); + dest_conn->OnDecryptedPacket( + source_conn->encrypted_packets_[index]->length(), + framer.last_decrypted_level()); QuicConnectionPeer::SetCurrentPacket( dest_conn, source_conn->encrypted_packets_[index]->AsStringPiece());
diff --git a/quic/test_tools/quic_test_utils.h b/quic/test_tools/quic_test_utils.h index 5c217c7..b575311 100644 --- a/quic/test_tools/quic_test_utils.h +++ b/quic/test_tools/quic_test_utils.h
@@ -321,7 +321,10 @@ OnUnauthenticatedPublicHeader, (const QuicPacketHeader& header), (override)); - MOCK_METHOD(void, OnDecryptedPacket, (EncryptionLevel level), (override)); + MOCK_METHOD(void, + OnDecryptedPacket, + (size_t length, EncryptionLevel level), + (override)); MOCK_METHOD(bool, OnPacketHeader, (const QuicPacketHeader& header), @@ -458,7 +461,8 @@ bool OnProtocolVersionMismatch(ParsedQuicVersion version) override; bool OnUnauthenticatedHeader(const QuicPacketHeader& header) override; bool OnUnauthenticatedPublicHeader(const QuicPacketHeader& header) override; - void OnDecryptedPacket(EncryptionLevel /*level*/) override {} + void OnDecryptedPacket(size_t /*length*/, + EncryptionLevel /*level*/) override {} bool OnPacketHeader(const QuicPacketHeader& header) override; void OnCoalescedPacket(const QuicEncryptedPacket& packet) override; void OnUndecryptablePacket(const QuicEncryptedPacket& packet,
diff --git a/quic/test_tools/simple_quic_framer.cc b/quic/test_tools/simple_quic_framer.cc index ccce52b..0ae2851 100644 --- a/quic/test_tools/simple_quic_framer.cc +++ b/quic/test_tools/simple_quic_framer.cc
@@ -52,7 +52,7 @@ bool OnUnauthenticatedHeader(const QuicPacketHeader& /*header*/) override { return true; } - void OnDecryptedPacket(EncryptionLevel level) override { + void OnDecryptedPacket(size_t /*length*/, EncryptionLevel level) override { last_decrypted_level_ = level; } bool OnPacketHeader(const QuicPacketHeader& header) override {
diff --git a/quic/tools/quic_packet_printer_bin.cc b/quic/tools/quic_packet_printer_bin.cc index cfe0b8d..f7e05e5 100644 --- a/quic/tools/quic_packet_printer_bin.cc +++ b/quic/tools/quic_packet_printer_bin.cc
@@ -80,7 +80,7 @@ std::cerr << "OnUnauthenticatedHeader: " << header; return true; } - void OnDecryptedPacket(EncryptionLevel level) override { + void OnDecryptedPacket(size_t /*length*/, EncryptionLevel level) override { // This only currently supports "decrypting" null encrypted packets. DCHECK_EQ(ENCRYPTION_INITIAL, level); std::cerr << "OnDecryptedPacket\n";