From: Jiri Hruska Date: Fri, 15 Feb 2013 15:42:49 +0000 (+0100) Subject: Fixed checking the socket if there is data waiting in the cache X-Git-Tag: curl-7_30_0~314 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=296b9a5af0c0de3f5b3d78a85a6ace8cdc9647f1;p=thirdparty%2Fcurl.git Fixed checking the socket if there is data waiting in the cache Use Curl_pp_moredata() in Curl_pp_multi_statemach() to check if there is more data to be received, rather than the socket state, as a task could hang waiting for more data from the socket itself. --- diff --git a/lib/pingpong.c b/lib/pingpong.c index 69834da7d0..ec0047109a 100644 --- a/lib/pingpong.c +++ b/lib/pingpong.c @@ -102,9 +102,13 @@ CURLcode Curl_pp_statemach(struct pingpong *pp, bool block) else interval_ms = 0; /* immediate */ - rc = Curl_socket_ready(pp->sendleft?CURL_SOCKET_BAD:sock, /* reading */ - pp->sendleft?sock:CURL_SOCKET_BAD, /* writing */ - interval_ms); + if(Curl_pp_moredata(pp)) + /* We are receiving and there is data in the cache so just read it */ + rc = 1; + else + rc = Curl_socket_ready(pp->sendleft?CURL_SOCKET_BAD:sock, /* reading */ + pp->sendleft?sock:CURL_SOCKET_BAD, /* writing */ + interval_ms); if(block) { /* if we didn't wait, we don't have to spend time on this now */