gfe-relnote: In QuicPacketReader, use QuicClock::Now() instead of kernel provided systime for receive time. Protected by --gfe2_reloadable_flag_quic_use_quic_time_for_received_timestamp2. PiperOrigin-RevId: 294963753 Change-Id: I1c06d6ea959570540543803e810479340b6d2af6
diff --git a/quic/core/quic_packet_reader.cc b/quic/core/quic_packet_reader.cc index 95cc4e4..eed0bbd 100644 --- a/quic/core/quic_packet_reader.cc +++ b/quic/core/quic_packet_reader.cc
@@ -99,6 +99,15 @@ /*packet_buffer_length=*/sizeof(read_buffers_[i].packet_buffer)); } QuicWallTime wallnow = clock.WallNow(); + const bool use_quic_time = + GetQuicReloadableFlag(quic_use_quic_time_for_received_timestamp2); + QuicTime now = QuicTime::Zero(); + if (use_quic_time) { + QUIC_RELOADABLE_FLAG_COUNT(quic_use_quic_time_for_received_timestamp2); + // Use clock.Now() as the packet receipt time, the time between packet + // arriving at the host and now is considered part of the network delay. + now = clock.Now(); + } size_t packets_read = socket_api_.ReadMultiplePackets( fd, BitMask64(QuicUdpPacketInfoBit::DROPPED_PACKETS, @@ -160,8 +169,9 @@ QuicReceivedPacket packet( result.packet_buffer.buffer, result.packet_buffer.buffer_len, - clock.ConvertWallTimeToQuicTime(walltimestamp), /*owns_buffer=*/false, - ttl, has_ttl, headers, headers_length, /*owns_header_buffer=*/false); + use_quic_time ? now : clock.ConvertWallTimeToQuicTime(walltimestamp), + /*owns_buffer=*/false, ttl, has_ttl, headers, headers_length, + /*owns_header_buffer=*/false); QuicSocketAddress self_address(self_ip, port); processor->ProcessPacket(self_address, peer_address, packet);