Change #261817
| Category | curl |
| Changed by | Stefan Eissing <stefan@eissing.org> |
| Changed at | Sat 21 Mar 2026 11:58:24 |
| Repository | https://github.com/curl/curl.git |
| Project | curl |
| Branch | master |
| Revision | 9bc8b078eb104426f582f95e5e8b1e7a39e79608 |
Comments
multi: improve wakeup and wait code - Split WINSOCK and POSIX code in `multi_wait()` as the ifdef'ery was becoming unreadable - define `ENABLE_WAKEUP` to mean the wakeup socketpair is enabled, no additional USE_WINSOCK check needed. Under WINSOCK `ENABLE_WAKEUP` is not defined, so it's availability is as before under the double defined() checks - When the multi handle has "alive" transfers, the admin handle's pollset include the wakeup receive socket. This results in the admin handle running when someone uses `curl_multi_wakeup()`. - Without any "alive" transfers, the wakeup socket is removed from the pollset. Otherwise, event based processing would never finish, eg. leave the event loop. - The wakeup socket was never registered for event processing before, e.g. `curl_multi_wakeup()` never worked in that mode. - Adjust test exepectations on socket callback invocations and number of sockets appearing in waitfds sets. Closes #20832
Changed files
- lib/multi.c
- lib/multi_ev.c
- lib/multihandle.h
- tests/http/test_19_shutdown.py
- tests/libtest/lib2405.c
- tests/libtest/lib530.c
- tests/libtest/lib758.c