From a05ea124b94475a86542d476977519dcb0518c59 Mon Sep 17 00:00:00 2001 From: Daniel Stenberg Date: Fri, 9 Jun 2006 07:08:34 +0000 Subject: [PATCH] oops, serious breakage in the fdset() function --- lib/transfer.c | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/lib/transfer.c b/lib/transfer.c index bb43c4da9..4aa94364b 100644 --- a/lib/transfer.c +++ b/lib/transfer.c @@ -1570,11 +1570,12 @@ int Curl_single_getsock(struct connectdata *conn, } if(conn->keep.keepon & KEEP_WRITE) { - if((conn->sockfd != conn->writesockfd) && - (conn->keep.keepon & KEEP_READ)) { - /* only if they are not the same socket and we had a readable one, - we increase index */ - index++; + if((conn->sockfd != conn->writesockfd) || + !(conn->keep.keepon & KEEP_READ)) { + /* only if they are not the same socket or we didn't have a readable + one, we increase index */ + if(conn->keep.keepon & KEEP_READ) + index++; /* increase index if we need two entries */ sock[index] = conn->writesockfd; }