summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniel Stenberg <daniel@haxx.se>2010-04-01 22:39:15 +0200
committerDaniel Stenberg <daniel@haxx.se>2010-04-01 22:39:15 +0200
commit49f3160d69a9e568efdc370ac417841680c0b355 (patch)
tree07d516589bb3a4acb8a082bb73fd9f272d1d1795
parente78e584035df0edb202658dfda1ee22478e14e52 (diff)
downloadcurl-49f3160d69a9e568efdc370ac417841680c0b355.tar.gz
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.
-rw-r--r--CHANGES6
-rw-r--r--RELEASE-NOTES3
-rw-r--r--lib/sendf.c2
3 files changed, 9 insertions, 2 deletions
diff --git a/CHANGES b/CHANGES
index e81a270ff..e8883c471 100644
--- a/CHANGES
+++ b/CHANGES
@@ -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
diff --git a/RELEASE-NOTES b/RELEASE-NOTES
index 743116bc3..4a0742678 100644
--- a/RELEASE-NOTES
+++ b/RELEASE-NOTES
@@ -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)
diff --git a/lib/sendf.c b/lib/sendf.c
index 964c9ed62..7f7c2cb9d 100644
--- a/lib/sendf.c
+++ b/lib/sendf.c
@@ -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