summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniel Gustafsson <daniel@yesql.se>2019-02-11 13:34:11 +0100
committerDaniel Gustafsson <daniel@yesql.se>2019-02-11 13:34:11 +0100
commite5d574c54fa795a090054e4f825a07d0a516bf0d (patch)
tree62f6251aacc1cdb0cedb36ac8094002ac9c1a1d0
parent3f16990ec84cc4b25e6b765d5cc3217f356681b7 (diff)
downloadcurl-e5d574c54fa795a090054e4f825a07d0a516bf0d.tar.gz
dns: release sharelock as soon as possible
There is no benefit to holding the data sharelock when freeing the addrinfo in case it fails, so ensure releaseing it as soon as we can rather than holding on to it. This also aligns the code with other consumers of sharelocks. Closes #3516 Reviewed-by: Daniel Stenberg <daniel@haxx.se>
-rw-r--r--lib/hostasyn.c8
1 files changed, 4 insertions, 4 deletions
diff --git a/lib/hostasyn.c b/lib/hostasyn.c
index 6ff60ba61..99d872b35 100644
--- a/lib/hostasyn.c
+++ b/lib/hostasyn.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2018, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -85,14 +85,14 @@ CURLcode Curl_addrinfo_callback(struct connectdata *conn,
dns = Curl_cache_addr(data, ai,
conn->async.hostname,
conn->async.port);
+ if(data->share)
+ Curl_share_unlock(data, CURL_LOCK_DATA_DNS);
+
if(!dns) {
/* failed to store, cleanup and return error */
Curl_freeaddrinfo(ai);
result = CURLE_OUT_OF_MEMORY;
}
-
- if(data->share)
- Curl_share_unlock(data, CURL_LOCK_DATA_DNS);
}
else {
result = CURLE_OUT_OF_MEMORY;