This mailing list has been abandoned! Subscribe to and use the new list
instead: http://cool.haxx.se/mailman/listinfo/libssh2-devel
----------------------------------------------------------------------

On Sun, 4 Sep 2011, Alexander Lamaison wrote:

Note that you managed to post to the old list, so I'm now replying to both the 
old and the current one.

> I've been having a problem where sftp_read return 0 (i.e. thinks its reached 
> the end of the file) even though it has only partly transferred it. This is 
> particularly noticeable when the 'file' is something like /dev/random that 
> renders data very slowly.  Earlier versions used to block in this case and 
> wait for data.  git bisect identifies this commit as the culprit: 
> http://trac.libssh2.org/changeset/90b4b4073f34919aa72deff61a5c9bc188c47c95/libssh2

Are you sure that really is the culprit? I mean, does it truly get back to 
working if you revert that change?

I just don't see how that change is related to the problem you describe...

> Daniel, can you run me through the logic for this change?  For instance, 
> what happens when (buffer_size*4) is <= already?  Are we supposed to modify 
> count here too?  And, I'm feeling a bit dense right now: why is it buffer*4?

Sure!

First, buffer_size*4 is just picked more or less out of the air. The idea is 
that when reading SFTP from a remote server, we send away multiple read 
requests guessing that the client will read more than only this 'buffer_size' 
amount of memory. So we ask for maximum buffer_size*4 amount of data so that 
we can return them very fast in subsequent calls. (Feel free to experiment to 
set it *2 or *6 or whatever.)

The particular change you're referring to was made because if you call 
sftp_read() in a sequence like:

  1. sftp_read(VERY_BIG_BUFFER);
  2. sftp_read(VERY_SMALL_BUFFER);

... before this change, the 'count' variable could get wrapped in the second 
call (as 'already' was then larger than buffer_size*4) and since count is 
unsigned, it would turn into an insanly high value and just be very very 
wrong.

-- 

  / daniel.haxx.se

------------------------------------------------------------------------------
Special Offer -- Download ArcSight Logger for FREE!
Finally, a world-class log management solution at an even better 
price-free! And you'll get a free "Love Thy Logs" t-shirt when you
download Logger. Secure your free ArcSight Logger TODAY!
http://p.sf.net/sfu/arcsisghtdev2dev
_______________________________________________
libssh2-devel mailing list
libssh2-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/libssh2-devel

Reply via email to