]> git.ipfire.org Git - thirdparty/curl.git/commitdiff
vquic: fix idle-timeout checks (ngtcp2 ms<-->ns), 64-bit log & honor 0=no-timeout...
authorJoshua Rogers <MegaManSec@users.noreply.github.com>
Tue, 7 Oct 2025 05:34:26 +0000 (13:34 +0800)
committerDaniel Stenberg <daniel@haxx.se>
Tue, 7 Oct 2025 10:06:26 +0000 (12:06 +0200)
Closes #18903

lib/vquic/curl_ngtcp2.c
lib/vquic/curl_osslq.c

index f397ec85aecf275e6b468449a17fc1e5b0a51693..9851a087c1b14ec2f97425a9dbba1d1f2cd7ab85 100644 (file)
@@ -2744,8 +2744,9 @@ static bool cf_ngtcp2_conn_is_alive(struct Curl_cfilter *cf,
    * it will close the connection when it expires. */
   rp = ngtcp2_conn_get_remote_transport_params(ctx->qconn);
   if(rp && rp->max_idle_timeout) {
-    timediff_t idletime = curlx_timediff(curlx_now(), ctx->q.last_io);
-    if(idletime > 0 && (uint64_t)idletime > rp->max_idle_timeout)
+    timediff_t idletime_ms = curlx_timediff(curlx_now(), ctx->q.last_io);
+    if(idletime_ms > 0 &&
+      ((uint64_t)idletime_ms * NGTCP2_MILLISECONDS) > rp->max_idle_timeout)
       goto out;
   }
 
index cda239a57d8426b638161499147575d57ccb1699..474ed595cb66597e22e725f6eef179485ae326db 100644 (file)
@@ -2251,10 +2251,11 @@ static bool cf_osslq_conn_is_alive(struct Curl_cfilter *cf,
                   "assume connection is dead.");
       goto out;
     }
-    CURL_TRC_CF(data, cf, "negotiated idle timeout: %zums", (size_t)idle_ms);
+    CURL_TRC_CF(data, cf, "negotiated idle timeout: %" FMT_PRIu64 "ms",
+                (curl_uint64_t)idle_ms);
     idletime = curlx_timediff(curlx_now(), ctx->q.last_io);
-    if(idletime > 0 && (uint64_t)idletime > idle_ms)
-      goto out;
+    if(idle_ms != 0 && idletime > 0 && (uint64_t)idletime > idle_ms)
+       goto out;
   }
 
 #endif