]> git.ipfire.org Git - thirdparty/curl.git/commitdiff
async-thread: avoid closing eventfd twice
authorAndy Pan <i@andypan.me>
Thu, 12 Dec 2024 12:48:56 +0000 (12:48 +0000)
committerDaniel Stenberg <daniel@haxx.se>
Thu, 12 Dec 2024 14:58:47 +0000 (15:58 +0100)
When employing eventfd for socketpair, there is only one file
descriptor. Closing that fd twice might result in fd corruption.
Thus, we should avoid closing the eventfd twice, following the
pattern in lib/multi.c.

Fixes #15725
Closes #15727
Reported-by: Christian Heusel
lib/asyn-thread.c

index a58e4b790494abc2c52676111726f72027df7a76..32d496b107cb0a0acf11a7ca5a74d84fda58493a 100644 (file)
@@ -195,9 +195,11 @@ void destroy_thread_sync_data(struct thread_sync_data *tsd)
    * close one end of the socket pair (may be done in resolver thread);
    * the other end (for reading) is always closed in the parent thread.
    */
+#ifndef USE_EVENTFD
   if(tsd->sock_pair[1] != CURL_SOCKET_BAD) {
     wakeup_close(tsd->sock_pair[1]);
   }
+#endif
 #endif
   memset(tsd, 0, sizeof(*tsd));
 }