cURL / Mailing Lists / curl-library / Single Mail

curl-library

Re: About the CURLOPT_TIMEOUT. or CURLOPT_CONNECTTIMEOUT in multi interface

From: Daniel Stenberg <daniel_at_haxx.se>
Date: Sat, 23 Feb 2008 13:13:50 +0100 (CET)

On Sat, 23 Feb 2008, yi xia wrote:

> AND as i know the while(CURLM_CALL_MULTI_PERFORM ==
> curl_multi_perform(_multi_handle, &still_running)); is used to
> do name resolved and connecting jobs.

I'm not sure I get it. curl_multi_perform() does just about everything: from
resolving to connecting to transfering to closing down things.

> this job seems to be the biggest blocking

There are a few operations in libcurl that are still done in a blocking
manner, but our ambition and goal is to get them all fixed eventually. If you
run on a non-windows box without c-ares, I'd say the most notable blocking
behaviour is the name resolving phase.

> can i use CURLOPT_CONNECTTIMEOUT or CURLOPT_TIMEOUT. to realize the timeout?

Yes you can. But not that with the "native" resolver for non-windows, there's
only one way to abort it: with signals. And if you're doing a multi-threaded
program signals are bad for you. Of course most often when you use the multi
interface you may not be multi-threaded.

> As i test, this options can work if i use curl_easy_perform(), but it has no
> effect in curl_multi_perform.

Then it sounds like there's a bug somewhere. Can you provide a small app for
us that reproduces this problem?

-- 
  Commercial curl and libcurl Technical Support: http://haxx.se/curl.html
Received on 2008-02-23