Loading lib/hostip.h +6 −0 Original line number Diff line number Diff line Loading @@ -240,6 +240,12 @@ struct Curl_dns_entry * Curl_cache_addr(struct SessionHandle *data, Curl_addrinfo *addr, char *hostname, int port); /* * Curl_destroy_thread_data() cleans up async resolver data. * Complementary of ares_destroy. */ void Curl_destroy_thread_data(struct Curl_async *async); #ifndef INADDR_NONE #define CURL_INADDR_NONE (in_addr_t) ~0 #else Loading lib/hostthre.c +8 −7 Original line number Diff line number Diff line Loading @@ -301,10 +301,10 @@ static unsigned __stdcall getaddrinfo_thread (void *arg) #endif /* * destroy_thread_data() cleans up async resolver data. * Curl_destroy_thread_data() cleans up async resolver data. * Complementary of ares_destroy. */ static void destroy_thread_data (struct Curl_async *async) void Curl_destroy_thread_data (struct Curl_async *async) { if (async->hostname) free(async->hostname); Loading @@ -319,6 +319,7 @@ static void destroy_thread_data (struct Curl_async *async) /* destroy the synchronization objects */ if (td->mutex_waiting) CloseHandle(td->mutex_waiting); td->mutex_waiting = NULL; if (td->event_resolved) CloseHandle(td->event_resolved); Loading Loading @@ -365,7 +366,7 @@ static bool init_resolve_thread (struct connectdata *conn, */ td->mutex_waiting = CreateMutex(NULL, TRUE, NULL); if (td->mutex_waiting == NULL) { destroy_thread_data(&conn->async); Curl_destroy_thread_data(&conn->async); SetLastError(EAGAIN); return FALSE; } Loading @@ -375,7 +376,7 @@ static bool init_resolve_thread (struct connectdata *conn, */ td->event_resolved = CreateEvent(NULL, TRUE, FALSE, NULL); if (td->event_resolved == NULL) { destroy_thread_data(&conn->async); Curl_destroy_thread_data(&conn->async); SetLastError(EAGAIN); return FALSE; } Loading @@ -401,7 +402,7 @@ static bool init_resolve_thread (struct connectdata *conn, if (!td->thread_hnd) { SetLastError(errno); TRACE(("_beginthreadex() failed; %s\n", Curl_strerror(conn,errno))); destroy_thread_data(&conn->async); Curl_destroy_thread_data(&conn->async); return FALSE; } /* This socket is only to keep Curl_resolv_fdset() and select() happy; Loading Loading @@ -508,7 +509,7 @@ CURLcode Curl_wait_for_resolv(struct connectdata *conn, rc = CURLE_OPERATION_TIMEDOUT; } destroy_thread_data(&conn->async); Curl_destroy_thread_data(&conn->async); if(!conn->async.dns) conn->bits.close = TRUE; Loading @@ -528,7 +529,7 @@ CURLcode Curl_is_resolved(struct connectdata *conn, if (conn->async.done) { /* we're done */ destroy_thread_data(&conn->async); Curl_destroy_thread_data(&conn->async); if (!conn->async.dns) { TRACE(("Curl_is_resolved(): CURLE_COULDNT_RESOLVE_HOST\n")); return CURLE_COULDNT_RESOLVE_HOST; Loading lib/url.c +4 −3 Original line number Diff line number Diff line Loading @@ -1503,11 +1503,12 @@ CURLcode Curl_disconnect(struct connectdata *conn) Curl_safefree(conn->allocptr.cookiehost); Curl_safefree(conn->ip_addr_str); #if defined(USE_ARES) || defined(USE_THREADING_GETHOSTBYNAME) || \ defined(USE_THREADING_GETADDRINFO) /* possible left-overs from the async name resolve */ /* possible left-overs from the async name resolvers */ #if defined(USE_ARES) Curl_safefree(conn->async.hostname); Curl_safefree(conn->async.os_specific); #elif defined(CURLRES_THREADED) Curl_destroy_thread_data(&conn->async); #endif Curl_free_ssl_config(&conn->ssl_config); Loading Loading
lib/hostip.h +6 −0 Original line number Diff line number Diff line Loading @@ -240,6 +240,12 @@ struct Curl_dns_entry * Curl_cache_addr(struct SessionHandle *data, Curl_addrinfo *addr, char *hostname, int port); /* * Curl_destroy_thread_data() cleans up async resolver data. * Complementary of ares_destroy. */ void Curl_destroy_thread_data(struct Curl_async *async); #ifndef INADDR_NONE #define CURL_INADDR_NONE (in_addr_t) ~0 #else Loading
lib/hostthre.c +8 −7 Original line number Diff line number Diff line Loading @@ -301,10 +301,10 @@ static unsigned __stdcall getaddrinfo_thread (void *arg) #endif /* * destroy_thread_data() cleans up async resolver data. * Curl_destroy_thread_data() cleans up async resolver data. * Complementary of ares_destroy. */ static void destroy_thread_data (struct Curl_async *async) void Curl_destroy_thread_data (struct Curl_async *async) { if (async->hostname) free(async->hostname); Loading @@ -319,6 +319,7 @@ static void destroy_thread_data (struct Curl_async *async) /* destroy the synchronization objects */ if (td->mutex_waiting) CloseHandle(td->mutex_waiting); td->mutex_waiting = NULL; if (td->event_resolved) CloseHandle(td->event_resolved); Loading Loading @@ -365,7 +366,7 @@ static bool init_resolve_thread (struct connectdata *conn, */ td->mutex_waiting = CreateMutex(NULL, TRUE, NULL); if (td->mutex_waiting == NULL) { destroy_thread_data(&conn->async); Curl_destroy_thread_data(&conn->async); SetLastError(EAGAIN); return FALSE; } Loading @@ -375,7 +376,7 @@ static bool init_resolve_thread (struct connectdata *conn, */ td->event_resolved = CreateEvent(NULL, TRUE, FALSE, NULL); if (td->event_resolved == NULL) { destroy_thread_data(&conn->async); Curl_destroy_thread_data(&conn->async); SetLastError(EAGAIN); return FALSE; } Loading @@ -401,7 +402,7 @@ static bool init_resolve_thread (struct connectdata *conn, if (!td->thread_hnd) { SetLastError(errno); TRACE(("_beginthreadex() failed; %s\n", Curl_strerror(conn,errno))); destroy_thread_data(&conn->async); Curl_destroy_thread_data(&conn->async); return FALSE; } /* This socket is only to keep Curl_resolv_fdset() and select() happy; Loading Loading @@ -508,7 +509,7 @@ CURLcode Curl_wait_for_resolv(struct connectdata *conn, rc = CURLE_OPERATION_TIMEDOUT; } destroy_thread_data(&conn->async); Curl_destroy_thread_data(&conn->async); if(!conn->async.dns) conn->bits.close = TRUE; Loading @@ -528,7 +529,7 @@ CURLcode Curl_is_resolved(struct connectdata *conn, if (conn->async.done) { /* we're done */ destroy_thread_data(&conn->async); Curl_destroy_thread_data(&conn->async); if (!conn->async.dns) { TRACE(("Curl_is_resolved(): CURLE_COULDNT_RESOLVE_HOST\n")); return CURLE_COULDNT_RESOLVE_HOST; Loading
lib/url.c +4 −3 Original line number Diff line number Diff line Loading @@ -1503,11 +1503,12 @@ CURLcode Curl_disconnect(struct connectdata *conn) Curl_safefree(conn->allocptr.cookiehost); Curl_safefree(conn->ip_addr_str); #if defined(USE_ARES) || defined(USE_THREADING_GETHOSTBYNAME) || \ defined(USE_THREADING_GETADDRINFO) /* possible left-overs from the async name resolve */ /* possible left-overs from the async name resolvers */ #if defined(USE_ARES) Curl_safefree(conn->async.hostname); Curl_safefree(conn->async.os_specific); #elif defined(CURLRES_THREADED) Curl_destroy_thread_data(&conn->async); #endif Curl_free_ssl_config(&conn->ssl_config); Loading