From: Carlo Wood Date: Sun, 2 Nov 2014 13:09:00 +0000 (+0100) Subject: Curl_single_getsock: fix hold/pause sock handling X-Git-Tag: curl-7_39_0~18 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=15c4d51d39ef8be29005fef58a0bb4d5c84796d5;p=curl Curl_single_getsock: fix hold/pause sock handling The previous condition that checked if the socket was marked as readable when also adding a writable one, was incorrect and didn't take the pause bits properly into account. --- diff --git a/lib/transfer.c b/lib/transfer.c index 6d4ad43fa..b48dfce84 100644 --- a/lib/transfer.c +++ b/lib/transfer.c @@ -1214,10 +1214,10 @@ int Curl_single_getsock(const struct connectdata *conn, if((data->req.keepon & KEEP_SENDBITS) == KEEP_SEND) { if((conn->sockfd != conn->writesockfd) || - !(data->req.keepon & KEEP_RECV)) { - /* only if they are not the same socket or we didn't have a readable + bitmap == GETSOCK_BLANK) { + /* only if they are not the same socket and we have a readable one, we increase index */ - if(data->req.keepon & KEEP_RECV) + if(bitmap != GETSOCK_BLANK) sockindex++; /* increase index if we need two entries */ DEBUGASSERT(conn->writesockfd != CURL_SOCKET_BAD);