diff options
-rw-r--r-- | CHANGES | 6 | ||||
-rw-r--r-- | RELEASE-NOTES | 6 | ||||
-rw-r--r-- | lib/transfer.c | 5 |
3 files changed, 14 insertions, 3 deletions
@@ -6,6 +6,12 @@ Changelog +Daniel S (26 April 2007) +- Peter O'Gorman found a problem with SCP downloads when the downloaded file + was 16385 bytes (16K+1) and it turned out we didn't properly always "suck + out" all data from libssh2. The effect being that libcurl would hang on the + socket waiting for data when libssh2 had in fact already read it all... + Dan F (25 April 2007) - Added support in runtests.pl for "!n" test numbers to disable individual tests. Changed -t to only keep log files around when -k is specified, diff --git a/RELEASE-NOTES b/RELEASE-NOTES index 8e55ca805..33ea5a859 100644 --- a/RELEASE-NOTES +++ b/RELEASE-NOTES @@ -5,7 +5,7 @@ Curl and libcurl 7.16.3 Available command line options: 118 Available curl_easy_setopt() options: 141 Number of public functions in libcurl: 54 - Amount of public web site mirrors: 38 + Amount of public web site mirrors: 39 Number of known libcurl bindings: 35 Number of contributors: 554 @@ -29,6 +29,7 @@ This release includes the following bugfixes: o NSS-fix for closing down SSL o bad warning from configure when gnutls was selected o compilation on VMS 64-bit mode + o SCP/SFTP downloads could hang on the last bytes of a transfer This release includes the following known bugs: @@ -45,11 +46,12 @@ New curl mirrors: o http://curl.spegulo.be is a new mirror in Belgium o http://curl.piotrkosoft.net is a new mirror in Poland o http://curl.smudge-it.net is a new mirror in St Louis, MO, USA + o http://curl.askapache.com is a new mirror in Indiana, USA This release would not have looked like this without help, code, reports and advice from friends like these: Song Ma, Dan Fandrich, Yang Tse, Jay Austin, Robert Iakobashvil, - James Housley, Daniel Black, Steve Little, Sonia Subramanian + James Housley, Daniel Black, Steve Little, Sonia Subramanian, Peter O'Gorman Thanks! (and sorry if I forgot to mention someone) diff --git a/lib/transfer.c b/lib/transfer.c index d007e8814..760884e9b 100644 --- a/lib/transfer.c +++ b/lib/transfer.c @@ -270,7 +270,10 @@ CURLcode Curl_readrewind(struct connectdata *conn) static int data_pending(struct connectdata *conn) { - return Curl_ssl_data_pending(conn, FIRSTSOCKET); + /* in the case of libssh2, we can never be really sure that we have emptied + its internal buffers so we MUST always try until we get EAGAIN back */ + return conn->protocol&(PROT_SCP|PROT_SFTP) || + Curl_ssl_data_pending(conn, FIRSTSOCKET); } #ifndef MIN |