if (Runtime::runtimeFeatureEnabled("envoy.reloadable_features.use_response_decoder_handle")) {
// Headers are now validated by UHV before encoding by the codec. Two checks below are not needed
// From when the callback got scheduled till now, readDisable() might have blocked and unblocked
// state of read_disable_counter_ determines whether to unblock or block the quic stream. Unlike
// Envoy readDisable() the quic stream gets blocked/unblocked based on the most recent call. So a
// stream will be blocked upon SetBlockedUntilFlush() no matter how many times SetUnblocked() was
// In case the status is invalid or missing, the response_decoder_.decodeHeaders() will fail the
// If both directions are closed but end stream hasn't been encoded yet, notify reset callbacks.
bool skip_decoding = (buffer->length() == 0 && !fin_read_and_no_trailers) || end_stream_decoded_;
ENVOY_STREAM_LOG(debug, "received reset code={}", *this, static_cast<int>(frame.error_code));
ENVOY_STREAM_LOG(debug, "sending reset code={}", *this, static_cast<int>(error.internal_code()));
filterManagerConnection()->incrementSentQuicResetStreamErrorStats(error, /*from_self*/ true,
Network::Connection* EnvoyQuicClientStream::connection() { return filterManagerConnection(); }