cURL / Mailing Lists / curl-library / Single Mail


Re: CURLM_CALL_MULTI_PERFORM and curl_multi_socket

From: Daniel Stenberg <>
Date: Mon, 2 Jun 2008 08:46:51 +0200 (CEST)

On Sun, 1 Jun 2008, Nathan E. Moore wrote:

> 1) I call curl_multi_socket with socket=28 (number is irrelevant)
> 2) curl calls my socket callback to remove socket=28
> 3) curl_multi_socket returns CURLM_CALL_MULTI_PERFORM
> 4) I call curl_multi_socket with the same arguments as in 1
> 5a) curl_multi_socket reuturns CURLM_BAD_SOCKET (7.18.1 behavior)
> 5b) curl treats my call with a unknown socket just as I had called with
> CURL_SOCKET_TIMEOUT (cvs behavior)

Aaaah, right. I wonder if that was what I got as well, but misdiagnosed...
Still, I believe my fix is still the right one as it makes the API easier to
work with.

> Is curl_multi_socket returning CURLM_CALL_MULTI_PERFORM after removing the
> socket it is acting on the expected behavior?

Well, CURLM_CALL_MULTI_PERFORM is returned when there is more stuff to work on
and that can of course concern any of the sockets libcurl is currently working
with. Not just the specific one passed in as an argument. Otherwise we'd risk
that it takes too long time until it gets called again.

> What are the correct argument to use with curl_multi_socket when you get a
> return value of CURL_CALL_MULTI_PERFORM?

My intention has always been that you should be able to call it again with the
same arguments.

Received on 2008-06-02