curl-and-python

socket_action fails because of unhandled return value

From: Jacob Kristhammar <kristhammar_at_gmail.com>
Date: Sun, 22 Nov 2009 21:56:20 +0100

Hi,

I'm trying to use the multi interface together with epoll to implement a simple HTTP client.
Most of the time it works really well but every once in a while i get the following error:

Traceback (most recent call last):
  File "/home/user/tornado/ioloop.py", line 238, in _run_callback
    callback()
  File "/home/user/tornado/httpclient2.py", line 148, in _handle_timeout
    pycurl.SOCKET_TIMEOUT, 0)
error: (-1, 'multi_socket_action failed')

To me it looks like multi_socket_action gets a CURLM_CALL_MULTI_PERFORM return value which it can't handle. (pycurl will raise an error if the return value is anything but CURLM_OK)

The libcurl docs contain the following phrase:
"In modern libcurls, CURLM_CALL_MULTI_PERFORM or CURLM_CALL_MULTI_SOKCET should not be returned and no application needs to care about them."

What does modern refer to, is 7.18.2 considered modern?

If so, what else might cause multi_socket_action to return CURLM_CALL_MULTI_PERFORM)?

BR,
Jacob
_______________________________________________
http://cool.haxx.se/cgi-bin/mailman/listinfo/curl-and-python
Received on 2009-11-22