From 2a25abeaf1eb9f540ebda277a3a7c85d19e83979 Mon Sep 17 00:00:00 2001 From: Stefan Eissing Date: Tue, 22 Apr 2025 15:23:36 +0200 Subject: [PATCH] connect: shutdown timer fix Fix a bug in timeout handling for connection shutdowns that led to default timeout of 2 seconds not being in effect. Only set the shutdown timeout expiry when operating on a non-admin transfers. Admin handles are only temproarily tied to a connection. Fixes #17130 Reported-by: Rasmus Melchior Jacobsen Closes #17135 --- lib/connect.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/lib/connect.c b/lib/connect.c index 18a592a7a7..a257b656a8 100644 --- a/lib/connect.c +++ b/lib/connect.c @@ -171,11 +171,12 @@ void Curl_shutdown_start(struct Curl_easy *data, int sockindex, nowp = &now; } data->conn->shutdown.start[sockindex] = *nowp; - data->conn->shutdown.timeout_ms = (timeout_ms >= 0) ? + data->conn->shutdown.timeout_ms = (timeout_ms > 0) ? (unsigned int)timeout_ms : ((data->set.shutdowntimeout > 0) ? data->set.shutdowntimeout : DEFAULT_SHUTDOWN_TIMEOUT_MS); - if(data->conn->shutdown.timeout_ms) + /* Set a timer, unless we operate on the admin handle */ + if(data->mid && data->conn->shutdown.timeout_ms) Curl_expire_ex(data, nowp, data->conn->shutdown.timeout_ms, EXPIRE_SHUTDOWN); } -- 2.47.2