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...
This commit is contained in:
Daniel Stenberg 2007-04-26 21:30:29 +00:00
parent f213d0db98
commit b4d3c4a76c
3 changed files with 14 additions and 3 deletions

View File

@ -6,6 +6,12 @@
Changelog 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) Dan F (25 April 2007)
- Added support in runtests.pl for "!n" test numbers to disable individual - 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, tests. Changed -t to only keep log files around when -k is specified,

View File

@ -5,7 +5,7 @@ Curl and libcurl 7.16.3
Available command line options: 118 Available command line options: 118
Available curl_easy_setopt() options: 141 Available curl_easy_setopt() options: 141
Number of public functions in libcurl: 54 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 known libcurl bindings: 35
Number of contributors: 554 Number of contributors: 554
@ -29,6 +29,7 @@ This release includes the following bugfixes:
o NSS-fix for closing down SSL o NSS-fix for closing down SSL
o bad warning from configure when gnutls was selected o bad warning from configure when gnutls was selected
o compilation on VMS 64-bit mode 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: 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.spegulo.be is a new mirror in Belgium
o http://curl.piotrkosoft.net is a new mirror in Poland 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.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 This release would not have looked like this without help, code, reports and
advice from friends like these: advice from friends like these:
Song Ma, Dan Fandrich, Yang Tse, Jay Austin, Robert Iakobashvil, 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) Thanks! (and sorry if I forgot to mention someone)

View File

@ -270,7 +270,10 @@ CURLcode Curl_readrewind(struct connectdata *conn)
static int data_pending(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 #ifndef MIN