2011/8/24 m odd <xie...@gmail.com>

>     /* We allow a number of bytes being requested at any given time without
>        having been acked - until we reach EOF. */
>     if(!filep->eof) {
>         /* if the buffer_size passed in now is smaller than what has
> already
>            been sent, we risk getting count become a very large number */
>         if((buffer_size*4) > already)
>             count = (buffer_size*4) - already;
>     }
>
> In the sftp_read(), the actually request count is bigger than
> buffer_size,so, the previous call will get more data than you want.
> I think libssh2_sftp_seek64() must discard the unnecessary request packet
> and the data already stored.
>
> LIBSSH2_API void
> libssh2_sftp_seek64(LIBSSH2_SFTP_HANDLE *handle, libssh2_uint64_t offset)
> {
>     if(handle) {
>         handle->u.file.offset = handle->u.file.offset_sent = offset;
>         sftp_packetlist_flush(handle);
>         if (handle->u.file.data_left) {
>
>  LIBSSH2_FREE(handle->sftp->channel->session, handle->u.file.data);
>             handle->u.file.data_left = handle->u.file.data_len = 0;
>             handle->u.file.data = NULL;
>         }
>     }
> }
>
> _______________________________________________
> libssh2-devel http://cool.haxx.se/cgi-bin/mailman/listinfo/libssh2-devel
>
>
Sorry... is that a patch? can you show me the changes you made please? (with
a diff should be enough)
_______________________________________________
libssh2-devel http://cool.haxx.se/cgi-bin/mailman/listinfo/libssh2-devel

Reply via email to