From: Stefan Eissing Date: Tue, 22 Apr 2025 13:23:36 +0000 (+0200) Subject: connect: shutdown timer fix X-Git-Tag: curl-8_14_0~248 X-Git-Url: http://git.ipfire.org/gitweb/gitweb.cgi?a=commitdiff_plain;h=2a25abeaf1eb9f540ebda277a3a7c85d19e83979;p=thirdparty%2Fcurl.git 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 --- 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); }