Add `--ignore_errors` option to quic_client.

When running with `--num_requests` any error aborts quic_client invocation. It is inconvenient for one of my test scripts, where requests are hitting multiple hosts and one of them could be unavailable at the moment.

Protected by FLAGS_ignore_errors.

PiperOrigin-RevId: 536496328
diff --git a/quiche/quic/tools/quic_toy_client.cc b/quiche/quic/tools/quic_toy_client.cc
index 21c85d7..4230ab3 100644
--- a/quiche/quic/tools/quic_toy_client.cc
+++ b/quiche/quic/tools/quic_toy_client.cc
@@ -147,6 +147,10 @@
     int32_t, num_requests, 1,
     "How many sequential requests to make on a single connection.");
 
+DEFINE_QUICHE_COMMAND_LINE_FLAG(bool, ignore_errors, false,
+                                "If true, ignore connection/response errors "
+                                "and send all num_requests anyway.");
+
 DEFINE_QUICHE_COMMAND_LINE_FLAG(
     bool, disable_certificate_verification, false,
     "If true, don't verify the server certificate.");
@@ -504,7 +508,9 @@
       std::cerr << "Request caused connection failure. Error: "
                 << quic::QuicErrorCodeToString(client->session()->error())
                 << std::endl;
-      return 1;
+      if (!quiche::GetQuicheCommandLineFlag(FLAGS_ignore_errors)) {
+        return 1;
+      }
     }
 
     int response_code = client->latest_response_code();
@@ -517,11 +523,15 @@
       } else {
         std::cout << "Request failed (redirect " << response_code << ")."
                   << std::endl;
-        return 1;
+        if (!quiche::GetQuicheCommandLineFlag(FLAGS_ignore_errors)) {
+          return 1;
+        }
       }
     } else {
       std::cout << "Request failed (" << response_code << ")." << std::endl;
-      return 1;
+      if (!quiche::GetQuicheCommandLineFlag(FLAGS_ignore_errors)) {
+        return 1;
+      }
     }
 
     if (i + 1 < num_requests) {  // There are more requests to perform.
@@ -536,7 +546,9 @@
         if (!client->Connect()) {
           std::cerr << "Failed to reconnect client between requests."
                     << std::endl;
-          return 1;
+          if (!quiche::GetQuicheCommandLineFlag(FLAGS_ignore_errors)) {
+            return 1;
+          }
         }
       } else if (!quiche::GetQuicheCommandLineFlag(
                      FLAGS_disable_port_changes)) {