]> git.ipfire.org Git - thirdparty/curl.git/commit
multi: process pending, one by one
authorStefan Eissing <stefan@eissing.org>
Mon, 28 Jul 2025 09:37:26 +0000 (11:37 +0200)
committerDaniel Stenberg <daniel@haxx.se>
Mon, 28 Jul 2025 20:57:42 +0000 (22:57 +0200)
commit85e18a5b9a60109d139e702c9c1028fa6ff4366e
treefbee78144136b7212099db98a33b3db9a735a984
parent9d2075bdce1234360bd41a9146ab9b465750a840
multi: process pending, one by one

Before curl 8.14.0, when pending was a list, `process_pending_handles()`
move a single transfer to processing. In 8.14.0 we changed that to move
all pending transfers to processing. This lead to unwanted performance
drops as reported in #18017.

Restore the old behaviour.

While the old behviour is better, the overall handling of "pending"
transfers is not optimal, since we do not keep track of the "condition"
a pending transfer is waiting on. This means, when moving a single,
pending transfer, we might move one that still cannot be processed while
another that could is kept pending.

Since we trigger `process_pending_handles()` from various changes, the
stalled pending will eventually make it to the processing queue, but
this is not optimal.

Fixes #18017
Reported-by: rm-rmonaghan on github
Closes #18056
lib/multi.c