diff --git a/lib/asyn-ares.c b/lib/asyn-ares.c index bb3f4af0b9..3eb769d934 100644 --- a/lib/asyn-ares.c +++ b/lib/asyn-ares.c @@ -280,8 +280,9 @@ void Curl_async_ares_destroy(struct Curl_easy *data) CURLcode Curl_async_pollset(struct Curl_easy *data, struct easy_pollset *ps) { struct async_ares_ctx *ares = &data->state.async.ares; - DEBUGASSERT(ares->channel); - return Curl_ares_pollset(data, ares->channel, ps); + if(ares->channel) + return Curl_ares_pollset(data, ares->channel, ps); + return CURLE_OK; } /* diff --git a/lib/asyn-base.c b/lib/asyn-base.c index c0df7aac5e..eb2240b816 100644 --- a/lib/asyn-base.c +++ b/lib/asyn-base.c @@ -91,6 +91,10 @@ CURLcode Curl_ares_pollset(struct Curl_easy *data, timediff_t milli; CURLcode result = CURLE_OK; + DEBUGASSERT(channel); + if(!channel) + return CURLE_FAILED_INIT; + bitmap = ares_getsock(channel, (ares_socket_t *)sockets, CURL_ARRAYSIZE(sockets)); for(i = 0; i < CURL_ARRAYSIZE(sockets); ++i) { @@ -107,6 +111,8 @@ CURLcode Curl_ares_pollset(struct Curl_easy *data, } timeout = ares_timeout(channel, &maxtime, &timebuf); + if(!timeout) + timeout = &maxtime; milli = curlx_tvtoms(timeout); Curl_expire(data, milli, EXPIRE_ASYNC_NAME); return result;