- Fixed the problem with doing a zero byte SCP transfer, verified with test

case 617 (which was added by Daniel Fandrich 5 Mar 2008).
This commit is contained in:
Daniel Stenberg 2008-03-22 22:00:21 +00:00
parent 98c9a5b7f6
commit 95bd901efe
5 changed files with 23 additions and 12 deletions

View File

@ -6,6 +6,10 @@
Changelog
Daniel Stenberg (22 Mar 2008)
- Fixed the problem with doing a zero byte SCP transfer, verified with test
case 617 (which was added by Daniel Fandrich 5 Mar 2008).
Daniel Fandrich (20 Mar 2008)
- Fixed a problem where curl-config --protocols could erroneously show LDAPS
support when curl didn't even have regular LDAP support. It looks like

View File

@ -50,6 +50,7 @@ This release includes the following bugfixes:
o SFTP upload with CURLOPT_FTP_CREATE_MISSING_DIRS on re-used connection
o SFTP infinite loop when given an invalid quote command
o curl-config erroneously reported LDAPS support with missing LDAP libraries
o SCP infinite loop when downloading a zero byte file
This release includes the following known bugs:

View File

@ -3,8 +3,6 @@ To be addressed before 7.18.1 (planned release: April 2008)
[feature freeze entered, no new features!]
126 - scp download 0 bytes, test case 617
127 - Dan Petitt's Progress During Large Posts problem
128 - Phil Blundell's ares and ipv6 fix

View File

@ -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);

View File

@ -3,4 +3,4 @@
# test cases are run by runtests.pl. Just add the plain test case numbers, one
# per line.
# Lines starting with '#' letters are treated as comments.
617