]> git.ipfire.org Git - thirdparty/curl.git/commitdiff
Peter O'Gorman found a problem with SCP downloads when the downloaded file
authorDaniel Stenberg <daniel@haxx.se>
Thu, 26 Apr 2007 21:30:29 +0000 (21:30 +0000)
committerDaniel Stenberg <daniel@haxx.se>
Thu, 26 Apr 2007 21:30:29 +0000 (21:30 +0000)
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...

CHANGES
RELEASE-NOTES
lib/transfer.c

diff --git a/CHANGES b/CHANGES
index 0d458b04150fcb175041e35d576c459884c252b3..d19a74d1f0f76c9b39b0b98bd1949e2debb477f0 100644 (file)
--- a/CHANGES
+++ b/CHANGES
@@ -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,
index 8e55ca805d611e78d6c74f35210420cdcefabd3d..33ea5a859c9d2c122d6060bc29be16434ab7ab4e 100644 (file)
@@ -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)
index d007e881429b123baab6d28852efc1cc82f39252..760884e9b3e565678c0210d78f7e7e1f6da4a20d 100644 (file)
@@ -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