Remove blocked stream limit enforcement from QpackOfflineDecoder. QpackDecoder enforces the limit on the number of blocked streams since cr/264688336. The logic in QpackOfflineDecoder is now redundant and can be removed. gfe-relnote: n/a, change to QUIC v99-only code. Protected by existing disabled gfe2_reloadable_flag_quic_enable_version_99. PiperOrigin-RevId: 268685048 Change-Id: I0eede2e03f58b15adca1b8a67eaa7f0ffdcdd821
diff --git a/quic/core/qpack/offline/qpack_offline_decoder.cc b/quic/core/qpack/offline/qpack_offline_decoder.cc index c958725..cf62090 100644 --- a/quic/core/qpack/offline/qpack_offline_decoder.cc +++ b/quic/core/qpack/offline/qpack_offline_decoder.cc
@@ -19,7 +19,7 @@ namespace quic { QpackOfflineDecoder::QpackOfflineDecoder() - : encoder_stream_error_detected_(false), max_blocked_streams_(0) {} + : encoder_stream_error_detected_(false) {} bool QpackOfflineDecoder::DecodeAndVerifyOfflineData( QuicStringPiece input_filename, @@ -75,7 +75,8 @@ ++piece_it; // Maximum allowed number of blocked streams. - if (!QuicTextUtils::StringToUint64(*piece_it, &max_blocked_streams_)) { + uint64_t max_blocked_streams = 0; + if (!QuicTextUtils::StringToUint64(*piece_it, &max_blocked_streams)) { QUIC_LOG(ERROR) << "Error parsing part of input filename \"" << *piece_it << "\" as an integer."; return false; @@ -92,7 +93,7 @@ return false; } qpack_decoder_ = std::make_unique<QpackDecoder>( - maximum_dynamic_table_capacity, max_blocked_streams_, this); + maximum_dynamic_table_capacity, max_blocked_streams, this); qpack_decoder_->set_qpack_stream_sender_delegate( &decoder_stream_sender_delegate_); @@ -181,22 +182,6 @@ decoder->headers_handler->ReleaseHeaderList()); decoders_.pop_front(); } - - // Enforce limit on blocked streams. - // TODO(b/112770235): Move this logic to QpackDecoder. - uint64_t blocked_streams_count = 0; - for (const auto& decoder : decoders_) { - if (!decoder.headers_handler->decoding_completed()) { - ++blocked_streams_count; - } - } - - if (blocked_streams_count > max_blocked_streams_) { - QUIC_LOG(ERROR) << "Too many blocked streams: limit is " - << max_blocked_streams_ << ", actual count is " - << blocked_streams_count; - return false; - } } if (!decoders_.empty()) {
diff --git a/quic/core/qpack/offline/qpack_offline_decoder.h b/quic/core/qpack/offline/qpack_offline_decoder.h index dcb8894..c12c491 100644 --- a/quic/core/qpack/offline/qpack_offline_decoder.h +++ b/quic/core/qpack/offline/qpack_offline_decoder.h
@@ -73,7 +73,6 @@ bool encoder_stream_error_detected_; NoopQpackStreamSenderDelegate decoder_stream_sender_delegate_; std::unique_ptr<QpackDecoder> qpack_decoder_; - uint64_t max_blocked_streams_; // Objects necessary for decoding, one list element for each header block. std::list<Decoder> decoders_;