]> git.ipfire.org Git - thirdparty/curl.git/commitdiff
multi.c: warn/assert on stall only without timer
authorStefan Eissing <stefan@eissing.org>
Tue, 24 Sep 2024 11:06:03 +0000 (13:06 +0200)
committerDaniel Stenberg <daniel@haxx.se>
Tue, 24 Sep 2024 21:49:04 +0000 (23:49 +0200)
Warn/assert about a possibly stalling transfer only when it
has no timeout set.

The assertion triggered in test 1540 on loaded CI sometimes.

Closes #15028

lib/multi.c

index d4097d24e53483411c5f4641822352dcae2b8fa0..27b8ef30753b31f2157f37ad28a4c5fc39d4b077 100644 (file)
@@ -1125,10 +1125,14 @@ static void multi_getsock(struct Curl_easy *data,
   }
 
   if(expect_sockets && !ps->num &&
-     !(data->req.keepon & (KEEP_RECV_PAUSE|KEEP_SEND_PAUSE)) &&
+     !Curl_llist_count(&data->state.timeoutlist) &&
      !Curl_cwriter_is_paused(data) && !Curl_creader_is_paused(data) &&
      Curl_conn_is_ip_connected(data, FIRSTSOCKET)) {
-    infof(data, "WARNING: no socket in pollset, transfer may stall!");
+    /* We expected sockets for POLL monitoring, but none are set.
+     * We are not waiting on any timer.
+     * None of the READ/WRITE directions are paused.
+     * We are connected to the server on IP level, at least. */
+    infof(data, "WARNING: no socket in pollset or timer, transfer may stall!");
     DEBUGASSERT(0);
   }
 }