]> granicus.if.org Git - curl/commitdiff
fix SFTP download hang
authorDaniel Stenberg <daniel@haxx.se>
Thu, 1 Apr 2010 20:39:15 +0000 (22:39 +0200)
committerDaniel Stenberg <daniel@haxx.se>
Thu, 1 Apr 2010 20:39:15 +0000 (22:39 +0200)
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.

CHANGES
RELEASE-NOTES
lib/sendf.c

diff --git a/CHANGES b/CHANGES
index e81a270ff21742be0611c225948466b8e3b1c4d9..e8883c4719092fa1ce96607c3dc3d71aa8635b98 100644 (file)
--- 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
index 743116bc373c07871c446ffc63d7ff61987f52c5..4a0742678aaed6131cf3304acdfd68d457136571 100644 (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)
index 964c9ed62aabd08c08bd7d9d747004c3096f0feb..7f7c2cb9d9ec192dbc0f0e4b543c16380a65b8a6 100644 (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