Alexander Lamaison wrote:
> >> @@ -1348,13 +1334,13 @@ static ssize_t sftp_read(LIBSSH2_SFTP_HANDLE * 
> >> handle, char *buffer,
> >>                      filep->offset_sent -= (chunk->len - rc32);
> >>                  }
> >>
> >> -                if(total_read + rc32 > buffer_size) {
> >> +                if(rc32 > buffer_size) {
> >>                      /* figure out the overlap amount */
> >> -                    filep->data_left = (total_read + rc32) - buffer_size;
> >> +                    filep->data_left = rc32 - buffer_size;
> >
> > Doesn't this lose the bytes that we received from transport but which
> > do not fit into the buffer given to us by the user?
> 
> Not unless it did so before.

Sure. Look at the logic. data_left is being set to a smaller number
of bytes than actually received from transport. Where do the
remaining bytes go?


> > suggest return EAGAIN instead of having the loop and chunk
> 
> I'll try this out tonight.

Cool.


//Peter
_______________________________________________
libssh2-devel http://cool.haxx.se/cgi-bin/mailman/listinfo/libssh2-devel

Reply via email to