From: Stefan Eissing Date: Mon, 11 May 2026 12:56:04 +0000 (+0200) Subject: event: fix wakeup consumption X-Git-Tag: rc-8_21_0-1~195 X-Git-Url: http://git.ipfire.org/gitweb/index.cgi?a=commitdiff_plain;h=2a2104f3cff44bb28bb570a093be52bbeeed8f23;p=thirdparty%2Fcurl.git event: fix wakeup consumption The events on a multi wakeup socketpair were only consumed via curl_multi_poll()/curl_multi_wait() but not in event based processing on a curl_multi_socket() call. That led to busy loops as reported in Fixes #21547 Reported-by: Earnestly on github Closes #21549 --- diff --git a/lib/multi.c b/lib/multi.c index be32740a70..5e84133f13 100644 --- a/lib/multi.c +++ b/lib/multi.c @@ -2703,6 +2703,11 @@ static CURLMcode multi_runsingle(struct Curl_multi *multi, Curl_uint32_bset_remove(&multi->dirty, data->mid); if(data == multi->admin) { +#ifdef ENABLE_WAKEUP + /* Consume any pending wakeup signals before processing. + * This is necessary for event based processing. See #21547 */ + (void)Curl_wakeup_consume(multi->wakeup_pair, TRUE); +#endif #ifdef USE_RESOLV_THREADED Curl_async_thrdd_multi_process(multi); #endif