diff options
author | David Woodhouse <David.Woodhouse@intel.com> | 2010-12-07 11:39:06 +0000 |
---|---|---|
committer | Samuel Ortiz <sameo@linux.intel.com> | 2010-12-10 12:49:49 +0100 |
commit | 76e63e6190e131d1b67aeddfd03b16d0e124224f (patch) | |
tree | c941113047b401bfa60f03dd484f82d270a3cba3 /plugins | |
parent | 5f0dcce20944a2d798d9bbe8fb0853b55c1ddbe7 (diff) | |
download | pacrunner-76e63e6190e131d1b67aeddfd03b16d0e124224f.tar.gz |
curl: Handle CURLM_CALL_MULTI_SOCKET return value correctly
We're supposed to loop...
Diffstat (limited to 'plugins')
-rw-r--r-- | plugins/curl.c | 13 |
1 files changed, 11 insertions, 2 deletions
diff --git a/plugins/curl.c b/plugins/curl.c index 5fcf1c5..41c4e2c 100644 --- a/plugins/curl.c +++ b/plugins/curl.c @@ -118,7 +118,11 @@ static gboolean event_callback(GIOChannel *channel, if (condition & G_IO_OUT) action |= CURL_CSELECT_OUT; - result = curl_multi_socket_action(multi, sockfd, action, &handles); + do { + result = curl_multi_socket_action(multi, sockfd, action, &handles); + DBG("curl_multi_socket_action returns %d", result); + + } while (result == CURLM_CALL_MULTI_SOCKET); check_sockets(multi, result, handles); @@ -194,9 +198,14 @@ static gboolean timeout_callback(gpointer user_data) CURLMcode result; int handles; + DBG(""); + timeout_source = 0; - result = curl_multi_socket_all(multi, &handles); + do { + result = curl_multi_socket_all(multi, &handles); + DBG("curl_multi_socket_all returns %d", result); + } while (result == CURLM_CALL_MULTI_SOCKET); check_sockets(multi, result, handles); |