aboutsummaryrefslogtreecommitdiff
path: root/lib/hostasyn.c
diff options
context:
space:
mode:
Diffstat (limited to 'lib/hostasyn.c')
-rw-r--r--lib/hostasyn.c20
1 files changed, 19 insertions, 1 deletions
diff --git a/lib/hostasyn.c b/lib/hostasyn.c
index 7d35fa0e7..7a65cb1b8 100644
--- a/lib/hostasyn.c
+++ b/lib/hostasyn.c
@@ -73,6 +73,24 @@
#ifdef CURLRES_ASYNCH
/*
+ * Cancel all possibly still on-going resolves for this connection.
+ */
+void Curl_async_cancel(struct connectdata *conn)
+{
+ /* If we have a "half" response already received, we first clear that off
+ so that nothing is tempted to use it */
+ if(conn->async.temp_ai) {
+ Curl_freeaddrinfo(conn->async.temp_ai);
+ conn->async.temp_ai = NULL;
+ }
+
+ /* for ares-using, make sure all possible outstanding requests are properly
+ cancelled before we proceed */
+ ares_cancel(conn->data->state.areschannel);
+}
+
+
+/*
* Curl_addrinfo_callback() gets called by ares, gethostbyname_thread()
* or getaddrinfo_thread() when we got the name resolved (or not!).
*
@@ -82,7 +100,7 @@
*
* The storage operation locks and unlocks the DNS cache.
*/
-CURLcode Curl_addrinfo_callback(struct connectdata * conn,
+CURLcode Curl_addrinfo_callback(struct connectdata *conn,
int status,
struct Curl_addrinfo *ai)
{