Commit 49f3160d authored by Daniel Stenberg's avatar Daniel Stenberg
Browse files

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.
parent e78e5840
Loading
Loading
Loading
Loading
+6 −0
Original line number Diff line number Diff line
@@ -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
+2 −1
Original line number Diff line number Diff line
@@ -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)
+1 −1
Original line number Diff line number Diff line
@@ -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