diff --git a/packages/web/curl/patches/0108-curl-7.20.1-threaded-dns-multi.diff b/packages/web/curl/patches/0108-curl-7.20.1-threaded-dns-multi.diff new file mode 100644 index 0000000000..30dbccc586 --- /dev/null +++ b/packages/web/curl/patches/0108-curl-7.20.1-threaded-dns-multi.diff @@ -0,0 +1,41 @@ + 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; + +