fix SFTP download hang

Matt Wixson found and fixed a bug in the SCP/SFTP area where the
code treated a 0 return code from libssh2 to be the same as
EAGAIN while in reality it isn't. The problem caused a hang in
SFTP transfers from a MessageWay server.
This commit is contained in:
Daniel Stenberg 2010-04-01 22:39:15 +02:00
parent e78e584035
commit 49f3160d69
3 changed files with 9 additions and 2 deletions

View File

@ -6,6 +6,12 @@
Changelog
Daniel Stenberg (1 Apr 2010)
- Matt Wixson found and fixed a bug in the SCP/SFTP area where the code
treated a 0 return code from libssh2 to be the same as EAGAIN while in
reality it isn't. The problem caused a hang in SFTP transfers from a
MessageWay server.
Daniel Stenberg (28 Mar 2010)
- Ben Greear: If you pass a URL to pop3 that does not contain a message ID as
part of the URL, it would previously ask for 'INBOX' which just causes the

View File

@ -44,6 +44,7 @@ This release includes the following bugfixes:
o multi interface HTTP POST over a proxy using PROXYTUNNEL
o RTSP GET_PARAMETER
o timeout after last data chunk was handled
o SFTP download hang
This release includes the following known bugs:
@ -57,6 +58,6 @@ advice from friends like these:
Ryan Chan, Markus Duft, Andrei Benea, Jacob Moshenko, Daniel Johnson,
Constantine Sapuntzakis, Douglas Steinwand, Thomas Lopatic, Hauke Duden,
Akos Pasztory, Kenny To, Christopher Conroy, Massimo Callegari,
Bob Richmond
Bob Richmond, Matt Wixson
Thanks! (and sorry if I forgot to mention someone)

View File

@ -549,7 +549,7 @@ int Curl_read(struct connectdata *conn, /* connection data */
else if(conn->protocol & PROT_SFTP)
nread = Curl_sftp_recv(conn, num, buffertofill, bytesfromsocket);
#ifdef LIBSSH2CHANNEL_EAGAIN
if((nread == LIBSSH2CHANNEL_EAGAIN) || (nread == 0))
if(nread == LIBSSH2CHANNEL_EAGAIN)
/* EWOULDBLOCK */
return -1;
#endif