aboutsummaryrefslogtreecommitdiffstats
path: root/plugins
diff options
context:
space:
mode:
authorDavid Woodhouse <David.Woodhouse@intel.com>2010-12-07 11:39:06 +0000
committerSamuel Ortiz <sameo@linux.intel.com>2010-12-10 12:49:49 +0100
commit76e63e6190e131d1b67aeddfd03b16d0e124224f (patch)
treec941113047b401bfa60f03dd484f82d270a3cba3 /plugins
parent5f0dcce20944a2d798d9bbe8fb0853b55c1ddbe7 (diff)
downloadpacrunner-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.c13
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);