diff --git a/curl-7.20.1-threaded-dns-multi.patch b/curl-7.20.1-threaded-dns-multi.patch new file mode 100644 index 0000000..e7be86e --- /dev/null +++ b/curl-7.20.1-threaded-dns-multi.patch @@ -0,0 +1,40 @@ + 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; + diff --git a/curl.spec b/curl.spec index b6d2051..0f35ff7 100644 --- a/curl.spec +++ b/curl.spec @@ -7,6 +7,9 @@ Group: Applications/Internet Source: http://curl.haxx.se/download/%{name}-%{version}.tar.lzma Source2: curlbuild.h +# experimentally enabled threaded DNS lookup +Patch1: curl-7.20.1-threaded-dns-multi.patch + # patch making libcurl multilib ready (by excluding static libraries) Patch101: curl-7.15.3-multilib.patch @@ -95,6 +98,9 @@ for f in CHANGES README; do mv -f ${f}.utf8 ${f} done +# upstream patches (not yet applied) +%patch1 -p1 + # Fedora patches %patch101 -p1 %patch102 -p1