From b19d09aa2aea5acd142de597e1fa77cb4462254f Mon Sep 17 00:00:00 2001 From: Remi Collet Date: Sat, 20 Dec 2014 07:14:27 +0100 Subject: libssh2: 1.4.3 for EL-5 (sync with EL-7) --- ...p-seek-Don-t-flush-buffers-on-same-offset.patch | 54 ++++++++++++++++++++++ 1 file changed, 54 insertions(+) create mode 100644 0001-sftp-seek-Don-t-flush-buffers-on-same-offset.patch (limited to '0001-sftp-seek-Don-t-flush-buffers-on-same-offset.patch') diff --git a/0001-sftp-seek-Don-t-flush-buffers-on-same-offset.patch b/0001-sftp-seek-Don-t-flush-buffers-on-same-offset.patch new file mode 100644 index 0000000..9acbd6d --- /dev/null +++ b/0001-sftp-seek-Don-t-flush-buffers-on-same-offset.patch @@ -0,0 +1,54 @@ +From 486bb376218a37fe15318d7724d6eada36b81e6c Mon Sep 17 00:00:00 2001 +From: "Richard W.M. Jones" +Date: Tue, 26 Mar 2013 17:58:04 +0100 +Subject: [PATCH 1/3] sftp: seek: Don't flush buffers on same offset + +Signed-off-by: Richard W.M. Jones +--- + src/sftp.c | 27 +++++++++++++++------------ + 1 file changed, 15 insertions(+), 12 deletions(-) + +diff --git a/src/sftp.c b/src/sftp.c +index d0536dd..3760025 100644 +--- a/src/sftp.c ++++ b/src/sftp.c +@@ -2132,21 +2132,24 @@ libssh2_sftp_fstat_ex(LIBSSH2_SFTP_HANDLE *hnd, + 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; +- /* discard all pending requests and currently read data */ +- sftp_packetlist_flush(handle); ++ if(!handle) ++ return; ++ if(handle->u.file.offset == offset && handle->u.file.offset_sent == offset) ++ return; + +- /* free the left received buffered data */ +- 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; +- } ++ handle->u.file.offset = handle->u.file.offset_sent = offset; ++ /* discard all pending requests and currently read data */ ++ sftp_packetlist_flush(handle); + +- /* reset EOF to False */ +- handle->u.file.eof = FALSE; ++ /* free the left received buffered data */ ++ 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; + } ++ ++ /* reset EOF to False */ ++ handle->u.file.eof = FALSE; + } + + /* libssh2_sftp_seek +-- +1.8.1.4 + -- cgit