Keep processing files in QPACK offline decoder after encountering failure.

There are two different kinds of issues with the interop encodings checked in to
https://github.com/qpackers/qifs.  For debugging I find it helpful if I can
invoke qpack_offline_decoder once with a very long argument list and it keeps
processing files even if many of them fail.

gfe-relnote: n/a, change to QUIC v99-only code.  Protected by existing disabled gfe2_reloadable_flag_quic_enable_version_99.
PiperOrigin-RevId: 268770474
Change-Id: Ia2a36cd10ebbd7c2d3b87bb62c42a09aec709c02
diff --git a/quic/core/qpack/offline/qpack_offline_decoder_bin.cc b/quic/core/qpack/offline/qpack_offline_decoder_bin.cc
index a4f5373..d72b000 100644
--- a/quic/core/qpack/offline/qpack_offline_decoder_bin.cc
+++ b/quic/core/qpack/offline/qpack_offline_decoder_bin.cc
@@ -24,6 +24,7 @@
   }
 
   size_t i;
+  size_t success_count = 0;
   for (i = 0; 2 * i < args.size(); ++i) {
     const quic::QuicStringPiece input_filename(args[2 * i]);
     const quic::QuicStringPiece expected_headers_filename(args[2 * i + 1]);
@@ -31,14 +32,15 @@
     // Every file represents a different connection,
     // therefore every file needs a fresh decoding context.
     quic::QpackOfflineDecoder decoder;
-    if (!decoder.DecodeAndVerifyOfflineData(input_filename,
-                                            expected_headers_filename)) {
-      return 1;
+    if (decoder.DecodeAndVerifyOfflineData(input_filename,
+                                           expected_headers_filename)) {
+      ++success_count;
     }
   }
 
-  std::cout << "Successfully verified " << i << " pairs of input files."
-            << std::endl;
+  std::cout << "Processed " << i << " pairs of input files, " << success_count
+            << " passed, " << (i - success_count) << " failed." << std::endl;
 
-  return 0;
+  // Return success if all input files pass.
+  return (success_count == i) ? 0 : 1;
 }