From 95bd901efe8c41bbfe7fa80c1c440c84dfe60fe1 Mon Sep 17 00:00:00 2001 From: Daniel Stenberg Date: Sat, 22 Mar 2008 22:00:21 +0000 Subject: - Fixed the problem with doing a zero byte SCP transfer, verified with test case 617 (which was added by Daniel Fandrich 5 Mar 2008). --- lib/transfer.c | 26 +++++++++++++++++--------- 1 file changed, 17 insertions(+), 9 deletions(-) (limited to 'lib') diff --git a/lib/transfer.c b/lib/transfer.c index 9918a015d..0856d2a55 100644 --- a/lib/transfer.c +++ b/lib/transfer.c @@ -397,18 +397,26 @@ CURLcode Curl_readwrite(struct connectdata *conn, bytestoread = (size_t)totalleft; } - /* receive data from the network! */ - readrc = Curl_read(conn, conn->sockfd, k->buf, bytestoread, &nread); + if(bytestoread) { + /* receive data from the network! */ + readrc = Curl_read(conn, conn->sockfd, k->buf, bytestoread, &nread); - /* subzero, this would've blocked */ - if(0 > readrc) - break; /* get out of loop */ + /* subzero, this would've blocked */ + if(0 > readrc) + break; /* get out of loop */ - /* get the CURLcode from the int */ - result = (CURLcode)readrc; + /* get the CURLcode from the int */ + result = (CURLcode)readrc; - if(result>0) - return result; + if(result>0) + return result; + } + else { + /* read nothing but since we wanted nothing we consider this an OK + situation to proceed from */ + nread = 0; + result = CURLE_OK; + } if((k->bytecount == 0) && (k->writebytecount == 0)) { Curl_pgrsTime(data, TIMER_STARTTRANSFER); -- cgit v1.2.3