lib/multi.c | 17 ++++++++++++++++- 1 files changed, 16 insertions(+), 1 deletions(-) diff --git a/lib/multi.c b/lib/multi.c index 476cb81..74eb0f4 100644 --- a/lib/multi.c +++ b/lib/multi.c @@ -933,9 +933,16 @@ static CURLMcode multi_runsingle(struct Curl_multi *multi, easy->result = addHandleToSendOrPendPipeline(easy->easy_handle, easy->easy_conn); if(CURLE_OK == easy->result) { - if(async) + if(async) { /* We're now waiting for an asynchronous name lookup */ multistate(easy, CURLM_STATE_WAITRESOLVE); +#ifdef USE_THREADS_POSIX + /* Curl_resolv_getsock() is not properly implemented in case + * we use POSIX threaded DNS resolver, we have to hang */ + result = CURLM_CALL_MULTI_PERFORM; + break; +#endif + } else { /* after the connect has been sent off, go WAITCONNECT unless the protocol connect is already done and we can go directly to @@ -1003,6 +1010,14 @@ static CURLMcode multi_runsingle(struct Curl_multi *multi, disconnect_conn = TRUE; break; } +#ifdef USE_THREADS_POSIX + /* Curl_resolv_getsock() is not properly implemented yet in case + * we use POSIX threaded DNS resolver, we have to hang */ + Curl_socket_ready(CURL_SOCKET_BAD, CURL_SOCKET_BAD, 100 /* ms */); + result = CURLM_CALL_MULTI_PERFORM; + break; +#endif + } break;