]> git.ipfire.org Git - thirdparty/curl.git/commit
curl_multi_poll: a sister to curl_multi_wait() that waits more
authorDaniel Stenberg <daniel@haxx.se>
Mon, 29 Jul 2019 11:41:00 +0000 (13:41 +0200)
committerDaniel Stenberg <daniel@haxx.se>
Tue, 6 Aug 2019 07:33:29 +0000 (09:33 +0200)
commit02346abc32a3995299fa9c2f35b9f0a1d091b045
treede504a328c326fc2ebef7265ddf4de7456fd56be
parentcee7639b790f29113759f69c4a955c2ead8bff31
curl_multi_poll: a sister to curl_multi_wait() that waits more

Repeatedly we see problems where using curl_multi_wait() is difficult or
just awkward because if it has no file descriptor to wait for
internally, it returns immediately and leaves it to the caller to wait
for a small amount of time in order to avoid occasional busy-looping.

This is often missed or misunderstood, leading to underperforming
applications.

This change introduces curl_multi_poll() as a replacement drop-in
function that accepts the exact same set of arguments. This function
works identically to curl_multi_wait() - EXCEPT - for the case when
there's nothing to wait for internally, as then this function will by
itself wait for a "suitable" short time before it returns. This
effectiely avoids all risks of busy-looping and should also make it less
likely that apps "over-wait".

This also changes the curl tool to use this funtion internally when
doing parallel transfers and changes curl_easy_perform() to use it
internally.

Closes #4163
docs/libcurl/Makefile.inc
docs/libcurl/curl_multi_poll.3 [new file with mode: 0644]
include/curl/multi.h
lib/Makefile.am
lib/easy.c
lib/multi.c
lib/multiif.h
src/tool_operate.c
tests/data/test1135