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_;