From libssh2-devel-bounces@cool.haxx.se Wed Aug 13 15:24:40 2014 Return-Path: Received: from www.haxx.se (localhost.localdomain [127.0.0.1]) by giant.haxx.se (8.14.4/8.14.4/Debian-7) with ESMTP id s7DDO5Km015502; Wed, 13 Aug 2014 15:24:34 +0200 Received: from mxl1.seznam.cz (mxl1.seznam.cz [77.75.72.44]) by giant.haxx.se (8.14.4/8.14.4/Debian-7) with ESMTP id s7DDO34V015355 for ; Wed, 13 Aug 2014 15:24:03 +0200 Received: from email.seznam.cz by email-smtpc9a.go.seznam.cz (email-smtpc9a.go.seznam.cz [192.168.92.48]) id 31af6160d0d480d6318af538; Wed, 13 Aug 2014 15:23:59 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=seznam.cz; s=beta; t=1407936239; bh=mUk4lT0HKIGeCCbRv9G6+X661YDBCfao4KbmU0hcJ3c=; h=Received:Message-ID:Subject:From:To:Cc:Date:Content-Type:X-Mailer: Mime-Version:Content-Transfer-Encoding; b=jTJx+WFsDrhfE5hCngItdNdKGkNbxcwCoXT+thO5rwuiGDWLMy/jryyKX7IU9/tjn EbFQUwHINxmY7T3UfOSeNnQf6j37DoCwF9ZlPPd6oHGJOI6WAZZ5NmKU4Pgx/QUxbj MTMbklLsda6FOPXbvNEBlwy99bkKb1/Sl2/TpqwU= Received: from [10.76.2.28] (62.245.111.83.static.b2b.upcbusiness.cz [62.245.111.83]) by email-relay3.go.seznam.cz (Seznam SMTPD 1.2.81) with ESMTP; Wed, 13 Aug 2014 15:10:50 +0200 (CEST) Message-ID: <1407935449.28537.12.camel@zerobox.home> Subject: [PATCH] - datacount From: Lubos Uhliarik To: libssh2 development Date: Wed, 13 Aug 2014 15:10:49 +0200 X-Mailer: Evolution 3.8.5-2+b1 Mime-Version: 1.0 Cc: daniel@haxx.se X-BeenThere: libssh2-devel@cool.haxx.se X-Mailman-Version: 2.1.16 Precedence: list Reply-To: libssh2 development List-Id: libssh2 development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Errors-To: libssh2-devel-bounces@cool.haxx.se Sender: "libssh2-devel" Content-Transfer-Encoding: 8bit X-MIME-Autoconverted: from base64 to 8bit by giant.haxx.se id s7DDO5Km015502 Hello Daniel, my colleague wrote you an email before about 9 months. Company in which I'm working would like to cooperate with you on libssh2 development, because we are using this lib in several projects. We made a few patches, but we would like to move those patches to the upstream version. In this email, I will try introduce you first patch, which we would like to apply on the upstream version. This first patch should count total amount of transferred data during the connection to a server. For this purpose, two functions were created: libssh2_session_recv_data(LIBSSH2_SESSION *session) and libssh2_session_recv_data(LIBSSH2_SESSION *session). Better explanation of this PATCH sent my colleague Jiri. You can read his email here: http://www.libssh2.org/mail/libssh2-devel-archive-2013-11/0027.shtml If there is any problem with applying this patch, please let me know and I will try to fix those problems. Regards, Lubos Signed-off-by: Lubos Uhliarik --- diff -Naur libssh2-1.4.3_keepalive/include/libssh2.h libssh2-1.4.3_datacount/include/libssh2.h --- libssh2-1.4.3_keepalive/include/libssh2.h 2013-11-20 10:04:02.985780814 +0100 +++ libssh2-1.4.3_datacount/include/libssh2.h 2013-11-22 13:15:10.870131905 +0100 @@ -241,10 +241,10 @@ /* I/O callbacks */ #define LIBSSH2_RECV_FUNC(name) ssize_t name(libssh2_socket_t socket, \ void *buffer, size_t length, \ - int flags, void **abstract) + int flags, void **abstract, LIBSSH2_SESSION *session) #define LIBSSH2_SEND_FUNC(name) ssize_t name(libssh2_socket_t socket, \ const void *buffer, size_t length,\ - int flags, void **abstract) + int flags, void **abstract, LIBSSH2_SESSION *session) /* libssh2_session_callback_set() constants */ #define LIBSSH2_CALLBACK_IGNORE 0 @@ -329,9 +329,9 @@ #define LIBSSH2_HOSTKEY_HASH_SHA1 2 /* Hostkey Types */ -#define LIBSSH2_HOSTKEY_TYPE_UNKNOWN 0 -#define LIBSSH2_HOSTKEY_TYPE_RSA 1 -#define LIBSSH2_HOSTKEY_TYPE_DSS 2 +#define LIBSSH2_HOSTKEY_TYPE_UNKNOWN 0 +#define LIBSSH2_HOSTKEY_TYPE_RSA 1 +#define LIBSSH2_HOSTKEY_TYPE_DSS 2 /* Disconnect Codes (defined by SSH protocol) */ #define SSH_DISCONNECT_HOST_NOT_ALLOWED_TO_CONNECT 1 @@ -1159,6 +1159,12 @@ LIBSSH2_API int libssh2_keepalive_send (LIBSSH2_SESSION *session, int *seconds_to_next); +LIBSSH2_API long long +libssh2_session_recv_data(LIBSSH2_SESSION *session); + +LIBSSH2_API long long +libssh2_session_send_data(LIBSSH2_SESSION *session); + /* NOTE NOTE NOTE libssh2_trace() has no function in builds that aren't built with debug enabled diff -Naur libssh2-1.4.3_keepalive/src/libssh2_priv.h libssh2-1.4.3_datacount/src/libssh2_priv.h --- libssh2-1.4.3_keepalive/src/libssh2_priv.h 2013-11-14 10:15:24.000000000 +0100 +++ libssh2-1.4.3_datacount/src/libssh2_priv.h 2013-11-22 13:37:21.543860697 +0100 @@ -184,9 +184,9 @@ (channel), &(channel)->abstract) #define LIBSSH2_SEND_FD(session, fd, buffer, length, flags) \ - session->send(fd, buffer, length, flags, &session->abstract) + session->send(fd, buffer, length, flags, &session->abstract, session) #define LIBSSH2_RECV_FD(session, fd, buffer, length, flags) \ - session->recv(fd, buffer, length, flags, &session->abstract) + session->recv(fd, buffer, length, flags, &session->abstract, session) #define LIBSSH2_SEND(session, buffer, length, flags) \ LIBSSH2_SEND_FD(session, session->socket_fd, buffer, length, flags) @@ -810,6 +810,8 @@ int keepalive_want_reply; time_t keepalive_last_sent; unsigned int keepalive_count; + long long recv_data; + long long send_data; }; /* session.state bits */ @@ -1001,9 +1003,9 @@ #define SSH_OPEN_RESOURCE_SHORTAGE 4 ssize_t _libssh2_recv(libssh2_socket_t socket, void *buffer, - size_t length, int flags, void **abstract); + size_t length, int flags, void **abstract, LIBSSH2_SESSION *session); ssize_t _libssh2_send(libssh2_socket_t socket, const void *buffer, - size_t length, int flags, void **abstract); + size_t length, int flags, void **abstract, LIBSSH2_SESSION *session); #define LIBSSH2_READ_TIMEOUT 60 /* generic timeout in seconds used when waiting for more data to arrive */ diff -Naur libssh2-1.4.3_keepalive/src/misc.c libssh2-1.4.3_datacount/src/misc.c --- libssh2-1.4.3_keepalive/src/misc.c 2011-08-25 19:59:47.000000000 +0200 +++ libssh2-1.4.3_datacount/src/misc.c 2013-11-22 11:25:39.000000000 +0100 @@ -94,7 +94,7 @@ * Replacement for the standard recv, return -errno on failure. */ ssize_t -_libssh2_recv(libssh2_socket_t sock, void *buffer, size_t length, int flags, void **abstract) +_libssh2_recv(libssh2_socket_t sock, void *buffer, size_t length, int flags, void **abstract, LIBSSH2_SESSION *session) { ssize_t rc = recv(sock, buffer, length, flags); #ifdef WIN32 @@ -117,6 +117,7 @@ return -errno; } #endif + session->recv_data += rc; return rc; } @@ -126,7 +127,7 @@ */ ssize_t _libssh2_send(libssh2_socket_t sock, const void *buffer, size_t length, - int flags, void **abstract) + int flags, void **abstract, LIBSSH2_SESSION *session) { ssize_t rc = send(sock, buffer, length, flags); #ifdef WIN32 @@ -143,6 +144,7 @@ if (rc < 0 ) return -errno; #endif + session->send_data += rc; return rc; } diff -Naur libssh2-1.4.3_keepalive/src/session.c libssh2-1.4.3_datacount/src/session.c --- libssh2-1.4.3_keepalive/src/session.c 2012-07-25 01:03:27.000000000 +0200 +++ libssh2-1.4.3_datacount/src/session.c 2013-11-22 11:28:00.000000000 +0100 @@ -1749,3 +1749,20 @@ return (const char *) session->remote.banner; } + +LIBSSH2_API long long +libssh2_session_recv_data(LIBSSH2_SESSION *session) +{ + long long recv; + recv = session->recv_data; + session->recv_data = 0; + return recv; +} + +LIBSSH2_API long long +libssh2_session_send_data(LIBSSH2_SESSION *session){ + long long send; + send = session->send_data; + session->send_data = 0; + return send; +} \ No newline at end of file _______________________________________________ libssh2-devel http://cool.haxx.se/cgi-bin/mailman/listinfo/libssh2-devel From libssh2-devel-bounces@cool.haxx.se Wed Aug 13 15:43:06 2014 Return-Path: Received: from www.haxx.se (localhost.localdomain [127.0.0.1]) by giant.haxx.se (8.14.4/8.14.4/Debian-7) with ESMTP id s7DDh0Jn026172; Wed, 13 Aug 2014 15:43:05 +0200 Received: from mail-qc0-x235.google.com (mail-qc0-x235.google.com [IPv6:2607:f8b0:400d:c01::235]) by giant.haxx.se (8.14.4/8.14.4/Debian-7) with ESMTP id s7DDgvba026061 (version=TLSv1/SSLv3 cipher=ECDHE-RSA-RC4-SHA bits=128 verify=NOT) for ; Wed, 13 Aug 2014 15:42:58 +0200 Received: by mail-qc0-f181.google.com with SMTP id x13so4037799qcv.26 for ; Wed, 13 Aug 2014 06:42:52 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:sender:in-reply-to:references:from:date:message-id :subject:to:content-type; bh=YpZqOA1ZtbTmX6cvQKt3nt1QsgDzL/j2U654Y79XtCQ=; b=SjvuKmRTKateywzdDbR2540/9QM2nmemBE8hGG63olyC4gIUVqGB/QmMVJCnSitsa9 wprXhqlGQBoVj7t38b3vZHNAu6YRZ7p2gEspJ4D6SDsv4BMgF30bAm+1bZkOeYZpVdUb JdQYb4gjzKMdTewqUnCRsf/ESSKyKF0zW/VtJWu4BgpQvof9yZeZrUtm+tNr1MgOJjp+ 1f1SQx4xH07/aQKzVciBNvHtWWdgBojBHTQ0LTZVtTXRlPToA/Wmn/NYR6KpGSjQpBQ0 jtzlli/S04NIArQdLN+O+BGVxv3KcVin1eRFbVsQT/a3/kd7N/diu6bJMIWwUYRiYWCb liQg== X-Received: by 10.140.43.245 with SMTP id e108mr6629789qga.76.1407937372674; Wed, 13 Aug 2014 06:42:52 -0700 (PDT) MIME-Version: 1.0 Received: by 10.229.60.196 with HTTP; Wed, 13 Aug 2014 06:42:12 -0700 (PDT) In-Reply-To: <1407935449.28537.12.camel@zerobox.home> References: <1407935449.28537.12.camel@zerobox.home> From: Mikhail Gusarov Date: Wed, 13 Aug 2014 15:42:12 +0200 X-Google-Sender-Auth: 3C05hntrioqcE16zCiAzlJMJzeo Message-ID: Subject: Re: [PATCH] - datacount To: libssh2 development X-BeenThere: libssh2-devel@cool.haxx.se X-Mailman-Version: 2.1.16 Precedence: list Reply-To: libssh2 development List-Id: libssh2 development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Errors-To: libssh2-devel-bounces@cool.haxx.se Sender: "libssh2-devel" Content-Transfer-Encoding: 8bit X-MIME-Autoconverted: from base64 to 8bit by giant.haxx.se id s7DDh0Jn026172 Hi Lubos, > /* Hostkey Types */ > -#define LIBSSH2_HOSTKEY_TYPE_UNKNOWN 0 > -#define LIBSSH2_HOSTKEY_TYPE_RSA 1 > -#define LIBSSH2_HOSTKEY_TYPE_DSS 2 > +#define LIBSSH2_HOSTKEY_TYPE_UNKNOWN 0 > +#define LIBSSH2_HOSTKEY_TYPE_RSA 1 > +#define LIBSSH2_HOSTKEY_TYPE_DSS 2 Please remove this hunk. > +LIBSSH2_API long long > +libssh2_session_send_data(LIBSSH2_SESSION *session){ > + long long send; > + send = session->send_data; > + session->send_data = 0; > + return send; > +} > \ No newline at end of file And add a missing newline. _______________________________________________ libssh2-devel http://cool.haxx.se/cgi-bin/mailman/listinfo/libssh2-devel From libssh2-devel-bounces@cool.haxx.se Wed Aug 13 16:29:39 2014 Return-Path: Received: from www.haxx.se (localhost.localdomain [127.0.0.1]) by giant.haxx.se (8.14.4/8.14.4/Debian-7) with ESMTP id s7DETROe018575; Wed, 13 Aug 2014 16:29:37 +0200 Received: from mxl1.seznam.cz (mxl1.seznam.cz [77.75.72.44]) by giant.haxx.se (8.14.4/8.14.4/Debian-7) with ESMTP id s7DETQqw018521 for ; Wed, 13 Aug 2014 16:29:26 +0200 Received: from email.seznam.cz by email-smtpc9b.go.seznam.cz (email-smtpc9b.go.seznam.cz [192.168.92.49]) id 45891dd3a4f2fc6545ac898b; Wed, 13 Aug 2014 16:29:18 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=seznam.cz; s=beta; t=1407940158; bh=L0TxKTtUx/ZyfB6I++DCOXvwciYUYFDzmCwxDdrDc1c=; h=Received:Message-ID:Subject:From:To:Cc:Date:In-Reply-To: References:Content-Type:X-Mailer:Mime-Version: Content-Transfer-Encoding; b=OHFOr91p8T+waAugSdBpWB2ZuxXTGOyGuN47KkJlj7KzsO+/UmxBYjOsPLKfzWIl7 vBIhrD8WaXLK2Qu37aNIopUnMec59FabEjpxpYFtzT5VHIhOoAREUjvNDINS/vXRCt CdxLeohFTBign2E7SmYI9wHte+aVElGLf3LU7hds= Received: from [10.76.2.28] (62.245.111.83.static.b2b.upcbusiness.cz [62.245.111.83]) by email-relay5.go.seznam.cz (Seznam SMTPD 1.2.81) with ESMTP; Wed, 13 Aug 2014 16:17:42 +0200 (CEST) Message-ID: <1407939460.28537.18.camel@zerobox.home> Subject: Re: [PATCH] - datacount From: Lubos Uhliarik To: libssh2-devel@cool.haxx.se Date: Wed, 13 Aug 2014 16:17:40 +0200 In-Reply-To: References: <1407935449.28537.12.camel@zerobox.home> X-Mailer: Evolution 3.8.5-2+b1 Mime-Version: 1.0 Cc: dottedmag@dottedmag.net X-BeenThere: libssh2-devel@cool.haxx.se X-Mailman-Version: 2.1.16 Precedence: list Reply-To: libssh2 development List-Id: libssh2 development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Errors-To: libssh2-devel-bounces@cool.haxx.se Sender: "libssh2-devel" Content-Transfer-Encoding: 8bit X-MIME-Autoconverted: from base64 to 8bit by giant.haxx.se id s7DETROe018575 Hi Mikhail, thank you for your fast answer. I didn't make this patch, so I apologies for any errors. I removed that garbage, as you advised me. Fixed patch is below. Regards, Lubos Signed-off-by: Lubos Uhliarik --- diff -Naur libssh2-1.4.3/include/libssh2.h libssh2-1.4.3_datacount/include/libssh2.h --- libssh2-1.4.3/include/libssh2.h 2012-11-27 22:45:21.000000000 +0100 +++ libssh2-1.4.3_datacount/include/libssh2.h 2014-08-13 16:01:51.571211593 +0200 @@ -241,10 +241,10 @@ /* I/O callbacks */ #define LIBSSH2_RECV_FUNC(name) ssize_t name(libssh2_socket_t socket, \ void *buffer, size_t length, \ - int flags, void **abstract) + int flags, void **abstract, LIBSSH2_SESSION *session) #define LIBSSH2_SEND_FUNC(name) ssize_t name(libssh2_socket_t socket, \ const void *buffer, size_t length,\ - int flags, void **abstract) + int flags, void **abstract, LIBSSH2_SESSION *session) /* libssh2_session_callback_set() constants */ #define LIBSSH2_CALLBACK_IGNORE 0 @@ -1157,6 +1157,12 @@ LIBSSH2_API int libssh2_keepalive_send (LIBSSH2_SESSION *session, int *seconds_to_next); +LIBSSH2_API long long +libssh2_session_recv_data(LIBSSH2_SESSION *session); + +LIBSSH2_API long long +libssh2_session_send_data(LIBSSH2_SESSION *session); + /* NOTE NOTE NOTE libssh2_trace() has no function in builds that aren't built with debug enabled diff -Naur libssh2-1.4.3/src/libssh2_priv.h libssh2-1.4.3_datacount/src/libssh2_priv.h --- libssh2-1.4.3/src/libssh2_priv.h 2012-10-08 14:54:30.000000000 +0200 +++ libssh2-1.4.3_datacount/src/libssh2_priv.h 2014-08-13 16:05:15.232059547 +0200 @@ -184,9 +184,9 @@ (channel), &(channel)->abstract) #define LIBSSH2_SEND_FD(session, fd, buffer, length, flags) \ - session->send(fd, buffer, length, flags, &session->abstract) + session->send(fd, buffer, length, flags, &session->abstract, session) #define LIBSSH2_RECV_FD(session, fd, buffer, length, flags) \ - session->recv(fd, buffer, length, flags, &session->abstract) + session->recv(fd, buffer, length, flags, &session->abstract, session) #define LIBSSH2_SEND(session, buffer, length, flags) \ LIBSSH2_SEND_FD(session, session->socket_fd, buffer, length, flags) @@ -809,6 +809,8 @@ int keepalive_interval; int keepalive_want_reply; time_t keepalive_last_sent; + long long recv_data; + long long send_data; }; /* session.state bits */ @@ -1000,9 +1002,9 @@ #define SSH_OPEN_RESOURCE_SHORTAGE 4 ssize_t _libssh2_recv(libssh2_socket_t socket, void *buffer, - size_t length, int flags, void **abstract); + size_t length, int flags, void **abstract, LIBSSH2_SESSION *session); ssize_t _libssh2_send(libssh2_socket_t socket, const void *buffer, - size_t length, int flags, void **abstract); + size_t length, int flags, void **abstract, LIBSSH2_SESSION *session); #define LIBSSH2_READ_TIMEOUT 60 /* generic timeout in seconds used when waiting for more data to arrive */ diff -Naur libssh2-1.4.3/src/misc.c libssh2-1.4.3_datacount/src/misc.c --- libssh2-1.4.3/src/misc.c 2011-08-25 19:59:47.000000000 +0200 +++ libssh2-1.4.3_datacount/src/misc.c 2014-08-13 16:01:51.571211593 +0200 @@ -94,7 +94,7 @@ * Replacement for the standard recv, return -errno on failure. */ ssize_t -_libssh2_recv(libssh2_socket_t sock, void *buffer, size_t length, int flags, void **abstract) +_libssh2_recv(libssh2_socket_t sock, void *buffer, size_t length, int flags, void **abstract, LIBSSH2_SESSION *session) { ssize_t rc = recv(sock, buffer, length, flags); #ifdef WIN32 @@ -117,6 +117,7 @@ return -errno; } #endif + session->recv_data += rc; return rc; } @@ -126,7 +127,7 @@ */ ssize_t _libssh2_send(libssh2_socket_t sock, const void *buffer, size_t length, - int flags, void **abstract) + int flags, void **abstract, LIBSSH2_SESSION *session) { ssize_t rc = send(sock, buffer, length, flags); #ifdef WIN32 @@ -143,6 +144,7 @@ if (rc < 0 ) return -errno; #endif + session->send_data += rc; return rc; } diff -Naur libssh2-1.4.3/src/session.c libssh2-1.4.3_datacount/src/session.c --- libssh2-1.4.3/src/session.c 2012-07-25 01:03:27.000000000 +0200 +++ libssh2-1.4.3_datacount/src/session.c 2014-08-13 16:01:51.571211593 +0200 @@ -1749,3 +1749,20 @@ return (const char *) session->remote.banner; } + +LIBSSH2_API long long +libssh2_session_recv_data(LIBSSH2_SESSION *session) +{ + long long recv; + recv = session->recv_data; + session->recv_data = 0; + return recv; +} + +LIBSSH2_API long long +libssh2_session_send_data(LIBSSH2_SESSION *session){ + long long send; + send = session->send_data; + session->send_data = 0; + return send; +} Mikhail Gusarov píše v St 13. 08. 2014 v 15:42 +0200: > Hi Lubos, > > > /* Hostkey Types */ > > -#define LIBSSH2_HOSTKEY_TYPE_UNKNOWN 0 > > -#define LIBSSH2_HOSTKEY_TYPE_RSA 1 > > -#define LIBSSH2_HOSTKEY_TYPE_DSS 2 > > +#define LIBSSH2_HOSTKEY_TYPE_UNKNOWN 0 > > +#define LIBSSH2_HOSTKEY_TYPE_RSA 1 > > +#define LIBSSH2_HOSTKEY_TYPE_DSS 2 > > Please remove this hunk. > > > +LIBSSH2_API long long > > +libssh2_session_send_data(LIBSSH2_SESSION *session){ > > + long long send; > > + send = session->send_data; > > + session->send_data = 0; > > + return send; > > +} > > \ No newline at end of file > > And add a missing newline. > _______________________________________________ > libssh2-devel http://cool.haxx.se/cgi-bin/mailman/listinfo/libssh2-devel _______________________________________________ libssh2-devel http://cool.haxx.se/cgi-bin/mailman/listinfo/libssh2-devel From libssh2-devel-bounces@cool.haxx.se Mon Aug 25 02:03:51 2014 Return-Path: Received: from www.haxx.se (localhost.localdomain [127.0.0.1]) by giant.haxx.se (8.14.4/8.14.4/Debian-7) with ESMTP id s7P03Lj4023402; Mon, 25 Aug 2014 02:03:44 +0200 Received: from cmailsend36.nm.naver.com (cmailsend36.nm.naver.com [125.209.239.213]) by giant.haxx.se (8.14.4/8.14.4/Debian-7) with ESMTP id s7P03FfP023280 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NOT) for ; Mon, 25 Aug 2014 02:03:17 +0200 Received: (qmail 6969 invoked by uid 100); 25 Aug 2014 00:03:10 -0000 Received: from 10.114.52.102 (HELO cweb03.nm.nhnsystem.com) (10.114.52.102) by cmailsend36.nm.naver.com with SMTP;25 Aug 2014 00:03:10 -0000 Date: Mon, 25 Aug 2014 09:03:10 +0900 (KST) From: =?UTF-8?B?7J207Zqo7Iug?= To: libssh2-devel@cool.haxx.se Message-ID: Subject: =?UTF-8?B?QWJvdXQgIkNoYW5uZWwgb3BlbiBmYWlsIi4uaGVscCBwbHM=?= MIME-Version: 1.0 Importance: normal X-Priority: 3 (Normal) X-Naver-CIP: 61.250.99.54 X-BeenThere: libssh2-devel@cool.haxx.se X-Mailman-Version: 2.1.16 Precedence: list Reply-To: =?UTF-8?B?7J207Zqo7Iug?= , libssh2 development List-Id: libssh2 development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: multipart/mixed; boundary="===============1132599008==" Errors-To: libssh2-devel-bounces@cool.haxx.se Sender: "libssh2-devel" --===============1132599008== Content-Type: multipart/alternative; boundary="----=_Part_61804_940228970.1408924990590" ------=_Part_61804_940228970.1408924990590 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: base64 aGVsbG8uIGkgYW0gbGVlIGZyb20ga29yZWEuIApmb3IgYXNrIHVyIGhlbHAsIHdyaXRlIHRoaXMg bWFpbC4gXl4KIAp3aGVuIGkgaGFkIG1hZGUgc3NoIG1vZHVsZSB3aXRoIGxpYnNzaDIsIGVuY291 bnRlciBUd28gZXJyb3IuIGFuZCBpIGNhbnQgc29sdmUgdGhpcyBmb3IgMiB3ZWVrcy4gCiAKZmly c3Qgb25lLCBieSBzYW1wbGUgY29kZSwgIGxpYnNzaDJfY2hhbm5lbF9vcGVuX3Nlc3Npb24oKSBk aWQgd29yayAganVzdCBvbmUgdGltZS4gaSBjYW4gb3BlbiBmaXJzdCBjaGFubmVsIC4KYWZ0ZXIg b3BlbiBhbmQgZXhjdXRlIGNvbW1hbmQgbGluZSwgcmVhZCBhbmQgY2xvc2UgY2hhbm5lbC4gYW5k IHdoZW4gcmV0cnkgb3BlbiBvdGhlciBjaGFubmVsLCBpIGNhbiBzZWUgdGhpcyBlcnJvciBtZXNz YWdlIGluIGRlYnVnIHBhbmVsICIgVW5hYmxlICB0byBzZW5kICBjaGFubmVsLW9wZW4gcmVxdWVz dCIuIAphbnkgaW5mb3JtYXRpb24gYnkgRkFRIHVzZWxlc3MgZm9yIG1lLi4gCiAKYW5kIGkgdHJ5 IG90aGVyIHdheSB3aXRoIGxpYnNzaDJfY2hhbm5lbF9kaXJlY3RfdGNwaXAoKS4gCiAKc2Vjb25k IHByb2JsZW0sIGJ5IHNhbXBsZSBjb2RlIGJ5IEZBUSBpbmZvLCBpIGdldCBzb21lIHRlc3QgY29k ZS4gCnRoc2kgb25lLiAKYnV0IGp1c3QgY2hhbmdlIGVyciBtZXNzYWdlLiBpIGNhbnQgb3BlbiBm aXJzdCBjaGFubmVsLiB3aXRoIG1lc3NhZ2UgIkNoYW5uZWwgb3BlbiBmYWlsdXJlIgogCm9zIDog d2luZG93Nwp0b29sOiBtaWNyb3NvZnQgdmlzdWFsIHN0dWRpbyAyMDEwCiAKYW55IGluZm9ybWF0 aW9uLCBhbnkgYWR2aWNlISBwbHMgaGVscCAKIApjaGFyIHJlcXVlc3RbXT0iR0VUIC9cbiI7CiBj aGFyIGJ1ZmZlcltCVUZTSVpFXTsKIExJQlNTSDJfQ0hBTk5FTCAqY2hhbm5lbDsKIGNoYXIgKmVy cm9yOwogaW50IHJ2OwogY2hhbm5lbD1saWJzc2gyX2NoYW5uZWxfZGlyZWN0X3RjcGlwKHNlc3Np b24sICJsb2NhbGhvc3QiLCAzMDE3KTsKIGlmKCFjaGFubmVsKSB7CiAgbGlic3NoMl9zZXNzaW9u X2xhc3RfZXJyb3Ioc2Vzc2lvbiwgJmFtcDtlcnJvciwgTlVMTCwgMCk7CiAgZnByaW50ZihzdGRl cnIsICJsaWJzc2gyX2NoYW5uZWxfZGlyZWN0X3RjcGlwOiAlc1xuIiwgZXJyb3IpOwogIHJldHVy biAxOwogfQogaWYobGlic3NoMl9jaGFubmVsX3dyaXRlKGNoYW5uZWwsIHJlcXVlc3QsIHN0cmxl bihyZXF1ZXN0KSkgJmx0Oz0gMCkgewogIGxpYnNzaDJfc2Vzc2lvbl9sYXN0X2Vycm9yKHNlc3Np b24sICZhbXA7ZXJyb3IsIE5VTEwsIDApOwogIGZwcmludGYoc3RkZXJyLCAibGlic3NoMl9jaGFu bmVsX3dyaXRlOiAlc1xuIiwgZXJyb3IpOwogIHJldHVybiAxOwogfQogCiBydj1saWJzc2gyX2No YW5uZWxfcmVhZChjaGFubmVsLCBidWZmZXIsIEJVRlNJWkUtMSk7CiBpZihydiAmbHQ7PSAwKSB7 CiAgbGlic3NoMl9zZXNzaW9uX2xhc3RfZXJyb3Ioc2Vzc2lvbiwgJmFtcDtlcnJvciwgTlVMTCwg MCk7CiAgZnByaW50ZihzdGRlcnIsICJsaWJzc2gyX2NoYW5uZWxfcmVhZDogJXNcbiIsIGVycm9y KTsKICByZXR1cm4gMTsKIH0KIGJ1ZmZlcltydl09J1wwJzsKIHByaW50ZigiJXNcbiIsIGJ1ZmZl cik7CiBsaWJzc2gyX2NoYW5uZWxfZnJlZShjaGFubmVsKTsKIHJldHVybiAwOwp9CiAKaW50IHRl c3Q3KCkgewogc3RydWN0IGhvc3RlbnQgKmhlbjsKIHN0cnVjdCBzb2NrYWRkcl9pbiBzaW47CiBp bnQgc3NoX3NvY2tldDsKIGNoYXIgKmVycm9yOwogTElCU1NIMl9TRVNTSU9OICpzc2hfc2Vzc2lv bjsKICBzc2hfc29ja2V0ID0gc29ja2V0KEFGX0lORVQsIFNPQ0tfU1RSRUFNLCAwKTsKIGlmKHNz aF9zb2NrZXQgJmx0OyAwKSB7CiAgcGVycm9yKCJzb2NrZXQiKTsKICByZXR1cm4gMTsKIH0KIHNp bi5zaW5fZmFtaWx5ID0gQUZfSU5FVDsKIHNpbi5zaW5fcG9ydCA9IGh0b25zKDIyKTsKIGhlbj1n ZXRob3N0YnluYW1lKCJ4eHgueHh4Lnh4eC54eHgiKTsKIGlmKCFoZW4pIHsKLy8gIGZwcmludGYo c3RkZXJyLCAiZ2V0aG9zdGJ5bmFtZTogJXMiLCBoc3RyZXJyb3IoaF9lcnJubykpOwogIHJldHVy biAxOwogfQogbWVtY3B5KCZhbXA7KHNpbi5zaW5fYWRkci5zX2FkZHIpLCBoZW4tJmd0O2hfYWRk cl9saXN0WzBdLCBoZW4tJmd0O2hfbGVuZ3RoKTsKIAogaWYgKCBjb25uZWN0KHNzaF9zb2NrZXQs IChzdHJ1Y3Qgc29ja2FkZHIqKSgmYW1wO3NpbiksIHNpemVvZihzdHJ1Y3Qgc29ja2FkZHJfaW4p KSApIHsKICBwZXJyb3IoImNvbm5lY3QiKTsKICAvL3JldHVybiAxOwogfQogCiBzc2hfc2Vzc2lv biA9IGxpYnNzaDJfc2Vzc2lvbl9pbml0KCk7CiAKIGlmIChsaWJzc2gyX3Nlc3Npb25fc3RhcnR1 cChzc2hfc2Vzc2lvbiwgc3NoX3NvY2tldCkpIHsKICBsaWJzc2gyX3Nlc3Npb25fbGFzdF9lcnJv cihzc2hfc2Vzc2lvbiwgJmFtcDtlcnJvciwgTlVMTCwgMCk7CiAgZnByaW50ZihzdGRlcnIsICJs aWJzc2gyX3Nlc3Npb25fc3RhcnR1cDogJXNcbiIsIGVycm9yKTsKICByZXR1cm4gMTsKIH0KIAog aWYobGlic3NoMl91c2VyYXV0aF9wYXNzd29yZChzc2hfc2Vzc2lvbiwgImlkIiwgInB3IikpIHsK ICBsaWJzc2gyX3Nlc3Npb25fbGFzdF9lcnJvcihzc2hfc2Vzc2lvbiwgJmFtcDtlcnJvciwgTlVM TCwgMCk7CiAgZnByaW50ZihzdGRlcnIsICJsaWJzc2gyX3VzZXJhdXRoX3Bhc3N3b3JkOiAlc1xu IiwgZXJyb3IpOwogIHJldHVybiAxOwogfQogaWYoZG9fY2hhbm5lbChzc2hfc2Vzc2lvbikpIHJl dHVybiAxOwogaWYoZG9fY2hhbm5lbChzc2hfc2Vzc2lvbikpIHJldHVybiAxOwogcmV0dXJuIDA7 Cn0gCiAKIAogCg== ------=_Part_61804_940228970.1408924990590 Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: base64 PGRpdiBzdHlsZT0iZm9udC1zaXplOjEwcHQ7IGZvbnQtZmFtaWx5Okd1bGltOyI+PHA+aGVsbG8u IGkgYW0gbGVlIGZyb20ga29yZWEuIDwvcD48cD5mb3IgYXNrIHVyIGhlbHAsIHdyaXRlIHRoaXMg bWFpbC4gXl48L3A+PHA+Jm5ic3A7PC9wPjxwPndoZW4gaSBoYWQgbWFkZSBzc2ggbW9kdWxlIHdp dGggbGlic3NoMiwgZW5jb3VudGVyIFR3byBlcnJvci4gYW5kIGkgY2FudCBzb2x2ZSB0aGlzIGZv ciAyIHdlZWtzLiA8L3A+PHA+Jm5ic3A7PC9wPjxwPmZpcnN0IG9uZSwgYnkgc2FtcGxlIGNvZGUs Jm5ic3A7IGxpYnNzaDJfY2hhbm5lbF9vcGVuX3Nlc3Npb24oKSBkaWQgd29yayZuYnNwOyBqdXN0 IG9uZSB0aW1lLiBpIGNhbiBvcGVuIGZpcnN0IGNoYW5uZWwmbmJzcDsuPC9wPjxwPmFmdGVyIG9w ZW4gYW5kIGV4Y3V0ZSBjb21tYW5kIGxpbmUsIHJlYWQmbmJzcDthbmQgY2xvc2UgY2hhbm5lbC4g YW5kIHdoZW4gcmV0cnkgb3BlbiBvdGhlciBjaGFubmVsLCBpIGNhbiBzZWUgdGhpcyBlcnJvciBt ZXNzYWdlIGluIGRlYnVnIHBhbmVsICIgVW5hYmxlJm5ic3A7IHRvIHNlbmQmbmJzcDsgY2hhbm5l bC1vcGVuIHJlcXVlc3QiLiA8L3A+PHA+YW55IGluZm9ybWF0aW9uIGJ5IEZBUSB1c2VsZXNzIGZv ciBtZS4uIDwvcD48cD4mbmJzcDs8L3A+PHA+YW5kIGkgdHJ5IG90aGVyIHdheSB3aXRoIGxpYnNz aDJfY2hhbm5lbF9kaXJlY3RfdGNwaXAoKS4gPC9wPjxwPiZuYnNwOzwvcD48cD5zZWNvbmQgcHJv YmxlbSwgYnkgc2FtcGxlIGNvZGUgYnkgRkFRIGluZm8sIGkgZ2V0IHNvbWUgdGVzdCBjb2RlLiA8 L3A+PHA+dGhzaSBvbmUuIDwvcD48cD5idXQganVzdCBjaGFuZ2UgZXJyIG1lc3NhZ2UuIGkgY2Fu dCBvcGVuIGZpcnN0IGNoYW5uZWwuIHdpdGggbWVzc2FnZSAiQ2hhbm5lbCBvcGVuIGZhaWx1cmUi PC9wPjxwPiZuYnNwOzwvcD48cD5vcyA6IHdpbmRvdzc8L3A+PHA+dG9vbDogbWljcm9zb2Z0IHZp c3VhbCBzdHVkaW8gMjAxMDwvcD48cD4mbmJzcDs8L3A+PHA+YW55IGluZm9ybWF0aW9uLCBhbnkg YWR2aWNlISBwbHMgaGVscCA8L3A+PHA+Jm5ic3A7PC9wPjxwPmNoYXIgcmVxdWVzdFtdPSJHRVQg L1xuIjs8YnI+Jm5ic3A7Y2hhciBidWZmZXJbQlVGU0laRV07PGJyPiZuYnNwO0xJQlNTSDJfQ0hB Tk5FTCAqY2hhbm5lbDs8YnI+Jm5ic3A7Y2hhciAqZXJyb3I7PGJyPiZuYnNwO2ludCBydjs8YnI+ Jm5ic3A7Y2hhbm5lbD1saWJzc2gyX2NoYW5uZWxfZGlyZWN0X3RjcGlwKHNlc3Npb24sICJsb2Nh bGhvc3QiLCAzMDE3KTs8YnI+Jm5ic3A7aWYoIWNoYW5uZWwpIHs8YnI+Jm5ic3A7Jm5ic3A7bGli c3NoMl9zZXNzaW9uX2xhc3RfZXJyb3Ioc2Vzc2lvbiwgJmFtcDtlcnJvciwgTlVMTCwgMCk7PGJy PiZuYnNwOyZuYnNwO2ZwcmludGYoc3RkZXJyLCAibGlic3NoMl9jaGFubmVsX2RpcmVjdF90Y3Bp cDogJXNcbiIsIGVycm9yKTs8YnI+Jm5ic3A7Jm5ic3A7cmV0dXJuIDE7PGJyPiZuYnNwO308YnI+ Jm5ic3A7aWYobGlic3NoMl9jaGFubmVsX3dyaXRlKGNoYW5uZWwsIHJlcXVlc3QsIHN0cmxlbihy ZXF1ZXN0KSkgJmx0Oz0gMCkgezxicj4mbmJzcDsmbmJzcDtsaWJzc2gyX3Nlc3Npb25fbGFzdF9l cnJvcihzZXNzaW9uLCAmYW1wO2Vycm9yLCBOVUxMLCAwKTs8YnI+Jm5ic3A7Jm5ic3A7ZnByaW50 ZihzdGRlcnIsICJsaWJzc2gyX2NoYW5uZWxfd3JpdGU6ICVzXG4iLCBlcnJvcik7PGJyPiZuYnNw OyZuYnNwO3JldHVybiAxOzxicj4mbmJzcDt9PGJyPiZuYnNwOzxicj4mbmJzcDtydj1saWJzc2gy X2NoYW5uZWxfcmVhZChjaGFubmVsLCBidWZmZXIsIEJVRlNJWkUtMSk7PGJyPiZuYnNwO2lmKHJ2 ICZsdDs9IDApIHs8YnI+Jm5ic3A7Jm5ic3A7bGlic3NoMl9zZXNzaW9uX2xhc3RfZXJyb3Ioc2Vz c2lvbiwgJmFtcDtlcnJvciwgTlVMTCwgMCk7PGJyPiZuYnNwOyZuYnNwO2ZwcmludGYoc3RkZXJy LCAibGlic3NoMl9jaGFubmVsX3JlYWQ6ICVzXG4iLCBlcnJvcik7PGJyPiZuYnNwOyZuYnNwO3Jl dHVybiAxOzxicj4mbmJzcDt9PGJyPiZuYnNwO2J1ZmZlcltydl09J1wwJzs8L3A+PHA+Jm5ic3A7 cHJpbnRmKCIlc1xuIiwgYnVmZmVyKTs8L3A+PHA+Jm5ic3A7bGlic3NoMl9jaGFubmVsX2ZyZWUo Y2hhbm5lbCk7PGJyPiZuYnNwO3JldHVybiAwOzwvcD48cD59PC9wPjxwPiZuYnNwOzwvcD48cD5p bnQgdGVzdDcoKSB7PGJyPiZuYnNwO3N0cnVjdCBob3N0ZW50ICpoZW47PGJyPiZuYnNwO3N0cnVj dCBzb2NrYWRkcl9pbiBzaW47PGJyPiZuYnNwO2ludCBzc2hfc29ja2V0Ozxicj4mbmJzcDtjaGFy ICplcnJvcjs8YnI+Jm5ic3A7TElCU1NIMl9TRVNTSU9OICpzc2hfc2Vzc2lvbjs8L3A+PHA+Jm5i c3A7Jm5ic3A7c3NoX3NvY2tldCA9IHNvY2tldChBRl9JTkVULCBTT0NLX1NUUkVBTSwgMCk7PC9w PjxwPiZuYnNwO2lmKHNzaF9zb2NrZXQgJmx0OyAwKSB7PGJyPiZuYnNwOyZuYnNwO3BlcnJvcigi c29ja2V0Iik7PGJyPiZuYnNwOyZuYnNwO3JldHVybiAxOzxicj4mbmJzcDt9PC9wPjxwPiZuYnNw O3Npbi5zaW5fZmFtaWx5ID0gQUZfSU5FVDs8YnI+Jm5ic3A7c2luLnNpbl9wb3J0ID0gaHRvbnMo MjIpOzxicj4mbmJzcDtoZW49Z2V0aG9zdGJ5bmFtZSgieHh4Lnh4eC54eHgueHh4Iik7PGJyPiZu YnNwO2lmKCFoZW4pIHs8YnI+Ly8mbmJzcDsmbmJzcDtmcHJpbnRmKHN0ZGVyciwgImdldGhvc3Ri eW5hbWU6ICVzIiwgaHN0cmVycm9yKGhfZXJybm8pKTs8YnI+Jm5ic3A7Jm5ic3A7cmV0dXJuIDE7 PGJyPiZuYnNwO308YnI+Jm5ic3A7bWVtY3B5KCZhbXA7KHNpbi5zaW5fYWRkci5zX2FkZHIpLCBo ZW4tJmd0O2hfYWRkcl9saXN0WzBdLCBoZW4tJmd0O2hfbGVuZ3RoKTs8YnI+Jm5ic3A7PGJyPiZu YnNwO2lmICggY29ubmVjdChzc2hfc29ja2V0LCAoc3RydWN0IHNvY2thZGRyKikoJmFtcDtzaW4p LCBzaXplb2Yoc3RydWN0IHNvY2thZGRyX2luKSkgKSB7PGJyPiZuYnNwOyZuYnNwO3BlcnJvcigi Y29ubmVjdCIpOzxicj4mbmJzcDsmbmJzcDsvL3JldHVybiAxOzxicj4mbmJzcDt9PGJyPiZuYnNw Ozxicj4mbmJzcDtzc2hfc2Vzc2lvbiA9IGxpYnNzaDJfc2Vzc2lvbl9pbml0KCk7PGJyPiZuYnNw Ozxicj4mbmJzcDtpZiAobGlic3NoMl9zZXNzaW9uX3N0YXJ0dXAoc3NoX3Nlc3Npb24sIHNzaF9z b2NrZXQpKSB7PGJyPiZuYnNwOyZuYnNwO2xpYnNzaDJfc2Vzc2lvbl9sYXN0X2Vycm9yKHNzaF9z ZXNzaW9uLCAmYW1wO2Vycm9yLCBOVUxMLCAwKTs8YnI+Jm5ic3A7Jm5ic3A7ZnByaW50ZihzdGRl cnIsICJsaWJzc2gyX3Nlc3Npb25fc3RhcnR1cDogJXNcbiIsIGVycm9yKTs8YnI+Jm5ic3A7Jm5i c3A7cmV0dXJuIDE7PGJyPiZuYnNwO308YnI+Jm5ic3A7PGJyPiZuYnNwO2lmKGxpYnNzaDJfdXNl cmF1dGhfcGFzc3dvcmQoc3NoX3Nlc3Npb24sICJpZCIsICJwdyIpKSB7PGJyPiZuYnNwOyZuYnNw O2xpYnNzaDJfc2Vzc2lvbl9sYXN0X2Vycm9yKHNzaF9zZXNzaW9uLCAmYW1wO2Vycm9yLCBOVUxM LCAwKTs8YnI+Jm5ic3A7Jm5ic3A7ZnByaW50ZihzdGRlcnIsICJsaWJzc2gyX3VzZXJhdXRoX3Bh c3N3b3JkOiAlc1xuIiwgZXJyb3IpOzxicj4mbmJzcDsmbmJzcDtyZXR1cm4gMTs8YnI+Jm5ic3A7 fTxicj4mbmJzcDtpZihkb19jaGFubmVsKHNzaF9zZXNzaW9uKSkgcmV0dXJuIDE7PGJyPiZuYnNw O2lmKGRvX2NoYW5uZWwoc3NoX3Nlc3Npb24pKSByZXR1cm4gMTs8YnI+Jm5ic3A7cmV0dXJuIDA7 PGJyPn0mbmJzcDs8L3A+PHA+Jm5ic3A7PC9wPjxwPiZuYnNwOzwvcD48cCBzdHlsZT0ibWFyZ2lu LWxlZnQ6IDQwcHg7Ij4mbmJzcDs8L3A+PC9kaXY+Cjx0YWJsZSBzdHlsZT0iZGlzcGxheTpub25l Ij48dHI+PHRkPjxpbWcgc3JjPSJodHRwOi8vbWFpbC5uYXZlci5jb20vcmVhZFJlY2VpcHQvbm90 aWZ5Lz9pbWc9YWRlbHBybEMlMkJyQ29oQVJDYnJSQ0s0dFpNeEtySzZ1cUZBQ29heDIlMkZwQU1x SzRrU2F4MG9hQUZvTW9LZHR6RlhwNlVtS1psNVdMbDUxemxxREJGZHA2ZDVNcmVSaG9SbjE2aXFi cjJaNzYzMCUyQjRrbnR6RlRXcm01MXpKJTJGRFZscXB0JTNEJTNELmdpZiIgYm9yZGVyPSIwIj48 L3RkPjwvdHI+PC90YWJsZT4= ------=_Part_61804_940228970.1408924990590-- --===============1132599008== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 Content-Disposition: inline X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KbGlic3NoMi1k ZXZlbCBodHRwOi8vY29vbC5oYXh4LnNlL2NnaS1iaW4vbWFpbG1hbi9saXN0aW5mby9saWJzc2gy LWRldmVsCg== --===============1132599008==-- From libssh2-devel-bounces@cool.haxx.se Fri Aug 29 13:14:12 2014 Return-Path: Received: from www.haxx.se (localhost.localdomain [127.0.0.1]) by giant.haxx.se (8.14.4/8.14.4/Debian-7) with ESMTP id s7TA3Kxr001772; Fri, 29 Aug 2014 12:03:46 +0200 Received: from lvps87-230-93-31.dedicated.hosteurope.de (kappa.tutnicht.de [87.230.93.31]) by giant.haxx.se (8.14.4/8.14.4/Debian-7) with ESMTP id s7TA3IIU001650 (version=TLSv1/SSLv3 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128 verify=NOT) for ; Fri, 29 Aug 2014 12:03:19 +0200 Received: from port-53574.pppoe.wtnet.de ([46.59.209.240] helo=joerntop.localnet) by lvps87-230-93-31.dedicated.hosteurope.de with esmtpsa (TLS1.2:DHE_RSA_AES_128_CBC_SHA1:128) (Exim 4.83) (envelope-from ) id 1XNHoN-0002JM-Ii for libssh2-devel@cool.haxx.se; Fri, 29 Aug 2014 10:45:35 +0200 Date: Fri, 29 Aug 2014 10:45:31 +0200 From: Joern Heissler To: libssh2-devel@cool.haxx.se Subject: Download text file via SFTP Message-ID: <20140829084531.GA20487@joerntop.localnet> MIME-Version: 1.0 Content-Disposition: inline User-Agent: Mutt/1.5.23 (2014-03-12) X-BeenThere: libssh2-devel@cool.haxx.se X-Mailman-Version: 2.1.16 Precedence: list Reply-To: libssh2 development List-Id: libssh2 development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Errors-To: libssh2-devel-bounces@cool.haxx.se Sender: "libssh2-devel" Content-Transfer-Encoding: 8bit X-MIME-Autoconverted: from base64 to 8bit by giant.haxx.se id s7TA3Kxr001772 Hi, I'm trying to download a large text file using the sftp protocol. The remote server runs on "Maverick SSHD". I'm using libssh2-1.4.3 (debian unstable). I enabled compression and negotiated zlib because it's a text file. Next, I compared the speed to what OpenSSH's `sftp' utility achieves, and libssh2 was just terribly slow. Then I increased buffer size for libssh2_sftp_read to a big value. It helps a little, but the chunks returned by libssh2_sftp_read are exactly 2000 bytes, regardless of my setting. tcpdump shows that the packets sent by the server are mostly around 200-300 bytes which obviously is too small. I found that when I change MAX_SFTP_READ_SIZE from 2000 to a larger value, the packet size increases, as does the download speed. To me it looks like the server has strange TCP_NODELAY / TCP_CORK settings. For each request of 2000 bytes, the data is gzipped and gets sent in one tcp packet (or multiple if too large). I found that a chunk size of 13500 bytes gives me a good ratio of uncompressed_bytes / tcp_packets. The optimal value for MAX_SFTP_READ_SIZE heavily depends on the specific use case, so I ask that it's made a configurable option, please :) Thanks, Joern _______________________________________________ libssh2-devel http://cool.haxx.se/cgi-bin/mailman/listinfo/libssh2-devel