]> git.ipfire.org Git - thirdparty/curl.git/commitdiff
asyn-thread: avoid the separate curl_mutex_t alloc
authorDaniel Stenberg <daniel@haxx.se>
Thu, 6 Feb 2025 16:22:36 +0000 (17:22 +0100)
committerDaniel Stenberg <daniel@haxx.se>
Sat, 15 Feb 2025 21:13:56 +0000 (22:13 +0100)
Just make it a part of the thread_sync_data struct.

Closes #16323

lib/asyn-thread.c
lib/asyn.h

index b6cf8dfa832b7ce97d98217d7292b53d8533e0ee..f5a533b34b26cddd339e2d7eef01de228d1f732a 100644 (file)
@@ -158,10 +158,7 @@ static struct thread_sync_data *conn_thread_sync_data(struct Curl_easy *data)
 static
 void destroy_thread_sync_data(struct thread_sync_data *tsd)
 {
-  if(tsd->mtx) {
-    Curl_mutex_destroy(tsd->mtx);
-    free(tsd->mtx);
-  }
+  Curl_mutex_destroy(&tsd->mutx);
 
   free(tsd->hostname);
 
@@ -206,11 +203,7 @@ int init_thread_sync_data(struct thread_data *td,
   (void) hints;
 #endif
 
-  tsd->mtx = malloc(sizeof(curl_mutex_t));
-  if(!tsd->mtx)
-    goto err_exit;
-
-  Curl_mutex_init(tsd->mtx);
+  Curl_mutex_init(&tsd->mutx);
 
 #ifndef CURL_DISABLE_SOCKETPAIR
   /* create socket pair or pipe */
@@ -291,10 +284,10 @@ CURL_STDCALL getaddrinfo_thread(void *arg)
     Curl_addrinfo_set_port(tsd->res, tsd->port);
   }
 
-  Curl_mutex_acquire(tsd->mtx);
+  Curl_mutex_acquire(&tsd->mutx);
   if(tsd->done) {
     /* too late, gotta clean up the mess */
-    Curl_mutex_release(tsd->mtx);
+    Curl_mutex_release(&tsd->mutx);
     destroy_thread_sync_data(tsd);
   }
   else {
@@ -313,7 +306,7 @@ CURL_STDCALL getaddrinfo_thread(void *arg)
     }
 #endif
     tsd->done = TRUE;
-    Curl_mutex_release(tsd->mtx);
+    Curl_mutex_release(&tsd->mutx);
   }
 
   return 0;
@@ -382,10 +375,10 @@ static void destroy_async_data(struct Curl_easy *data)
      * if the thread is still blocking in the resolve syscall, detach it and
      * let the thread do the cleanup...
      */
-    Curl_mutex_acquire(td->tsd.mtx);
+    Curl_mutex_acquire(&td->tsd.mutx);
     done = td->tsd.done;
     td->tsd.done = TRUE;
-    Curl_mutex_release(td->tsd.mtx);
+    Curl_mutex_release(&td->tsd.mutx);
 
     if(!done) {
       Curl_thread_destroy(td->thread_hnd);
@@ -588,9 +581,9 @@ CURLcode Curl_resolver_is_resolved(struct Curl_easy *data,
     return CURLE_UNRECOVERABLE_POLL;
 #endif
 
-  Curl_mutex_acquire(td->tsd.mtx);
+  Curl_mutex_acquire(&td->tsd.mutx);
   done = td->tsd.done;
-  Curl_mutex_release(td->tsd.mtx);
+  Curl_mutex_release(&td->tsd.mutx);
 
   if(done) {
     getaddrinfo_complete(data);
index 21b01fe984eabda30f109811fc5b91348abd8833..6e8e2debde70335a62353ca2abce55b4e4e83c28 100644 (file)
@@ -39,9 +39,9 @@ struct Curl_dns_entry;
 
 /* Data for synchronization between resolver thread and its parent */
 struct thread_sync_data {
-  curl_mutex_t *mtx;
   char *hostname;        /* hostname to resolve, Curl_async.hostname
                             duplicate */
+  curl_mutex_t mutx;
 #ifndef CURL_DISABLE_SOCKETPAIR
   curl_socket_t sock_pair[2]; /* eventfd/pipes/socket pair */
 #endif