From libssh2-devel-bounces@cool.haxx.se  Wed Aug 13 15:24:40 2014
Return-Path: <libssh2-devel-bounces@cool.haxx.se>
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 <libssh2-devel@cool.haxx.se>; 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 <uhliarik@seznam.cz>
To: libssh2 development <libssh2-devel@cool.haxx.se>
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 <libssh2-devel@cool.haxx.se>
List-Id: libssh2 development <libssh2-devel.cool.haxx.se>
List-Unsubscribe: <http://cool.haxx.se/cgi-bin/mailman/options/libssh2-devel>, 
 <mailto:libssh2-devel-request@cool.haxx.se?subject=unsubscribe>
List-Archive: <http://cool.haxx.se/pipermail/libssh2-devel/>
List-Post: <mailto:libssh2-devel@cool.haxx.se>
List-Help: <mailto:libssh2-devel-request@cool.haxx.se?subject=help>
List-Subscribe: <http://cool.haxx.se/cgi-bin/mailman/listinfo/libssh2-devel>, 
 <mailto:libssh2-devel-request@cool.haxx.se?subject=subscribe>
Content-Type: text/plain; charset="utf-8"
Errors-To: libssh2-devel-bounces@cool.haxx.se
Sender: "libssh2-devel" <libssh2-devel-bounces@cool.haxx.se>
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 <uhliarik@seznam.cz>
---
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: <libssh2-devel-bounces@cool.haxx.se>
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 <libssh2-devel@cool.haxx.se>; Wed, 13 Aug 2014 15:42:58 +0200
Received: by mail-qc0-f181.google.com with SMTP id x13so4037799qcv.26
 for <libssh2-devel@cool.haxx.se>; 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 <dottedmag@dottedmag.net>
Date: Wed, 13 Aug 2014 15:42:12 +0200
X-Google-Sender-Auth: 3C05hntrioqcE16zCiAzlJMJzeo
Message-ID: <CAJGOOk-VS1gqL8_8Tk84LE3B6-0oyBje1snyMWiu+O=p6BfQ6Q@mail.gmail.com>
Subject: Re: [PATCH] - datacount
To: libssh2 development <libssh2-devel@cool.haxx.se>
X-BeenThere: libssh2-devel@cool.haxx.se
X-Mailman-Version: 2.1.16
Precedence: list
Reply-To: libssh2 development <libssh2-devel@cool.haxx.se>
List-Id: libssh2 development <libssh2-devel.cool.haxx.se>
List-Unsubscribe: <http://cool.haxx.se/cgi-bin/mailman/options/libssh2-devel>, 
 <mailto:libssh2-devel-request@cool.haxx.se?subject=unsubscribe>
List-Archive: <http://cool.haxx.se/pipermail/libssh2-devel/>
List-Post: <mailto:libssh2-devel@cool.haxx.se>
List-Help: <mailto:libssh2-devel-request@cool.haxx.se?subject=help>
List-Subscribe: <http://cool.haxx.se/cgi-bin/mailman/listinfo/libssh2-devel>, 
 <mailto:libssh2-devel-request@cool.haxx.se?subject=subscribe>
Content-Type: text/plain; charset="utf-8"
Errors-To: libssh2-devel-bounces@cool.haxx.se
Sender: "libssh2-devel" <libssh2-devel-bounces@cool.haxx.se>
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: <libssh2-devel-bounces@cool.haxx.se>
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 <libssh2-devel@cool.haxx.se>; 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 <uhliarik@seznam.cz>
To: libssh2-devel@cool.haxx.se
Date: Wed, 13 Aug 2014 16:17:40 +0200
In-Reply-To: <CAJGOOk-VS1gqL8_8Tk84LE3B6-0oyBje1snyMWiu+O=p6BfQ6Q@mail.gmail.com>
References: <1407935449.28537.12.camel@zerobox.home>
 <CAJGOOk-VS1gqL8_8Tk84LE3B6-0oyBje1snyMWiu+O=p6BfQ6Q@mail.gmail.com>
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 <libssh2-devel@cool.haxx.se>
List-Id: libssh2 development <libssh2-devel.cool.haxx.se>
List-Unsubscribe: <http://cool.haxx.se/cgi-bin/mailman/options/libssh2-devel>, 
 <mailto:libssh2-devel-request@cool.haxx.se?subject=unsubscribe>
List-Archive: <http://cool.haxx.se/pipermail/libssh2-devel/>
List-Post: <mailto:libssh2-devel@cool.haxx.se>
List-Help: <mailto:libssh2-devel-request@cool.haxx.se?subject=help>
List-Subscribe: <http://cool.haxx.se/cgi-bin/mailman/listinfo/libssh2-devel>, 
 <mailto:libssh2-devel-request@cool.haxx.se?subject=subscribe>
Content-Type: text/plain; charset="utf-8"
Errors-To: libssh2-devel-bounces@cool.haxx.se
Sender: "libssh2-devel" <libssh2-devel-bounces@cool.haxx.se>
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 <uhliarik@seznam.cz>
---

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: <libssh2-devel-bounces@cool.haxx.se>
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 <libssh2-devel@cool.haxx.se>; 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?= <hwangyaksa@naver.com>
To: libssh2-devel@cool.haxx.se
Message-ID: <c2d2a361a348c988d632eb99c83cb34@cweb03.nm.nhnsystem.com>
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?= <hwangyaksa@naver.com>,
        libssh2 development <libssh2-devel@cool.haxx.se>
List-Id: libssh2 development <libssh2-devel.cool.haxx.se>
List-Unsubscribe: <http://cool.haxx.se/cgi-bin/mailman/options/libssh2-devel>, 
 <mailto:libssh2-devel-request@cool.haxx.se?subject=unsubscribe>
List-Archive: <http://cool.haxx.se/pipermail/libssh2-devel/>
List-Post: <mailto:libssh2-devel@cool.haxx.se>
List-Help: <mailto:libssh2-devel-request@cool.haxx.se?subject=help>
List-Subscribe: <http://cool.haxx.se/cgi-bin/mailman/listinfo/libssh2-devel>, 
 <mailto:libssh2-devel-request@cool.haxx.se?subject=subscribe>
Content-Type: multipart/mixed; boundary="===============1132599008=="
Errors-To: libssh2-devel-bounces@cool.haxx.se
Sender: "libssh2-devel" <libssh2-devel-bounces@cool.haxx.se>


--===============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: <libssh2-devel-bounces@cool.haxx.se>
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 <libssh2-devel@cool.haxx.se>; 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 <libssh2@wulf.eu.org>) 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 <libssh2@wulf.eu.org>
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 <libssh2-devel@cool.haxx.se>
List-Id: libssh2 development <libssh2-devel.cool.haxx.se>
List-Unsubscribe: <http://cool.haxx.se/cgi-bin/mailman/options/libssh2-devel>, 
 <mailto:libssh2-devel-request@cool.haxx.se?subject=unsubscribe>
List-Archive: <http://cool.haxx.se/pipermail/libssh2-devel/>
List-Post: <mailto:libssh2-devel@cool.haxx.se>
List-Help: <mailto:libssh2-devel-request@cool.haxx.se?subject=help>
List-Subscribe: <http://cool.haxx.se/cgi-bin/mailman/listinfo/libssh2-devel>, 
 <mailto:libssh2-devel-request@cool.haxx.se?subject=subscribe>
Content-Type: text/plain; charset="utf-8"
Errors-To: libssh2-devel-bounces@cool.haxx.se
Sender: "libssh2-devel" <libssh2-devel-bounces@cool.haxx.se>
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

