Set `header_decoding_delay_` before calling methods.
In QuicSpdyStream::OnHeadersDecoded(), set `header_decoding_delay_` before
calling Http3DebugVisitor::OnHeadersDecoded() and OnStreamHeaderList(), to allow
subclasses to record decoding delay, for example, in an
OnInitialHeadersComplete() override.
PiperOrigin-RevId: 642265512
diff --git a/quiche/quic/core/http/quic_spdy_stream.cc b/quiche/quic/core/http/quic_spdy_stream.cc
index 1634202..7637c4c 100644
--- a/quiche/quic/core/http/quic_spdy_stream.cc
+++ b/quiche/quic/core/http/quic_spdy_stream.cc
@@ -577,19 +577,9 @@
/* is_sent = */ false, headers.compressed_header_bytes(),
headers.uncompressed_header_bytes());
- Http3DebugVisitor* const debug_visitor = spdy_session()->debug_visitor();
- if (debug_visitor) {
- debug_visitor->OnHeadersDecoded(id(), headers);
- }
-
- OnStreamHeaderList(/* fin = */ false, headers_payload_length_, headers);
-
header_decoding_delay_ = QuicTime::Delta::Zero();
if (blocked_on_decoding_headers_) {
- blocked_on_decoding_headers_ = false;
- // Continue decoding HTTP/3 frames.
- OnDataAvailable();
const QuicTime now = session()->GetClock()->ApproximateNow();
if (!header_block_received_time_.IsInitialized() ||
now < header_block_received_time_) {
@@ -598,6 +588,19 @@
header_decoding_delay_ = now - header_block_received_time_;
}
}
+
+ Http3DebugVisitor* const debug_visitor = spdy_session()->debug_visitor();
+ if (debug_visitor) {
+ debug_visitor->OnHeadersDecoded(id(), headers);
+ }
+
+ OnStreamHeaderList(/* fin = */ false, headers_payload_length_, headers);
+
+ if (blocked_on_decoding_headers_) {
+ blocked_on_decoding_headers_ = false;
+ // Continue decoding HTTP/3 frames.
+ OnDataAvailable();
+ }
}
void QuicSpdyStream::OnHeaderDecodingError(QuicErrorCode error_code,