Support idle_timeout of 0 in QUIC TLS

gfe-relnote: When a QUIC TLS peer specifies idle_timeout of 0, use the max idle timeout. Protected by disabled flag quic_supports_tls_handshake
PiperOrigin-RevId: 246252860
Change-Id: I3dd2ac0622efd019f586940ececd64b4baa60454
diff --git a/quic/core/quic_config.cc b/quic/core/quic_config.cc
index b106f41..4880c6d 100644
--- a/quic/core/quic_config.cc
+++ b/quic/core/quic_config.cc
@@ -810,7 +810,11 @@
   // Intentionally round down to probe too often rather than not often enough.
   uint64_t idle_timeout_seconds =
       params.idle_timeout_milliseconds.value() / kNumMillisPerSecond;
-  if (idle_timeout_seconds > kMaximumIdleTimeoutSecs) {
+  // An idle timeout of zero indicates it is disabled (in other words, it is
+  // set to infinity). When the idle timeout is very high, we set it to our
+  // preferred maximum and still probe that often.
+  if (idle_timeout_seconds > kMaximumIdleTimeoutSecs ||
+      idle_timeout_seconds == 0) {
     idle_timeout_seconds = kMaximumIdleTimeoutSecs;
   }
   QuicErrorCode error = idle_network_timeout_seconds_.ReceiveValue(