From libssh2-devel-bounces@cool.haxx.se  Thu Oct  4 17:31:24 2018
Return-Path: <libssh2-devel-bounces@cool.haxx.se>
Received: from www.haxx.se (mail [127.0.0.1])
	by giant.haxx.se (8.15.2/8.15.2/Debian-4) with ESMTP id w94FUj7X001870;
	Thu, 4 Oct 2018 17:31:12 +0200
Received: from mail-lj1-x22d.google.com (mail-lj1-x22d.google.com
 [IPv6:2a00:1450:4864:20:0:0:0:22d])
 by giant.haxx.se (8.15.2/8.15.2/Debian-4) with ESMTPS id w94FUirG001828
 (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128 verify=NOT)
 for <libssh2-devel@cool.haxx.se>; Thu, 4 Oct 2018 17:30:44 +0200
Received: by mail-lj1-x22d.google.com with SMTP id r8-v6so8744614ljc.10
 for <libssh2-devel@cool.haxx.se>; Thu, 04 Oct 2018 08:30:45 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025;
 h=mime-version:from:date:message-id:subject:to;
 bh=QvlDdsCLaA9XMe7/bb5WWwLyRl/K1mKgG0kMv5sGeak=;
 b=vJGEF7gsHqSgxMENS+uZrei4fhb89U+VSnMhntk9bdu4MdqzOd6wa+rIaUgqZRDCHY
 0CPScATFPjRLcDndWm+v5ab/9T4yK/Azoz8N7ob6M/3lQanb1YA8l4iqZxY+IG/PUFuZ
 P7aoiSh6J8T0ca44bvgx9oih6RSUIQFe6iMQMWrLFJ9w57metj/P9Z8tcG3pzT0qArTZ
 OG7rGPAI6XoSHbEYTYfYyjeAAW0Qc8kNW/l22LRjFuq1qDsr2L3Zb3F2SveQmjUoWpsC
 fjTvw4YdJRPn7afGteu9GvkRaBT0WJtMAOtMhZWihfQRHq12UapdYV07NFrz2h5OWSk2
 uk/w==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20161025;
 h=x-gm-message-state:mime-version:from:date:message-id:subject:to;
 bh=QvlDdsCLaA9XMe7/bb5WWwLyRl/K1mKgG0kMv5sGeak=;
 b=bCXC8Vhhckb54pqvMApAKFs27hnndAl3+ryvAiF+l193ABo+k408J271HXzUgdEszf
 dOK4juFjEDZkUuXcv62IX/0KgPNDD+JBJkLRzzjTa9LOzS4vWpMFXEoaL5NTer+A4BsC
 LjwbZMe/wgu6nVUANtSdu2Yl32Wc3dKU4eAga+b9FF4gAiv/YmyDt0VhHV39IptwXt2O
 Iv6AVlsOKNYKmPnndIHJOmIfkQ1ywSSUq7bhNaTJrHZoLvf6fOPhlweuw1vsgD9uuBNU
 UuqdcC6SnoeKfGrzhTLPdAf4i5V5U8C/wS/gMS01zyQvXWLJ3c0YJKyfyjKq/Do1cOhD
 +Mug==
X-Gm-Message-State: ABuFfohLXQ/ziUehv0HTL428ViwH+Oek51Kq/jfAY8x4xNRpTCJRKK5v
 cFxN6cORYCDGuRLgNMLnNGLDku7XzWijtls7gdbE+s98O2o=
X-Google-Smtp-Source: ACcGV63wQ85+U7tUQCRqjsQYgkT0njmuk6kFNQUM6bWwxY/SmkJHlibsmeC8OgEbIOwcZK2D89uiKQWjITHWu5u37SU=
X-Received: by 2002:a2e:5859:: with SMTP id x25-v6mr3447948ljd.7.1538667039716; 
 Thu, 04 Oct 2018 08:30:39 -0700 (PDT)
MIME-Version: 1.0
From: Kannamraju P <pkannamraju@gmail.com>
Date: Thu, 4 Oct 2018 11:30:28 -0400
Message-ID: <CAOaXqMhvgbdcXpTnQmz5AhV0AXinqb6616YALmn_P1fFU-O19w@mail.gmail.com>
Subject: Optimal way to do directory listing
To: libssh2 development <libssh2-devel@cool.haxx.se>
X-BeenThere: libssh2-devel@cool.haxx.se
X-Mailman-Version: 2.1.22
Precedence: list
List-Id: libssh2 development <libssh2-devel.cool.haxx.se>
List-Unsubscribe: <https://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: <https://cool.haxx.se/cgi-bin/mailman/listinfo/libssh2-devel>, 
 <mailto:libssh2-devel-request@cool.haxx.se?subject=subscribe>
Reply-To: libssh2 development <libssh2-devel@cool.haxx.se>
Content-Type: multipart/mixed; boundary="===============1999280818=="
Errors-To: libssh2-devel-bounces@cool.haxx.se
Sender: "libssh2-devel" <libssh2-devel-bounces@cool.haxx.se>

--===============1999280818==
Content-Type: multipart/alternative; boundary="000000000000547af5057768d650"

--000000000000547af5057768d650
Content-Type: text/plain; charset="UTF-8"

Hi All,

   I am trying to do remote directory listing . If I use
"libssh2_sftp_opendir" and get details using libssh2_sftp_readdir ,I get
file details one after the other .
 With latency in network this is verify slow . Is there any better way of
doing this using libssh2.

       Any pointers would be appreciated.

-- 
thanks & Regards,
Raju

--000000000000547af5057768d650
Content-Type: text/html; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

<div dir=3D"ltr"><div dir=3D"ltr"><div dir=3D"ltr">Hi All,<div><br><div>=C2=
=A0 =C2=A0I am trying to do remote directory listing . If I use &quot;libss=
h2_sftp_opendir&quot; and get details using libssh2_sftp_readdir=C2=A0,I ge=
t file details one after the other .=C2=A0</div><div>=C2=A0With latency in =
network this is verify slow . Is there any better way of doing this using l=
ibssh2.=C2=A0</div><div>=C2=A0</div><div>=C2=A0=C2=A0 =C2=A0 =C2=A0 Any poi=
nters would be=C2=A0appreciated.<br clear=3D"all"><div><br></div>-- <br><di=
v dir=3D"ltr" class=3D"gmail_signature">thanks &amp; Regards,<br>Raju</div>=
</div></div></div></div></div>

--000000000000547af5057768d650--

--===============1999280818==
Content-Type: text/plain; charset="utf-8"
MIME-Version: 1.0
Content-Transfer-Encoding: base64
Content-Disposition: inline

X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KbGlic3NoMi1k
ZXZlbCBodHRwczovL2Nvb2wuaGF4eC5zZS9jZ2ktYmluL21haWxtYW4vbGlzdGluZm8vbGlic3No
Mi1kZXZlbAo=

--===============1999280818==--

From libssh2-devel-bounces@cool.haxx.se  Sat Oct  6 23:51:06 2018
Return-Path: <libssh2-devel-bounces@cool.haxx.se>
Received: from www.haxx.se (mail [127.0.0.1])
	by giant.haxx.se (8.15.2/8.15.2/Debian-4) with ESMTP id w96LoRPj026082;
	Sat, 6 Oct 2018 23:50:55 +0200
Received: from giant.haxx.se (mail [127.0.0.1])
 by giant.haxx.se (8.15.2/8.15.2/Debian-4) with ESMTPS id w96LoPt8026035
 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT)
 for <libssh2-devel@cool.haxx.se>; Sat, 6 Oct 2018 23:50:25 +0200
Received: from localhost (dast@localhost)
 by giant.haxx.se (8.15.2/8.15.2/Submit) with ESMTP id w96LoPlk026031
 for <libssh2-devel@cool.haxx.se>; Sat, 6 Oct 2018 23:50:25 +0200
X-Authentication-Warning: giant.haxx.se: dast owned process doing -bs
Date: Sat, 6 Oct 2018 23:50:25 +0200 (CEST)
From: Daniel Stenberg <daniel@haxx.se>
X-X-Sender: dast@giant.haxx.se
To: libssh2 development <libssh2-devel@cool.haxx.se>
Subject: Re: Optimal way to do directory listing
In-Reply-To: <CAOaXqMhvgbdcXpTnQmz5AhV0AXinqb6616YALmn_P1fFU-O19w@mail.gmail.com>
Message-ID: <alpine.DEB.2.20.1810062349430.7885@tvnag.unkk.fr>
References: <CAOaXqMhvgbdcXpTnQmz5AhV0AXinqb6616YALmn_P1fFU-O19w@mail.gmail.com>
User-Agent: Alpine 2.20 (DEB 67 2015-01-07)
X-fromdanielhimself: yes
MIME-Version: 1.0
X-BeenThere: libssh2-devel@cool.haxx.se
X-Mailman-Version: 2.1.22
Precedence: list
List-Id: libssh2 development <libssh2-devel.cool.haxx.se>
List-Unsubscribe: <https://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: <https://cool.haxx.se/cgi-bin/mailman/listinfo/libssh2-devel>, 
 <mailto:libssh2-devel-request@cool.haxx.se?subject=subscribe>
Reply-To: libssh2 development <libssh2-devel@cool.haxx.se>
Content-Type: text/plain; charset="utf-8"; Format="flowed"
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 w96LoRPj026082

On Thu, 4 Oct 2018, Kannamraju P wrote:

>   I am trying to do remote directory listing . If I use 
> "libssh2_sftp_opendir" and get details using libssh2_sftp_readdir ,I get 
> file details one after the other . With latency in network this is verify 
> slow . Is there any better way of doing this using libssh2.

That's the only API libssh2 provides for this feature today. It is certainly 
not optimized for high-RTT connections...

-- 

  / daniel.haxx.se
_______________________________________________
libssh2-devel https://cool.haxx.se/cgi-bin/mailman/listinfo/libssh2-devel

From libssh2-devel-bounces@cool.haxx.se  Mon Oct  8 23:47:05 2018
Return-Path: <libssh2-devel-bounces@cool.haxx.se>
Received: from www.haxx.se (mail [127.0.0.1])
	by giant.haxx.se (8.15.2/8.15.2/Debian-4) with ESMTP id w98LkSpw027321;
	Mon, 8 Oct 2018 23:46:55 +0200
Received: from giant.haxx.se (mail [127.0.0.1])
 by giant.haxx.se (8.15.2/8.15.2/Debian-4) with ESMTPS id w98LkQ41027312
 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT)
 for <libssh2-devel@cool.haxx.se>; Mon, 8 Oct 2018 23:46:26 +0200
Received: from localhost (dast@localhost)
 by giant.haxx.se (8.15.2/8.15.2/Submit) with ESMTP id w98LkQcV027307
 for <libssh2-devel@cool.haxx.se>; Mon, 8 Oct 2018 23:46:26 +0200
X-Authentication-Warning: giant.haxx.se: dast owned process doing -bs
Date: Mon, 8 Oct 2018 23:46:26 +0200 (CEST)
From: Daniel Stenberg <daniel@haxx.se>
X-X-Sender: dast@giant.haxx.se
To: libssh2 development <libssh2-devel@cool.haxx.se>
Subject: Time to pull together 1.9?
Message-ID: <alpine.DEB.2.20.1810082342510.6795@tvnag.unkk.fr>
User-Agent: Alpine 2.20 (DEB 67 2015-01-07)
X-fromdanielhimself: yes
MIME-Version: 1.0
X-BeenThere: libssh2-devel@cool.haxx.se
X-Mailman-Version: 2.1.22
Precedence: list
List-Id: libssh2 development <libssh2-devel.cool.haxx.se>
List-Unsubscribe: <https://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: <https://cool.haxx.se/cgi-bin/mailman/listinfo/libssh2-devel>, 
 <mailto:libssh2-devel-request@cool.haxx.se?subject=subscribe>
Reply-To: libssh2 development <libssh2-devel@cool.haxx.se>
Content-Type: text/plain; charset="utf-8"; Format="flowed"
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 w98LkSpw027321

hey,

Issue #220 (https://github.com/libssh2/libssh2/issues/220) was filed already 
in October last year asking for a new release, and we're actually quickly 
approaching the two-year anniversary since the 1.8 release (on October 25).

I'm not imposing anything onto anyone and I'm not the one doing much 
development here these days so I'm humbly asking: is it perhaps time to start 
putting a 1.9 release together?

There are some features and patches merged since 1.8 that make life easier for 
people that would be nice to ship in a proper release.

-- 

  / daniel.haxx.se
_______________________________________________
libssh2-devel https://cool.haxx.se/cgi-bin/mailman/listinfo/libssh2-devel

From libssh2-devel-bounces@cool.haxx.se  Tue Oct  9 00:18:58 2018
Return-Path: <libssh2-devel-bounces@cool.haxx.se>
Received: from www.haxx.se (mail [127.0.0.1])
	by giant.haxx.se (8.15.2/8.15.2/Debian-4) with ESMTP id w98MIfJO012436;
	Tue, 9 Oct 2018 00:18:54 +0200
Received: from foo.stuge.se (foo.stuge.se [212.116.89.98])
 by giant.haxx.se (8.15.2/8.15.2/Debian-4) with ESMTPS id w98MIdNQ012417
 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT)
 for <libssh2-devel@cool.haxx.se>; Tue, 9 Oct 2018 00:18:39 +0200
Received: (qmail 31642 invoked by uid 1000); 8 Oct 2018 22:18:35 -0000
Message-ID: <20181008221835.31641.qmail@stuge.se>
Date: Mon, 8 Oct 2018 22:18:35 +0000
From: Peter Stuge <peter@stuge.se>
To: libssh2-devel@cool.haxx.se
Subject: Re: Time to pull together 1.9?
References: <alpine.DEB.2.20.1810082342510.6795@tvnag.unkk.fr>
MIME-Version: 1.0
Content-Disposition: inline
In-Reply-To: <alpine.DEB.2.20.1810082342510.6795@tvnag.unkk.fr>
X-BeenThere: libssh2-devel@cool.haxx.se
X-Mailman-Version: 2.1.22
Precedence: list
List-Id: libssh2 development <libssh2-devel.cool.haxx.se>
List-Unsubscribe: <https://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: <https://cool.haxx.se/cgi-bin/mailman/listinfo/libssh2-devel>, 
 <mailto:libssh2-devel-request@cool.haxx.se?subject=subscribe>
Reply-To: libssh2 development <libssh2-devel@cool.haxx.se>
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 w98MIfJO012436

Daniel Stenberg wrote:
> perhaps time to start putting a 1.9 release together?

I can look at getting axTLS crypto support in, but last time I looked
the libssh2 repo had some changes for the worse. :\ I'll look again
in the next days, probably day after tomorrow.


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

From libssh2-devel-bounces@cool.haxx.se  Tue Oct  9 10:03:25 2018
Return-Path: <libssh2-devel-bounces@cool.haxx.se>
Received: from www.haxx.se (mail [127.0.0.1])
	by giant.haxx.se (8.15.2/8.15.2/Debian-4) with ESMTP id w9982r6Z015631;
	Tue, 9 Oct 2018 10:03:15 +0200
Received: from giant.haxx.se (mail [127.0.0.1])
 by giant.haxx.se (8.15.2/8.15.2/Debian-4) with ESMTPS id w9982q2j015625
 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT)
 for <libssh2-devel@cool.haxx.se>; Tue, 9 Oct 2018 10:02:52 +0200
Received: from localhost (dast@localhost)
 by giant.haxx.se (8.15.2/8.15.2/Submit) with ESMTP id w9982pnD015620
 for <libssh2-devel@cool.haxx.se>; Tue, 9 Oct 2018 10:02:52 +0200
X-Authentication-Warning: giant.haxx.se: dast owned process doing -bs
Date: Tue, 9 Oct 2018 10:02:51 +0200 (CEST)
From: Daniel Stenberg <daniel@haxx.se>
X-X-Sender: dast@giant.haxx.se
To: libssh2 development <libssh2-devel@cool.haxx.se>
Subject: Re: Time to pull together 1.9?
In-Reply-To: <20181008221835.31641.qmail@stuge.se>
Message-ID: <alpine.DEB.2.20.1810090957390.6795@tvnag.unkk.fr>
References: <alpine.DEB.2.20.1810082342510.6795@tvnag.unkk.fr>
 <20181008221835.31641.qmail@stuge.se>
User-Agent: Alpine 2.20 (DEB 67 2015-01-07)
X-fromdanielhimself: yes
MIME-Version: 1.0
X-BeenThere: libssh2-devel@cool.haxx.se
X-Mailman-Version: 2.1.22
Precedence: list
List-Id: libssh2 development <libssh2-devel.cool.haxx.se>
List-Unsubscribe: <https://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: <https://cool.haxx.se/cgi-bin/mailman/listinfo/libssh2-devel>, 
 <mailto:libssh2-devel-request@cool.haxx.se?subject=subscribe>
Reply-To: libssh2 development <libssh2-devel@cool.haxx.se>
Content-Type: text/plain; charset="utf-8"; Format="flowed"
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 w9982r6Z015631

On Mon, 8 Oct 2018, Peter Stuge wrote:

> I can look at getting axTLS crypto support in, but last time I looked the 
> libssh2 repo had some changes for the worse. :\ I'll look again in the next 
> days, probably day after tomorrow.

Just a FYI: in the curl project we're dropping axTLS support (and will soon 
remove that code) for TLS because of several reasons[1]. We no longer consider 
it a good idea to recommend our users to build code with this library since we 
doubt its quality and its ability/desire to fix those issues.

Now, SSH has different needs than TLS so the situation isn't exactly 
identical, but I would advice caution to anyone building anything that uses 
axTLS today.

[1] = https://curl.haxx.se/dev/deprecate.html

-- 

  / daniel.haxx.se
_______________________________________________
libssh2-devel https://cool.haxx.se/cgi-bin/mailman/listinfo/libssh2-devel

From libssh2-devel-bounces@cool.haxx.se  Tue Oct  9 18:57:10 2018
Return-Path: <libssh2-devel-bounces@cool.haxx.se>
Received: from www.haxx.se (mail [127.0.0.1])
	by giant.haxx.se (8.15.2/8.15.2/Debian-4) with ESMTP id w99GuaOn029168;
	Tue, 9 Oct 2018 18:56:59 +0200
Received: from mail.panic.com (mail.panic.com [38.103.165.36])
 by giant.haxx.se (8.15.2/8.15.2/Debian-4) with ESMTPS id w99GuXVH029054
 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT)
 for <libssh2-devel@cool.haxx.se>; Tue, 9 Oct 2018 18:56:34 +0200
Received: from [10.0.0.227] (unknown [10.0.0.227])
 (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))
 (No client certificate requested)
 by mail.panic.com (Postfix) with ESMTPSA id C39BF1C3AF
 for <libssh2-devel@cool.haxx.se>; Tue,  9 Oct 2018 09:56:28 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=panic.com; s=dkim;
 t=1539104188; bh=j0ipRzATm95wcl8JJT0szMMXJRrnt2ehVbPIqXVDGts=;
 h=From:Subject:Date:References:To:In-Reply-To;
 b=mfGJXOHUhqFBNzm5l7DpmMordiaBjzbbgKhZMAYtmOC2sPGr0iD2eVX4qOFElOSlq
 4JlcljXHN+/UsNDnRXNuKVAnL0yWbqQ9c0QGjl3FemsNarTl3Hu7MIcBqEsKtm6wI8
 AfANZTF+rhNilkkRZDcAbq2B0ShkIJUJj3m5r9uY=
From: Will Cosgrove <will@panic.com>
Mime-Version: 1.0 (Mac OS X Mail 12.0 \(3445.100.39\))
Subject: Re: Time to pull together 1.9?
Date: Tue, 9 Oct 2018 09:56:28 -0700
References: <alpine.DEB.2.20.1810082342510.6795@tvnag.unkk.fr>
To: libssh2 development <libssh2-devel@cool.haxx.se>
In-Reply-To: <alpine.DEB.2.20.1810082342510.6795@tvnag.unkk.fr>
Message-Id: <A3334A8E-60B7-4958-AAC4-4651E922ECC7@panic.com>
X-Mailer: Apple Mail (2.3445.100.39)
X-MIME-Autoconverted: from quoted-printable to 8bit by giant.haxx.se id
 w99GuXVH029054
X-BeenThere: libssh2-devel@cool.haxx.se
X-Mailman-Version: 2.1.22
Precedence: list
List-Id: libssh2 development <libssh2-devel.cool.haxx.se>
List-Unsubscribe: <https://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: <https://cool.haxx.se/cgi-bin/mailman/listinfo/libssh2-devel>, 
 <mailto:libssh2-devel-request@cool.haxx.se?subject=subscribe>
Reply-To: libssh2 development <libssh2-devel@cool.haxx.se>
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 w99GuaOn029168

Definitely think it’s time. 

Beyond a couple of nice PRs that haven’t been verified yet (thinking of agent forwarding specifically) it’s in good shape and people are wanting an official release.  

A co-worker of mine will be looking at the agent forwarding code soon and I have ETM and ChaChaPoly 20 code to submit back to the project when time allows. Perhaps the next release could come quicker than 2 years. :-)

Cheers,
Will

> On Oct 8, 2018, at 2:46 PM, Daniel Stenberg <daniel@haxx.se> wrote:
> 
> hey,
> 
> Issue #220 (https://github.com/libssh2/libssh2/issues/220) was filed already in October last year asking for a new release, and we're actually quickly approaching the two-year anniversary since the 1.8 release (on October 25).
> 
> I'm not imposing anything onto anyone and I'm not the one doing much development here these days so I'm humbly asking: is it perhaps time to start putting a 1.9 release together?
> 
> There are some features and patches merged since 1.8 that make life easier for people that would be nice to ship in a proper release.
> 
> -- 
> 
> / daniel.haxx.se
> _______________________________________________
> libssh2-devel https://cool.haxx.se/cgi-bin/mailman/listinfo/libssh2-devel


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

From libssh2-devel-bounces@cool.haxx.se  Thu Oct 11 06:14:16 2018
Return-Path: <libssh2-devel-bounces@cool.haxx.se>
Received: from www.haxx.se (mail [127.0.0.1])
	by giant.haxx.se (8.15.2/8.15.2/Debian-4) with ESMTP id w9B4DWlM019942;
	Thu, 11 Oct 2018 06:14:04 +0200
Received: from m15-113.126.com (m15-113.126.com [220.181.15.113])
 by giant.haxx.se (8.15.2/8.15.2/Debian-4) with ESMTP id w9B4DTui019885
 for <libssh2-devel@cool.haxx.se>; Thu, 11 Oct 2018 06:13:30 +0200
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=126.com;
 s=s110527; h=Date:From:Subject:Mime-Version:Message-ID; bh=/1ciF
 3k4+/4WSYv5GTQhdyLalGqj4O96mMUNSytF/P4=; b=hdI5xIhAXrxnoC44gVlRs
 keXhGdDFfrozpazZkNa1zMV9eya71NBfK/FmrzZflxuCWXswlbE0Gl0FyZcq3StW
 dn5OsLsVJbn9mypZwwNvcd8ppALUKhIxirrlFA3XB22dO/NzlRnoDeL76J2sSXHf
 rLAh9hELXqi1FONNzHK0U0=
Received: from HUGELANDTECH (unknown [180.169.44.50])
 by smtp3 (Coremail) with SMTP id DcmowAAXvubmzb5b7LUeKQ--.42852S2;
 Thu, 11 Oct 2018 12:13:27 +0800 (CST)
Date: Thu, 11 Oct 2018 12:13:26 +0800
From: "Samuel Zhao" <samuelzhao@126.com>
To: libssh2-devel <libssh2-devel@cool.haxx.se>
Subject: Help: is there any funciton to mv file from src to dest?
X-Priority: 3
X-Has-Attach: no
X-Mailer: Foxmail 7, 2, 7, 21[cn]
Mime-Version: 1.0
Message-ID: <201810111213244237513@126.com>
X-CM-TRANSID: DcmowAAXvubmzb5b7LUeKQ--.42852S2
X-Coremail-Antispam: 1Uf129KBjDUn29KB7ZKAUJUUUUU529EdanIXcx71UUUUU7v73
 VFW2AGmfu7bjvjm3AaLaJ3UbIYCTnIWIevJa73UjIFyTuYvjxUY5r4UUUUU
X-Originating-IP: [180.169.44.50]
X-CM-SenderInfo: 5vdp3v5o2kt0a6rslhhfrp/1tbiVwfcO1pD6eBIogAAsN
X-BeenThere: libssh2-devel@cool.haxx.se
X-Mailman-Version: 2.1.22
Precedence: list
List-Id: libssh2 development <libssh2-devel.cool.haxx.se>
List-Unsubscribe: <https://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: <https://cool.haxx.se/cgi-bin/mailman/listinfo/libssh2-devel>, 
 <mailto:libssh2-devel-request@cool.haxx.se?subject=subscribe>
Reply-To: libssh2 development <libssh2-devel@cool.haxx.se>
Content-Type: multipart/mixed; boundary="===============1244132681=="
Errors-To: libssh2-devel-bounces@cool.haxx.se
Sender: "libssh2-devel" <libssh2-devel-bounces@cool.haxx.se>

This is a multi-part message in MIME format.

--===============1244132681==
Content-Type: multipart/alternative;
	boundary="----=_001_NextPart522241205033_=----"

This is a multi-part message in MIME format.

------=_001_NextPart522241205033_=----
Content-Type: text/plain;
	charset="us-ascii"
Content-Transfer-Encoding: base64

IEhlbGxvIEFsbCwNCg0KVGhhbmtzIGZvciB5b3VyIGFueSBoZWxwLg0KSSd2ZSBhIHJlcXVlc3Qg
dG8gbXYgZmlsZXMgZnJvbSBvbmUgZm9sZGVyIHRvIGFub3RoZXIgZm9sZGVyLCBsaWtlIGxpbnV4
IGNtZCA6IG12IC9zcmMvZmlsZW5hbWUxIC9kc3QvZmlsZW5hbWUyLg0KDQpJJ20gbm90IHN1cmUg
d2hldGhlciB0aGVyIGlzIGFueSBhdmFpbGFibGUgZnVuY3Rpb24gdG8gZG8gdGhpcy4gQW55IHN1
Z2dlc3Rpb24/DQoNClRoYW5rcyBhIGxvdC4NCiANCg0KDQpTYW11ZWwgWmhhbw0K

------=_001_NextPart522241205033_=----
Content-Type: text/html;
	charset="us-ascii"
Content-Transfer-Encoding: quoted-printable

<html><head><meta http-equiv=3D"content-type" content=3D"text/html; charse=
t=3Dus-ascii"><style>body { line-height: 1.5; }body { font-size: 10.5pt; f=
ont-family: ????; color: rgb(0, 0, 0); line-height: 1.5; }body { font-size=
: 10.5pt; color: rgb(0, 0, 0); line-height: 1.5; font-family: ??; }</style=
></head><body>=0A<div><span></span>&nbsp;Hello All,</div><div><br></div><d=
iv>Thanks for your any help.</div><div>I've a request to mv files from one=
 folder to another folder, like linux cmd : mv /src/filename1 /dst/filenam=
e2.</div><div><br></div><div>I'm not sure whether ther is any available fu=
nction to do this. Any suggestion?</div><div><br></div><div>Thanks a lot.<=
/div>=0A<div>&nbsp;</div>=0A<hr style=3D"WIDTH: 210px; HEIGHT: 1px" align=
=3D"left" color=3D"#b5c4df" size=3D"1">=0A<div><span>Samuel Zhao</span></d=
iv>=0A</body></html>
------=_001_NextPart522241205033_=------


--===============1244132681==
Content-Type: text/plain; charset="utf-8"
MIME-Version: 1.0
Content-Transfer-Encoding: base64
Content-Disposition: inline

X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KbGlic3NoMi1k
ZXZlbCBodHRwczovL2Nvb2wuaGF4eC5zZS9jZ2ktYmluL21haWxtYW4vbGlzdGluZm8vbGlic3No
Mi1kZXZlbAo=

--===============1244132681==--

From libssh2-devel-bounces@cool.haxx.se  Thu Oct 11 09:23:01 2018
Return-Path: <libssh2-devel-bounces@cool.haxx.se>
Received: from www.haxx.se (mail [127.0.0.1])
	by giant.haxx.se (8.15.2/8.15.2/Debian-4) with ESMTP id w9B7MTQM028075;
	Thu, 11 Oct 2018 09:22:53 +0200
Received: from mail-it1-x129.google.com (mail-it1-x129.google.com
 [IPv6:2607:f8b0:4864:20:0:0:0:129])
 by giant.haxx.se (8.15.2/8.15.2/Debian-4) with ESMTPS id w9B7MQEA028005
 (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128 verify=NOT)
 for <libssh2-devel@cool.haxx.se>; Thu, 11 Oct 2018 09:22:27 +0200
Received: by mail-it1-x129.google.com with SMTP id p64-v6so11807042itp.0
 for <libssh2-devel@cool.haxx.se>; Thu, 11 Oct 2018 00:22:28 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=segall-net.20150623.gappssmtp.com; s=20150623;
 h=mime-version:references:in-reply-to:from:date:message-id:subject:to;
 bh=B8yTOcJZbJaCrFZ4Wd/+KstvIPddIkBeia74nOat/30=;
 b=loC6ttxtRLBNBFq61zMO/+WPJJf660NBg+MwOQh5eIAqeKSX0BYmmUj9GdmOVRocas
 F8jwEhdWXBPaWjbIDPh91zApn1R7lbpffjeAw4qkEXG0ZeUuXx8teZlgoJM4NEPa5kbt
 dcJmrKtCFjR+G2Y0+hLUHsvljV1Jr9ZTlip2Kh4MJvA5Hn+5cJAWkeOg9e3V19pi1qVU
 LYx2jlitrKZ88WM+eelwj+vcfTji2NoqK2whgx6hEaAac/HgkFqLNKtzO7e3r6FqHGRD
 rayb+qoyKzP31sy5KrYujz1InDZPDQl9d7vO3E8YCdvWMvoI0xvexZLCa8r/6dazL+4H
 tydA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20161025;
 h=x-gm-message-state:mime-version:references:in-reply-to:from:date
 :message-id:subject:to;
 bh=B8yTOcJZbJaCrFZ4Wd/+KstvIPddIkBeia74nOat/30=;
 b=bMnFWzfr+7oiX237qeU8r5SgDhUkv5soqxYoJqkq2N7gel2CP5YuMymRDBTsDqbt5D
 TLYbwwfjX2xK/DNOPPdVlpPZZe9D2JVCMPqVMwQKdKfmoLP9dQaTyrpuIcOLNZsc9UyF
 HFzw58pe6j3O6CGIS7RHsCDQsHQMTdbaIBYF64vDW+YCMb9rovuixY+KfIB9Cmrd2YZf
 YaId8RMTkFXsg+qt94vRidwcFTQUtMHdvl0gp81IGLjG5tHU4s8GlKtgB0MjwEPMMA9E
 KHnTkPRp3pzb8DfgedKiwVDwYU95GygzC8MBuWVaLb1ivX6Uf8Mszq7UycYpwFLtL99Q
 o6tw==
X-Gm-Message-State: ABuFfoi0xrD+RGs9KAQcUY+DkgAEEL4EJsL63fIXR57yV1oxL4weazEJ
 bkGaoxWxovb3IKeqcq7nX4eJH70fbOLDaB4KsxDs3w==
X-Google-Smtp-Source: ACcGV617vysVRr96C1YwWUs3teGUWwPqJ7HaPdYxRFb8HDxYURJ1zjEKT6AqL3xDuoJLp+6c48QF+IsfGugMe907vds=
X-Received: by 2002:a24:b8c5:: with SMTP id
 m188-v6mr529885ite.27.1539242541382; 
 Thu, 11 Oct 2018 00:22:21 -0700 (PDT)
MIME-Version: 1.0
References: <201810111213244237513@126.com>
In-Reply-To: <201810111213244237513@126.com>
From: Bill Segall <bill@segall.net>
Date: Thu, 11 Oct 2018 17:22:08 +1000
Message-ID: <CANEd7W_OyGzV6HM3F+23c+LYKLBa1cXO9anMe2280ZaAZk+hVw@mail.gmail.com>
Subject: Re: Help: is there any funciton to mv file from src to dest?
To: libssh2 development <libssh2-devel@cool.haxx.se>
X-BeenThere: libssh2-devel@cool.haxx.se
X-Mailman-Version: 2.1.22
Precedence: list
List-Id: libssh2 development <libssh2-devel.cool.haxx.se>
List-Unsubscribe: <https://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: <https://cool.haxx.se/cgi-bin/mailman/listinfo/libssh2-devel>, 
 <mailto:libssh2-devel-request@cool.haxx.se?subject=subscribe>
Reply-To: libssh2 development <libssh2-devel@cool.haxx.se>
Content-Type: multipart/mixed; boundary="===============0758302167=="
Errors-To: libssh2-devel-bounces@cool.haxx.se
Sender: "libssh2-devel" <libssh2-devel-bounces@cool.haxx.se>

--===============0758302167==
Content-Type: multipart/alternative; boundary="000000000000e702670577eed45d"

--000000000000e702670577eed45d
Content-Type: text/plain; charset="UTF-8"

Are you looking for rename
<http://man7.org/linux/man-pages/man2/rename.2.html>?

Bill.


On Thu, Oct 11, 2018 at 2:18 PM Samuel Zhao <samuelzhao@126.com> wrote:

>  Hello All,
>
> Thanks for your any help.
> I've a request to mv files from one folder to another folder, like linux
> cmd : mv /src/filename1 /dst/filename2.
>
> I'm not sure whether ther is any available function to do this. Any
> suggestion?
>
> Thanks a lot.
>
> ------------------------------
> Samuel Zhao
> _______________________________________________
> libssh2-devel https://cool.haxx.se/cgi-bin/mailman/listinfo/libssh2-devel
>

--000000000000e702670577eed45d
Content-Type: text/html; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

<div dir=3D"ltr">Are you looking for <a href=3D"http://man7.org/linux/man-p=
ages/man2/rename.2.html">rename</a>?<div><br clear=3D"all"><div><div dir=3D=
"ltr" class=3D"gmail_signature" data-smartmail=3D"gmail_signature"><div dir=
=3D"ltr">Bill.</div></div></div><br></div></div><br><div class=3D"gmail_quo=
te"><div dir=3D"ltr">On Thu, Oct 11, 2018 at 2:18 PM Samuel Zhao &lt;<a hre=
f=3D"mailto:samuelzhao@126.com">samuelzhao@126.com</a>&gt; wrote:<br></div>=
<blockquote class=3D"gmail_quote" style=3D"margin:0 0 0 .8ex;border-left:1p=
x #ccc solid;padding-left:1ex"><div>
<div><span></span>=C2=A0Hello All,</div><div><br></div><div>Thanks for your=
 any help.</div><div>I&#39;ve a request to mv files from one folder to anot=
her folder, like linux cmd : mv /src/filename1 /dst/filename2.</div><div><b=
r></div><div>I&#39;m not sure whether ther is any available function to do =
this. Any suggestion?</div><div><br></div><div>Thanks a lot.</div>
<div>=C2=A0</div>
<hr style=3D"WIDTH:210px;HEIGHT:1px" align=3D"left" color=3D"#b5c4df" size=
=3D"1">
<div><span>Samuel Zhao</span></div>
</div>_______________________________________________<br>
libssh2-devel <a href=3D"https://cool.haxx.se/cgi-bin/mailman/listinfo/libs=
sh2-devel" rel=3D"noreferrer" target=3D"_blank">https://cool.haxx.se/cgi-bi=
n/mailman/listinfo/libssh2-devel</a><br>
</blockquote></div>

--000000000000e702670577eed45d--

--===============0758302167==
Content-Type: text/plain; charset="utf-8"
MIME-Version: 1.0
Content-Transfer-Encoding: base64
Content-Disposition: inline

X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KbGlic3NoMi1k
ZXZlbCBodHRwczovL2Nvb2wuaGF4eC5zZS9jZ2ktYmluL21haWxtYW4vbGlzdGluZm8vbGlic3No
Mi1kZXZlbAo=

--===============0758302167==--

From libssh2-devel-bounces@cool.haxx.se  Fri Oct 12 09:58:24 2018
Return-Path: <libssh2-devel-bounces@cool.haxx.se>
Received: from www.haxx.se (mail [127.0.0.1])
	by giant.haxx.se (8.15.2/8.15.2/Debian-4) with ESMTP id w9C7vtt6024978;
	Fri, 12 Oct 2018 09:58:19 +0200
Received: from mail-ed1-x535.google.com (mail-ed1-x535.google.com
 [IPv6:2a00:1450:4864:20:0:0:0:535])
 by giant.haxx.se (8.15.2/8.15.2/Debian-4) with ESMTPS id w9C7teYJ023658
 (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128 verify=NOT)
 for <libssh2-devel@cool.haxx.se>; Fri, 12 Oct 2018 09:55:40 +0200
Received: by mail-ed1-x535.google.com with SMTP id c22-v6so10642330edc.4
 for <libssh2-devel@cool.haxx.se>; Fri, 12 Oct 2018 00:55:42 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025;
 h=mime-version:from:date:message-id:subject:to;
 bh=hw9K4+yTsatLhJFQSC/vxNt8jbpliZrtCo5dsl1zrkE=;
 b=HTN0yAlrG7eiCYINcBgVW8tk15rh2OZKrW2eWIsNDw36cq4wzM4fTK+4yJN0bnrzRs
 sH6D0nqOJwxxO49fjRqm+Hd8HB+pziKXqynXmcbdkdgseQkLGypiq7DtyiY/E/0OGJA1
 T4PKzSrGil5UhOq0oy4thrPgIfXVq9rfv74RNdNWJ0ODHM5cmqDNrGGFlbv/taRPMIKd
 Qmyy4tXB9zmM7/U3x044UgjSuEpJj2bR86FSrb5tylJ9FmnJ1ADOtRAclI9SnCAgBHL9
 /rfAud7YSvy5CHrJNQy+3/XVIfxTBBzGX9eHXEPiltMhlNx06BICvsa1ZQtkO+xg1ppg
 ozWw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20161025;
 h=x-gm-message-state:mime-version:from:date:message-id:subject:to;
 bh=hw9K4+yTsatLhJFQSC/vxNt8jbpliZrtCo5dsl1zrkE=;
 b=Wo3hUmMZPFAJ4BgKoKCato1EOGcBLRHoJIOuRe/BlT7UfetwfpLOG3FyO/6YgV4Lbj
 R/Pp81hez4yU/TNPqVKtIoGHtt9TzwTXgzE886B9SKFATTbFol51qp6USKRbA0e1pT7T
 Dn8accEFr8Y5ylhFkfdlc3c5vuFTuth/lpUKCxiOawbyqHjFo17MSdyTC8Q/AmUY86WE
 L++PntG+nm/r+1TYLBfX4UpdY31Z0WV67p6WK8Uf2mEL8hhU6ZmQjPfzrhCFObINGM5C
 mbd/KoAw17uLjHDWpbQM2RnBMB9Nql12I4E9+M7j+wEDKCJP9r8GB43aPTA94slPMqiP
 1wBQ==
X-Gm-Message-State: ABuFfojLgiSJWPeZZLLwJNisPHDMSjs267vww3vNm8Vh77VK2ztpwS3q
 WOvusxSesrynijmqo7tx0GXgUbYWqgNhpHPaG9nYCIrM
X-Google-Smtp-Source: ACcGV60SByyJ432YaLmKAbFKak3qVMvhvwfV8jaaJhoQvzT+q4SVkXrkg3DxWl7fbErkxpXNWEnoqXA7xg0zFvBb0o4=
X-Received: by 2002:a17:906:480e:: with SMTP id
 w14-v6mr5919055ejq.68.1539330935468; 
 Fri, 12 Oct 2018 00:55:35 -0700 (PDT)
MIME-Version: 1.0
From: Santiago Ganis <sganis@gmail.com>
Date: Fri, 12 Oct 2018 10:55:24 +0300
Message-ID: <CAPJOxpsDhjq4fa2Tm0Ykga3GiW1GaUNEX1JXbMH2BmUjo18KZg@mail.gmail.com>
Subject: libssh2 in multithreading
To: libssh2-devel@cool.haxx.se
X-BeenThere: libssh2-devel@cool.haxx.se
X-Mailman-Version: 2.1.22
Precedence: list
List-Id: libssh2 development <libssh2-devel.cool.haxx.se>
List-Unsubscribe: <https://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: <https://cool.haxx.se/cgi-bin/mailman/listinfo/libssh2-devel>, 
 <mailto:libssh2-devel-request@cool.haxx.se?subject=subscribe>
Reply-To: libssh2 development <libssh2-devel@cool.haxx.se>
Content-Type: multipart/mixed; boundary="===============1786842901=="
Errors-To: libssh2-devel-bounces@cool.haxx.se
Sender: "libssh2-devel" <libssh2-devel-bounces@cool.haxx.se>

--===============1786842901==
Content-Type: multipart/alternative; boundary="00000000000099b877057803699c"

--00000000000099b877057803699c
Content-Type: text/plain; charset="UTF-8"

Hi All,
I need to use libssh2 in a multithreading program in windows. Is there any
documentation or example?
My program will be calling different functions from different threads using
one session. Is it possible to use different sftp channels in different
threads and share a session?
Any recommendation about this design will be helpful.
Thanks.

--00000000000099b877057803699c
Content-Type: text/html; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

<div dir=3D"ltr">Hi All,<div>I need to use libssh2 in a multithreading prog=
ram in windows. Is there any documentation or example?</div><div>My program=
 will be calling different functions from different threads using one sessi=
on. Is it possible to use different sftp channels in different threads and =
share a session?=C2=A0</div><div>Any recommendation about this design will =
be helpful.</div><div>Thanks.</div></div>

--00000000000099b877057803699c--

--===============1786842901==
Content-Type: text/plain; charset="utf-8"
MIME-Version: 1.0
Content-Transfer-Encoding: base64
Content-Disposition: inline

X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KbGlic3NoMi1k
ZXZlbCBodHRwczovL2Nvb2wuaGF4eC5zZS9jZ2ktYmluL21haWxtYW4vbGlzdGluZm8vbGlic3No
Mi1kZXZlbAo=

--===============1786842901==--

From libssh2-devel-bounces@cool.haxx.se  Sat Oct 13 19:18:15 2018
Return-Path: <libssh2-devel-bounces@cool.haxx.se>
Received: from www.haxx.se (mail [127.0.0.1])
	by giant.haxx.se (8.15.2/8.15.2/Debian-4) with ESMTP id w9DHHdkx020764;
	Sat, 13 Oct 2018 19:18:02 +0200
Received: from foo.stuge.se (foo.stuge.se [212.116.89.98])
 by giant.haxx.se (8.15.2/8.15.2/Debian-4) with ESMTPS id w9DHHbU7020698
 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT)
 for <libssh2-devel@cool.haxx.se>; Sat, 13 Oct 2018 19:17:37 +0200
Received: (qmail 9943 invoked by uid 1000); 13 Oct 2018 17:17:32 -0000
Message-ID: <20181013171732.9942.qmail@stuge.se>
Date: Sat, 13 Oct 2018 17:17:32 +0000
From: Peter Stuge <peter@stuge.se>
To: libssh2-devel@cool.haxx.se
Subject: Re: libssh2 in multithreading
References: <CAPJOxpsDhjq4fa2Tm0Ykga3GiW1GaUNEX1JXbMH2BmUjo18KZg@mail.gmail.com>
MIME-Version: 1.0
Content-Disposition: inline
In-Reply-To: <CAPJOxpsDhjq4fa2Tm0Ykga3GiW1GaUNEX1JXbMH2BmUjo18KZg@mail.gmail.com>
X-BeenThere: libssh2-devel@cool.haxx.se
X-Mailman-Version: 2.1.22
Precedence: list
List-Id: libssh2 development <libssh2-devel.cool.haxx.se>
List-Unsubscribe: <https://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: <https://cool.haxx.se/cgi-bin/mailman/listinfo/libssh2-devel>, 
 <mailto:libssh2-devel-request@cool.haxx.se?subject=subscribe>
Reply-To: libssh2 development <libssh2-devel@cool.haxx.se>
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 w9DHHdkx020764

Santiago Ganis wrote:
> My program will be calling different functions from different threads using
> one session. Is it possible to use different sftp channels in different
> threads and share a session?
> Any recommendation about this design will be helpful.

libssh2 is not multithread safe so you have to lock the session.


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

From libssh2-devel-bounces@cool.haxx.se  Thu Oct 18 13:29:10 2018
Return-Path: <libssh2-devel-bounces@cool.haxx.se>
Received: from www.haxx.se (mail [127.0.0.1])
	by giant.haxx.se (8.15.2/8.15.2/Debian-4) with ESMTP id w9IBSX2J024319;
	Thu, 18 Oct 2018 13:28:58 +0200
Received: from mail-qk1-x72e.google.com (mail-qk1-x72e.google.com
 [IPv6:2607:f8b0:4864:20:0:0:0:72e])
 by giant.haxx.se (8.15.2/8.15.2/Debian-4) with ESMTPS id w9IBSVlZ024212
 (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128 verify=NOT)
 for <libssh2-devel@cool.haxx.se>; Thu, 18 Oct 2018 13:28:31 +0200
Received: by mail-qk1-x72e.google.com with SMTP id 23-v6so18460564qkh.8
 for <libssh2-devel@cool.haxx.se>; Thu, 18 Oct 2018 04:28:32 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025;
 h=mime-version:from:date:message-id:subject:to;
 bh=3UCPh0ogancYFNoEK5k8GshPtfBiBZ3nF1RkgQBQ2os=;
 b=l61btYIf6++A8GaKlTEhwUDxp8dFH6L6Xk08GWg25fPMfWL0pDMAkjdv66gukY/zrZ
 byAWRGqZK6qdXDFEhUL4lMdpHarpfJx5ewBPby29GUIm6RMJ+VnHIepIC5AzE2N/LYos
 fGqsW0ZeOcp98x010Gu3GX7T+BqEN9plCJkHsUocrYWtBBW4bGljeDChaEvcVemSI8pw
 o3iAj+umWyRjT04TGJY8myOG/q7S9qI4ZjU62j8bqgTwAjSLDJ3KT219EiOY3Ifv9M5F
 JGBt14PdtO/THmmjq0hbkWXqmInxpupx7IaLBM2cEnTtja7nlFLg7+WCXMmlxbMuFs6C
 4fGw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20161025;
 h=x-gm-message-state:mime-version:from:date:message-id:subject:to;
 bh=3UCPh0ogancYFNoEK5k8GshPtfBiBZ3nF1RkgQBQ2os=;
 b=KX/sJmoiHG+7LyvVqnFrcPZbn9fXpJ0cFkWtgIEvuJHtife/wti3Pc35oy7V/TzoPW
 op0xNvA37NQb3A3FU+eKpYWu/p7tNJq5eiQ628OWcSbwlfQTieqPAIYdXimFEQsiGXKO
 Gz7WmAKLcAA7Z88i0hNjcoq7FQtZcjbmY3MSWwZAUiDMKw3AXMdjFemz3TL07MgrM/i6
 g5uHpCDOcOCk3K+lqcdaT7whMRHT0moyeIPuZNxCfYR2wHRTNwqIyBtKeIjAapAxZUaq
 1PA7b7REVL6tn2X9I3hWxJWXuAqxODCJOGlPN2YWgORJLYOTDH4nu/5xnWJGH+luVXXI
 b1Tg==
X-Gm-Message-State: ABuFfohsZQKp76zzhRhShr8t7BVXCez/B9cB5aLv13jBvq4wVu4OgP9i
 SVR9WJFJVHDOcHY7LsEh3yNtgActfqVE1/CNMxtS1ssEzD0=
X-Google-Smtp-Source: ACcGV60TXuttaCV7iQdOHgxIgPBEVCuktInpLcLbw6YzO8dEsuSiUlBXy9pUgmWU82vq9jE5pz377k6mxbLe2tY3NVw=
X-Received: by 2002:a37:1194:: with SMTP id
 20-v6mr5047049qkr.327.1539862106211; 
 Thu, 18 Oct 2018 04:28:26 -0700 (PDT)
MIME-Version: 1.0
From: Dhananjay kumar <dhanukumar1990@gmail.com>
Date: Thu, 18 Oct 2018 16:58:14 +0530
Message-ID: <CAP1bxLnaATNiGo6+kabauMdOzG+RN38MHqghxWVk6iUMdHEBBQ@mail.gmail.com>
Subject: libssh2 APIs to configure different algorithms
To: libssh2-devel@cool.haxx.se
X-BeenThere: libssh2-devel@cool.haxx.se
X-Mailman-Version: 2.1.22
Precedence: list
List-Id: libssh2 development <libssh2-devel.cool.haxx.se>
List-Unsubscribe: <https://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: <https://cool.haxx.se/cgi-bin/mailman/listinfo/libssh2-devel>, 
 <mailto:libssh2-devel-request@cool.haxx.se?subject=subscribe>
Reply-To: libssh2 development <libssh2-devel@cool.haxx.se>
Content-Type: multipart/mixed; boundary="===============2109894961=="
Errors-To: libssh2-devel-bounces@cool.haxx.se
Sender: "libssh2-devel" <libssh2-devel-bounces@cool.haxx.se>

--===============2109894961==
Content-Type: multipart/alternative; boundary="000000000000d8081e05787f15ad"

--000000000000d8081e05787f15ad
Content-Type: text/plain; charset="UTF-8"

Hi,

We use libssh2 ssh client (verison 1.4.2) in our application and we have a
requirement to use/offer certain Key Exchange(diffie-hellman-group14-sha1
only), Encryption(aes128-cbc,aes256-cbc, aes128-gcm only), MAC(hmac-sha1,
hmac-sha1-96 only) and HostKey(ssh-rsa only)  algorithms from SSH client
end.

I am new to libssh2 and trying to figure out if there are libssh2 APIs
available to configure set of algorithms before starting a session. From
https://www.libssh2.org/ , I understand libssh2 supports all above
mentioned algorithms and also lot more. I am looking for options to disable
the extra algorithms on the fly (or) to enable only limited set of
algorithms.

Appreciate any pointers, code references.

Thanks.

--000000000000d8081e05787f15ad
Content-Type: text/html; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

<div dir=3D"ltr"><div dir=3D"ltr"><div dir=3D"ltr"><div dir=3D"ltr"><div di=
r=3D"ltr"><div dir=3D"ltr"><div dir=3D"ltr"><div dir=3D"ltr"><div dir=3D"lt=
r"><div dir=3D"ltr">Hi,<div><br></div><div>We use libssh2 ssh client (veris=
on=C2=A01.4.2) in our application and we have a requirement to use/offer ce=
rtain Key Exchange(diffie-hellman-group14-sha1 only), Encryption(aes128-cbc=
,aes256-cbc, aes128-gcm only), MAC(hmac-sha1, hmac-sha1-96 only) and HostKe=
y(ssh-rsa only)=C2=A0 algorithms from SSH client end.</div><div><br></div><=
div>I am new to libssh2 and trying to figure out if there are libssh2 APIs =
available to configure set of algorithms before starting a session. From=C2=
=A0<a href=3D"https://www.libssh2.org/">https://www.libssh2.org/</a> , I un=
derstand libssh2 supports all above mentioned algorithms and also lot more.=
 I am looking for options to disable the extra algorithms on the fly (or) t=
o enable only limited set of algorithms.</div><div><br></div><div>Appreciat=
e any pointers, code references.</div><div><br></div><div>Thanks.</div></di=
v></div></div></div></div></div></div></div></div></div>

--000000000000d8081e05787f15ad--

--===============2109894961==
Content-Type: text/plain; charset="utf-8"
MIME-Version: 1.0
Content-Transfer-Encoding: base64
Content-Disposition: inline

X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KbGlic3NoMi1k
ZXZlbCBodHRwczovL2Nvb2wuaGF4eC5zZS9jZ2ktYmluL21haWxtYW4vbGlzdGluZm8vbGlic3No
Mi1kZXZlbAo=

--===============2109894961==--

From libssh2-devel-bounces@cool.haxx.se  Fri Oct 19 10:35:24 2018
Return-Path: <libssh2-devel-bounces@cool.haxx.se>
Received: from www.haxx.se (mail [127.0.0.1])
	by giant.haxx.se (8.15.2/8.15.2/Debian-4) with ESMTP id w9J8Ysma000332;
	Fri, 19 Oct 2018 10:35:17 +0200
Received: from thoth.sbs.de (thoth.sbs.de [192.35.17.2])
 by giant.haxx.se (8.15.2/8.15.2/Debian-4) with ESMTPS id w9J8Yp0f032762
 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT)
 for <libssh2-devel@cool.haxx.se>; Fri, 19 Oct 2018 10:34:52 +0200
Received: from mail2.sbs.de (mail2.sbs.de [192.129.41.66])
 by thoth.sbs.de (8.15.2/8.15.2) with ESMTPS id w9J8Yoje005052
 (version=TLSv1.2 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK)
 for <libssh2-devel@cool.haxx.se>; Fri, 19 Oct 2018 10:34:51 +0200
Received: from DEFTHW99ERJMSX.ww902.siemens.net
 (defthw99erjmsx.ww902.siemens.net [139.22.70.135])
 by mail2.sbs.de (8.15.2/8.15.2) with ESMTPS id w9J8Yew6018650
 (version=TLSv1.2 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK)
 for <libssh2-devel@cool.haxx.se>; Fri, 19 Oct 2018 10:34:50 +0200
Received: from DENBGAT9ER4MSX.ww902.siemens.net (139.22.70.91) by
 DEFTHW99ERJMSX.ww902.siemens.net (139.22.70.135) with Microsoft SMTP Server
 (TLS) id 14.3.408.0; Fri, 19 Oct 2018 10:34:45 +0200
Received: from DEFTHW99EH2MSX.ww902.siemens.net ([169.254.12.131]) by
 DENBGAT9ER4MSX.ww902.siemens.net ([139.22.70.91]) with mapi id
 14.03.0415.000; Fri, 19 Oct 2018 10:34:44 +0200
From: "Belau, Rene" <belau.rene.ext@siemens.com>
To: libssh2 development <libssh2-devel@cool.haxx.se>
Subject: AW: libssh2 APIs to configure different algorithms
Thread-Topic: libssh2 APIs to configure different algorithms
Thread-Index: AQHUZtZLHZ30oljRYky0fCOrU6tH/qUmOWqA
Date: Fri, 19 Oct 2018 08:34:44 +0000
Message-ID: <16C23041BD880F48901C072C51AC6A2E030678F9@DEFTHW99EH2MSX.ww902.siemens.net>
References: <CAP1bxLnaATNiGo6+kabauMdOzG+RN38MHqghxWVk6iUMdHEBBQ@mail.gmail.com>
In-Reply-To: <CAP1bxLnaATNiGo6+kabauMdOzG+RN38MHqghxWVk6iUMdHEBBQ@mail.gmail.com>
Accept-Language: en-US
Content-Language: de-DE
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
x-document-confidentiality: Unrestricted
x-originating-ip: [139.22.70.45]
MIME-Version: 1.0
X-BeenThere: libssh2-devel@cool.haxx.se
X-Mailman-Version: 2.1.22
Precedence: list
List-Id: libssh2 development <libssh2-devel.cool.haxx.se>
List-Unsubscribe: <https://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: <https://cool.haxx.se/cgi-bin/mailman/listinfo/libssh2-devel>, 
 <mailto:libssh2-devel-request@cool.haxx.se?subject=subscribe>
Reply-To: libssh2 development <libssh2-devel@cool.haxx.se>
Content-Type: multipart/mixed; boundary="===============0771841070=="
Errors-To: libssh2-devel-bounces@cool.haxx.se
Sender: "libssh2-devel" <libssh2-devel-bounces@cool.haxx.se>

--===============0771841070==
Content-Language: de-DE
Content-Type: multipart/alternative;
	boundary="_000_16C23041BD880F48901C072C51AC6A2E030678F9DEFTHW99EH2MSXw_"

--_000_16C23041BD880F48901C072C51AC6A2E030678F9DEFTHW99EH2MSXw_
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64

SGksDQoNCnlvdSBjYW4gdXNlIHRoZSBmb2xsb3dpbmcgZnVuY3Rpb24gdG8gZG8gc28uDQpZb3Ug
aGF2ZSB0byBzcGVjaWZ5IGEgd2hpdGVsaXN0IG9mIGFsZ29yaXRobXMgeW91IHdhbnQgdG8gdXNl
Lg0KVGhlIGZpcnN0IGFsZ29yaXRobSBpbiB5b3VyIGxpc3Qgd2lsbCBiZSB1c2VkIGZpcnN0IGlm
IHBvc3NpYmxlIGVsc2UgdGhlIG5leHQgYWxnb3JpdGhtIHdpbGwgYmUgdHJpZWQuDQoNCk1ha2Ug
c3VyZSB5b3Ugc2V0dXAgeW91ciB3YW50ZWQgYWxnb3JpdGhtcyBmb3IgYm90aCBjb21tdW5pY2F0
aW9uIGRpcmVjdGlvbnMgY2xpZW50IDwtPiBzZXJ2ZXIgIQ0KDQpIYXZlIGEgbG9vayBhdDogbGli
c3NoMl9zZXNzaW9uX21ldGhvZHMNCi0+IHRvIGxpc3QgYXQgcnVudGltZSBhbGwgY3VycmVudGx5
IGFjdGl2ZSB1c2VkIGFsZ29yaXRobXMNCg0KSGF2ZSBhIGxvb2sgYXQ6IGxpYnNzaDJfc2Vzc2lv
bl9zdXBwb3J0ZWRfYWxncw0KLT4gdG8gZ2V0IGEgbGlzdCBhdCBydW50aW1lIGZvciBjdXJyZW50
bHkgc3VwcG9ydGVkL2ltcGxlbWVudGVkIGFsZ29yaXRobXMNCg0KDQpIYXZlIGEgbG9vayBhdDog
bGlic3NoMl9zZXNzaW9uX21ldGhvZF9wcmVmDQotPiBzZXR1cCB5b3VyIGFsZ29yaXRobXMgeW91
IHdhbnQgdG8gdXNlDQoNCi8vDQovL3Bvc3NpYmxlIGVycm9ycyBoZXJlDQovLw0KLy9PSyAtIHpl
cm8NCi8vZmFpbHVyZSAtIG5lZ2F0aXZlIG51bWJlcg0KLy8NCi8vTElCU1NIMl9FUlJPUl9JTlZB
TCAtIFRoZSByZXF1ZXN0ZWQgbWV0aG9kIHR5cGUgd2FzIGludmFsaWQuDQovL0xJQlNTSDJfRVJS
T1JfQUxMT0MgLSBBbiBpbnRlcm5hbCBtZW1vcnkgYWxsb2NhdGlvbiBjYWxsIGZhaWxlZC4NCi8v
TElCU1NIMl9FUlJPUl9NRVRIT0RfTk9UX1NVUFBPUlRFRCAtIFRoZSByZXF1ZXN0ZWQgbWV0aG9k
IGlzIG5vdCBzdXBwb3J0ZWQuDQovLw0KLy9ERVNDOg0KLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQovL2xp
YnNzaDJfc2Vzc2lvbl9tZXRob2RfcHJlZiAtIHNldCBwcmVmZXJyZWQga2V5IGV4Y2hhbmdlIG1l
dGhvZA0KLy8NCi8vc2Vzc2lvbiAtIFNlc3Npb24gaW5zdGFuY2UgYXMgcmV0dXJuZWQgYnkgbGli
c3NoMl9zZXNzaW9uX2luaXRfZXgsDQovL21ldGhvZF90eXBlIC0gT25lIG9mIHRoZSBNZXRob2Qg
VHlwZSBjb25zdGFudHMuDQovL3ByZWZzIC0gQ29tYSBkZWxpbWl0ZWQgbGlzdCBvZiBwcmVmZXJy
ZWQgbWV0aG9kcyB0byB1c2UNCi8vd2l0aCB0aGUgbW9zdCBwcmVmZXJyZWQgbGlzdGVkIGZpcnN0
IGFuZCB0aGUgbGVhc3QgcHJlZmVycmVkIGxpc3RlZCBsYXN0Lg0KLy9JZiBhIG1ldGhvZCBpcyBs
aXN0ZWQgd2hpY2ggaXMgbm90IHN1cHBvcnRlZCBieSBsaWJzc2gyDQovL2l0IHdpbGwgYmUgaWdu
b3JlZCBhbmQgbm90IHNlbnQgdG8gdGhlIHJlbW90ZSBob3N0IGR1cmluZyBwcm90b2NvbCBuZWdv
dGlhdGlvbi4NCi8vU2V0IHByZWZlcnJlZCBtZXRob2RzIHRvIGJlIG5lZ290aWF0ZWQuDQovL1Ro
ZXNlIHByZWZlcmVuY2VzIG11c3QgYmUgc2V0IHByaW9yIHRvIGNhbGxpbmcgbGlic3NoMl9zZXNz
aW9uX2hhbmRzaGFrZSwNCi8vYXMgdGhleSBhcmUgdXNlZCBkdXJpbmcgdGhlIHByb3RvY29sIGlu
aXRpYXRpb24gcGhhc2UuDQovLw0KLy8gbGlic3NoMl9zZXNzaW9uX21ldGhvZF9wcmVmKCkgY29u
c3RhbnRzDQovLyBMSUJTU0gyX01FVEhPRF9LRVggICAgICAgICAgMCAgIC8va2V5IGV4Y2hhbmdl
ICAgICAgICAgOiBjbGllbnQgPC0+IHNlcnZlcg0KLy8gTElCU1NIMl9NRVRIT0RfSE9TVEtFWSAg
ICAgIDEgICAvL2hvc3Qga2V5IGZpbmdlcnByaW50IDogY2xpZW50IDwtPiBzZXJ2ZXINCi8vIExJ
QlNTSDJfTUVUSE9EX0NSWVBUX0NTICAgICAyICAgLy9kYXRhIGVuY3J5cHRpb24gICAgICA6IGNs
aWVudCAtLT4gc2VydmVyDQovLyBMSUJTU0gyX01FVEhPRF9DUllQVF9TQyAgICAgMyAgIC8vZGF0
YSBkZWNyeXB0aW9uICAgICAgOiBjbGllbnQgPC0tIHNlcnZlcg0KLy8gTElCU1NIMl9NRVRIT0Rf
TUFDX0NTICAgICAgIDQgICAvL21hYyBoYXNoICAgICAgICAgICAgIDogY2xpZW50IC0tPiBzZXJ2
ZXINCi8vIExJQlNTSDJfTUVUSE9EX01BQ19TQyAgICAgICA1ICAgLy9tYWMgaGFzaCAgICAgICAg
ICAgICA6IGNsaWVudCA8LS0gc2VydmVyDQovLyBMSUJTU0gyX01FVEhPRF9DT01QX0NTICAgICAg
NiAgIC8vZGF0YSBjb21wcmVzc2lvbiAgICAgOiBjbGllbnQgLS0+IHNlcnZlcg0KLy8gTElCU1NI
Ml9NRVRIT0RfQ09NUF9TQyAgICAgIDcgICAvL2RhdGEgZGVjb21wcmVzc2lvbiAgIDogY2xpZW50
IDwtLSBzZXJ2ZXINCi8vIExJQlNTSDJfTUVUSE9EX0xBTkdfQ1MgICAgICA4ICAgLy9sYW5ndWFn
ZSBzc2ggbG9naW4gICA6IGNsaWVudCAtLT4gc2VydmVyDQovLyBMSUJTU0gyX01FVEhPRF9MQU5H
X1NDICAgICAgOSAgIC8vbGFuZ3VhZ2UgbG9jYWwgICAgICAgOiBjbGllbnQgPC0tIHNlcnZlcg0K
Ly8NCi8vUkVUVVJOOiBpbnQNCi8vDQoNCmxpYnNzaDJfc2Vzc2lvbl9tZXRob2RfcHJlZihoYW5k
bGVTZXNzaW9uLCBMSUJTU0gyX01FVEhPRF9DUllQVF9DUywgUHJlZmVyZWRBbGdvcml0aG1MaXN0
KTsNCmxpYnNzaDJfc2Vzc2lvbl9tZXRob2RfcHJlZihoYW5kbGVTZXNzaW9uLCBMSUJTU0gyX01F
VEhPRF9DUllQVF9TQywgUHJlZmVyZWRBbGdvcml0aG1MaXN0KTsNCg0KLy8gYmFkIGV4YW1wbGUN
ClByZWZlcmVkQWxnb3JpdGhtTGlzdCA9ICJhZXMxMjgtY2JjLGFlczI1Ni1jYmMsYWVzMTI4LWdj
bSINCi0+IGZpcnN0IHRyaWVzIGFlczEyOC1jYmMNCi0+IGZpcnN0IHRyaWVzIGFlczI1Ni1jYmMN
Ci0+IGZpcnN0IHRyaWVzIGFlczEyOC1nY20NCg0KLy8gYmV0dGVyIGV4YW1wbGUsIHRyaWVzIGZp
cnN0IGhpZ2hlc3QgaWYgbm90IHBvc3NpYmxlIGdvIGRvd24NClByZWZlcmVkQWxnb3JpdGhtTGlz
dCA9ICJhZXMyNTYtY2JjLGFlczEyOC1jYmMsYWVzMTI4LWdjbSINCi0+IGZpcnN0IHRyaWVzIGFl
czI1Ni1jYmMNCi0+IGZpcnN0IHRyaWVzIGFlczEyOC1jYmMNCi0+IGZpcnN0IHRyaWVzIGFlczEy
OC1nY20NCg0KPT4gM2Rlcy1jYmMgb3IgYmxvd2Zpc2gtY2JjIGZvciBleGFtcGxlIG5ldmVyIHVz
ZWQgZm9yIGVuY3J5cHRpb24uDQoNCi8vIGFsZ29yaXRobSB3aGljaCBhcmUgbm90IHNwZWNpZmll
ZCBhcmUgbm90IHVzZWQgISB0aGVyZSBpcyBubyBoaWRkZW4gdHJ5Lg0KDQoNCg0KVm9uOiBsaWJz
c2gyLWRldmVsIFttYWlsdG86bGlic3NoMi1kZXZlbC1ib3VuY2VzQGNvb2wuaGF4eC5zZV0gSW0g
QXVmdHJhZyB2b24gRGhhbmFuamF5IGt1bWFyDQpHZXNlbmRldDogRG9ubmVyc3RhZywgMTguIE9r
dG9iZXIgMjAxOCAxMzoyOA0KQW46IGxpYnNzaDItZGV2ZWxAY29vbC5oYXh4LnNlDQpCZXRyZWZm
OiBsaWJzc2gyIEFQSXMgdG8gY29uZmlndXJlIGRpZmZlcmVudCBhbGdvcml0aG1zDQoNCkhpLA0K
DQpXZSB1c2UgbGlic3NoMiBzc2ggY2xpZW50ICh2ZXJpc29uIDEuNC4yKSBpbiBvdXIgYXBwbGlj
YXRpb24gYW5kIHdlIGhhdmUgYSByZXF1aXJlbWVudCB0byB1c2Uvb2ZmZXIgY2VydGFpbiBLZXkg
RXhjaGFuZ2UoZGlmZmllLWhlbGxtYW4tZ3JvdXAxNC1zaGExIG9ubHkpLCBFbmNyeXB0aW9uKGFl
czEyOC1jYmMsYWVzMjU2LWNiYywgYWVzMTI4LWdjbSBvbmx5KSwgTUFDKGhtYWMtc2hhMSwgaG1h
Yy1zaGExLTk2IG9ubHkpIGFuZCBIb3N0S2V5KHNzaC1yc2Egb25seSkgIGFsZ29yaXRobXMgZnJv
bSBTU0ggY2xpZW50IGVuZC4NCg0KSSBhbSBuZXcgdG8gbGlic3NoMiBhbmQgdHJ5aW5nIHRvIGZp
Z3VyZSBvdXQgaWYgdGhlcmUgYXJlIGxpYnNzaDIgQVBJcyBhdmFpbGFibGUgdG8gY29uZmlndXJl
IHNldCBvZiBhbGdvcml0aG1zIGJlZm9yZSBzdGFydGluZyBhIHNlc3Npb24uIEZyb20gaHR0cHM6
Ly93d3cubGlic3NoMi5vcmcvICwgSSB1bmRlcnN0YW5kIGxpYnNzaDIgc3VwcG9ydHMgYWxsIGFi
b3ZlIG1lbnRpb25lZCBhbGdvcml0aG1zIGFuZCBhbHNvIGxvdCBtb3JlLiBJIGFtIGxvb2tpbmcg
Zm9yIG9wdGlvbnMgdG8gZGlzYWJsZSB0aGUgZXh0cmEgYWxnb3JpdGhtcyBvbiB0aGUgZmx5IChv
cikgdG8gZW5hYmxlIG9ubHkgbGltaXRlZCBzZXQgb2YgYWxnb3JpdGhtcy4NCg0KQXBwcmVjaWF0
ZSBhbnkgcG9pbnRlcnMsIGNvZGUgcmVmZXJlbmNlcy4NCg0KVGhhbmtzLg0K

--_000_16C23041BD880F48901C072C51AC6A2E030678F9DEFTHW99EH2MSXw_
Content-Type: text/html; charset="utf-8"
Content-Transfer-Encoding: base64

PGh0bWwgeG1sbnM6dj0idXJuOnNjaGVtYXMtbWljcm9zb2Z0LWNvbTp2bWwiIHhtbG5zOm89InVy
bjpzY2hlbWFzLW1pY3Jvc29mdC1jb206b2ZmaWNlOm9mZmljZSIgeG1sbnM6dz0idXJuOnNjaGVt
YXMtbWljcm9zb2Z0LWNvbTpvZmZpY2U6d29yZCIgeG1sbnM6bT0iaHR0cDovL3NjaGVtYXMubWlj
cm9zb2Z0LmNvbS9vZmZpY2UvMjAwNC8xMi9vbW1sIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
VFIvUkVDLWh0bWw0MCI+DQo8aGVhZD4NCjxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIg
Y29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04Ij4NCjxtZXRhIG5hbWU9IkdlbmVyYXRv
ciIgY29udGVudD0iTWljcm9zb2Z0IFdvcmQgMTQgKGZpbHRlcmVkIG1lZGl1bSkiPg0KPHN0eWxl
PjwhLS0NCi8qIEZvbnQgRGVmaW5pdGlvbnMgKi8NCkBmb250LWZhY2UNCgl7Zm9udC1mYW1pbHk6
U2ltU3VuOw0KCXBhbm9zZS0xOjIgMSA2IDAgMyAxIDEgMSAxIDE7fQ0KQGZvbnQtZmFjZQ0KCXtm
b250LWZhbWlseTpTaW1TdW47DQoJcGFub3NlLTE6MiAxIDYgMCAzIDEgMSAxIDEgMTt9DQpAZm9u
dC1mYWNlDQoJe2ZvbnQtZmFtaWx5OlRhaG9tYTsNCglwYW5vc2UtMToyIDExIDYgNCAzIDUgNCA0
IDIgNDt9DQpAZm9udC1mYWNlDQoJe2ZvbnQtZmFtaWx5OiJcQFNpbVN1biI7DQoJcGFub3NlLTE6
MiAxIDYgMCAzIDEgMSAxIDEgMTt9DQovKiBTdHlsZSBEZWZpbml0aW9ucyAqLw0KcC5Nc29Ob3Jt
YWwsIGxpLk1zb05vcm1hbCwgZGl2Lk1zb05vcm1hbA0KCXttYXJnaW46MGNtOw0KCW1hcmdpbi1i
b3R0b206LjAwMDFwdDsNCglmb250LXNpemU6MTIuMHB0Ow0KCWZvbnQtZmFtaWx5OiJUaW1lcyBO
ZXcgUm9tYW4iLCJzZXJpZiI7fQ0KYTpsaW5rLCBzcGFuLk1zb0h5cGVybGluaw0KCXttc28tc3R5
bGUtcHJpb3JpdHk6OTk7DQoJY29sb3I6Ymx1ZTsNCgl0ZXh0LWRlY29yYXRpb246dW5kZXJsaW5l
O30NCmE6dmlzaXRlZCwgc3Bhbi5Nc29IeXBlcmxpbmtGb2xsb3dlZA0KCXttc28tc3R5bGUtcHJp
b3JpdHk6OTk7DQoJY29sb3I6cHVycGxlOw0KCXRleHQtZGVjb3JhdGlvbjp1bmRlcmxpbmU7fQ0K
cC5Nc29MaXN0UGFyYWdyYXBoLCBsaS5Nc29MaXN0UGFyYWdyYXBoLCBkaXYuTXNvTGlzdFBhcmFn
cmFwaA0KCXttc28tc3R5bGUtcHJpb3JpdHk6MzQ7DQoJbWFyZ2luLXRvcDowY207DQoJbWFyZ2lu
LXJpZ2h0OjBjbTsNCgltYXJnaW4tYm90dG9tOjBjbTsNCgltYXJnaW4tbGVmdDozNi4wcHQ7DQoJ
bWFyZ2luLWJvdHRvbTouMDAwMXB0Ow0KCWZvbnQtc2l6ZToxMi4wcHQ7DQoJZm9udC1mYW1pbHk6
IlRpbWVzIE5ldyBSb21hbiIsInNlcmlmIjt9DQpzcGFuLkUtTWFpbEZvcm1hdHZvcmxhZ2UxNw0K
CXttc28tc3R5bGUtdHlwZTpwZXJzb25hbC1yZXBseTsNCglmb250LWZhbWlseToiQXJpYWwiLCJz
YW5zLXNlcmlmIjsNCgljb2xvcjojMUY0OTdEO30NCi5Nc29DaHBEZWZhdWx0DQoJe21zby1zdHls
ZS10eXBlOmV4cG9ydC1vbmx5Ow0KCWZvbnQtZmFtaWx5OiJDYWxpYnJpIiwic2Fucy1zZXJpZiI7
fQ0KQHBhZ2UgV29yZFNlY3Rpb24xDQoJe3NpemU6NjEyLjBwdCA3OTIuMHB0Ow0KCW1hcmdpbjo3
Mi4wcHQgNzIuMHB0IDcyLjBwdCA3Mi4wcHQ7fQ0KZGl2LldvcmRTZWN0aW9uMQ0KCXtwYWdlOldv
cmRTZWN0aW9uMTt9DQovKiBMaXN0IERlZmluaXRpb25zICovDQpAbGlzdCBsMA0KCXttc28tbGlz
dC1pZDo2NzQwNjcwOTU7DQoJbXNvLWxpc3QtdHlwZTpoeWJyaWQ7DQoJbXNvLWxpc3QtdGVtcGxh
dGUtaWRzOjExODg5NjA4MTIgLTE5OTU1MzY5MzYgNjc1Njc2NDEgNjc1Njc2NDMgNjc1Njc2MzEg
Njc1Njc2NDEgNjc1Njc2NDMgNjc1Njc2MzEgNjc1Njc2NDEgNjc1Njc2NDM7fQ0KQGxpc3QgbDA6
bGV2ZWwxDQoJe21zby1sZXZlbC1zdGFydC1hdDowOw0KCW1zby1sZXZlbC10ZXh0OiUxPjsNCglt
c28tbGV2ZWwtdGFiLXN0b3A6bm9uZTsNCgltc28tbGV2ZWwtbnVtYmVyLXBvc2l0aW9uOmxlZnQ7
DQoJdGV4dC1pbmRlbnQ6LTE4LjBwdDt9DQpAbGlzdCBsMDpsZXZlbDINCgl7bXNvLWxldmVsLW51
bWJlci1mb3JtYXQ6YWxwaGEtbG93ZXI7DQoJbXNvLWxldmVsLXRhYi1zdG9wOm5vbmU7DQoJbXNv
LWxldmVsLW51bWJlci1wb3NpdGlvbjpsZWZ0Ow0KCXRleHQtaW5kZW50Oi0xOC4wcHQ7fQ0KQGxp
c3QgbDA6bGV2ZWwzDQoJe21zby1sZXZlbC1udW1iZXItZm9ybWF0OnJvbWFuLWxvd2VyOw0KCW1z
by1sZXZlbC10YWItc3RvcDpub25lOw0KCW1zby1sZXZlbC1udW1iZXItcG9zaXRpb246cmlnaHQ7
DQoJdGV4dC1pbmRlbnQ6LTkuMHB0O30NCkBsaXN0IGwwOmxldmVsNA0KCXttc28tbGV2ZWwtdGFi
LXN0b3A6bm9uZTsNCgltc28tbGV2ZWwtbnVtYmVyLXBvc2l0aW9uOmxlZnQ7DQoJdGV4dC1pbmRl
bnQ6LTE4LjBwdDt9DQpAbGlzdCBsMDpsZXZlbDUNCgl7bXNvLWxldmVsLW51bWJlci1mb3JtYXQ6
YWxwaGEtbG93ZXI7DQoJbXNvLWxldmVsLXRhYi1zdG9wOm5vbmU7DQoJbXNvLWxldmVsLW51bWJl
ci1wb3NpdGlvbjpsZWZ0Ow0KCXRleHQtaW5kZW50Oi0xOC4wcHQ7fQ0KQGxpc3QgbDA6bGV2ZWw2
DQoJe21zby1sZXZlbC1udW1iZXItZm9ybWF0OnJvbWFuLWxvd2VyOw0KCW1zby1sZXZlbC10YWIt
c3RvcDpub25lOw0KCW1zby1sZXZlbC1udW1iZXItcG9zaXRpb246cmlnaHQ7DQoJdGV4dC1pbmRl
bnQ6LTkuMHB0O30NCkBsaXN0IGwwOmxldmVsNw0KCXttc28tbGV2ZWwtdGFiLXN0b3A6bm9uZTsN
Cgltc28tbGV2ZWwtbnVtYmVyLXBvc2l0aW9uOmxlZnQ7DQoJdGV4dC1pbmRlbnQ6LTE4LjBwdDt9
DQpAbGlzdCBsMDpsZXZlbDgNCgl7bXNvLWxldmVsLW51bWJlci1mb3JtYXQ6YWxwaGEtbG93ZXI7
DQoJbXNvLWxldmVsLXRhYi1zdG9wOm5vbmU7DQoJbXNvLWxldmVsLW51bWJlci1wb3NpdGlvbjps
ZWZ0Ow0KCXRleHQtaW5kZW50Oi0xOC4wcHQ7fQ0KQGxpc3QgbDA6bGV2ZWw5DQoJe21zby1sZXZl
bC1udW1iZXItZm9ybWF0OnJvbWFuLWxvd2VyOw0KCW1zby1sZXZlbC10YWItc3RvcDpub25lOw0K
CW1zby1sZXZlbC1udW1iZXItcG9zaXRpb246cmlnaHQ7DQoJdGV4dC1pbmRlbnQ6LTkuMHB0O30N
Cm9sDQoJe21hcmdpbi1ib3R0b206MGNtO30NCnVsDQoJe21hcmdpbi1ib3R0b206MGNtO30NCi0t
Pjwvc3R5bGU+PCEtLVtpZiBndGUgbXNvIDldPjx4bWw+DQo8bzpzaGFwZWRlZmF1bHRzIHY6ZXh0
PSJlZGl0IiBzcGlkbWF4PSIxMDI2IiAvPg0KPC94bWw+PCFbZW5kaWZdLS0+PCEtLVtpZiBndGUg
bXNvIDldPjx4bWw+DQo8bzpzaGFwZWxheW91dCB2OmV4dD0iZWRpdCI+DQo8bzppZG1hcCB2OmV4
dD0iZWRpdCIgZGF0YT0iMSIgLz4NCjwvbzpzaGFwZWxheW91dD48L3htbD48IVtlbmRpZl0tLT4N
CjwvaGVhZD4NCjxib2R5IGxhbmc9IkRFIiBsaW5rPSJibHVlIiB2bGluaz0icHVycGxlIj4NCjxk
aXYgY2xhc3M9IldvcmRTZWN0aW9uMSI+DQo8cCBjbGFzcz0iTXNvTm9ybWFsIj48c3BhbiBzdHls
ZT0iZm9udC1zaXplOjEwLjBwdDtmb250LWZhbWlseTomcXVvdDtBcmlhbCZxdW90OywmcXVvdDtz
YW5zLXNlcmlmJnF1b3Q7O2NvbG9yOiMxRjQ5N0QiPkhpLDxvOnA+PC9vOnA+PC9zcGFuPjwvcD4N
CjxwIGNsYXNzPSJNc29Ob3JtYWwiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6MTAuMHB0O2ZvbnQt
ZmFtaWx5OiZxdW90O0FyaWFsJnF1b3Q7LCZxdW90O3NhbnMtc2VyaWYmcXVvdDs7Y29sb3I6IzFG
NDk3RCI+PG86cD4mbmJzcDs8L286cD48L3NwYW4+PC9wPg0KPHAgY2xhc3M9Ik1zb05vcm1hbCI+
PHNwYW4gbGFuZz0iRU4tVVMiIHN0eWxlPSJmb250LXNpemU6MTAuMHB0O2ZvbnQtZmFtaWx5OiZx
dW90O0FyaWFsJnF1b3Q7LCZxdW90O3NhbnMtc2VyaWYmcXVvdDs7Y29sb3I6IzFGNDk3RCI+eW91
IGNhbiB1c2UgdGhlIGZvbGxvd2luZyBmdW5jdGlvbiB0byBkbyBzby4NCjxvOnA+PC9vOnA+PC9z
cGFuPjwvcD4NCjxwIGNsYXNzPSJNc29Ob3JtYWwiPjxzcGFuIGxhbmc9IkVOLVVTIiBzdHlsZT0i
Zm9udC1zaXplOjEwLjBwdDtmb250LWZhbWlseTomcXVvdDtBcmlhbCZxdW90OywmcXVvdDtzYW5z
LXNlcmlmJnF1b3Q7O2NvbG9yOiMxRjQ5N0QiPllvdSBoYXZlIHRvIHNwZWNpZnkgYSB3aGl0ZWxp
c3Qgb2YgYWxnb3JpdGhtcyB5b3Ugd2FudCB0byB1c2UuDQo8bzpwPjwvbzpwPjwvc3Bhbj48L3A+
DQo8cCBjbGFzcz0iTXNvTm9ybWFsIj48c3BhbiBsYW5nPSJFTi1VUyIgc3R5bGU9ImZvbnQtc2l6
ZToxMC4wcHQ7Zm9udC1mYW1pbHk6JnF1b3Q7QXJpYWwmcXVvdDssJnF1b3Q7c2Fucy1zZXJpZiZx
dW90Oztjb2xvcjojMUY0OTdEIj5UaGUgZmlyc3QgYWxnb3JpdGhtIGluIHlvdXIgbGlzdCB3aWxs
IGJlIHVzZWQgZmlyc3QgaWYgcG9zc2libGUgZWxzZSB0aGUgbmV4dCBhbGdvcml0aG0gd2lsbCBi
ZSB0cmllZC48bzpwPjwvbzpwPjwvc3Bhbj48L3A+DQo8cCBjbGFzcz0iTXNvTm9ybWFsIj48c3Bh
biBsYW5nPSJFTi1VUyIgc3R5bGU9ImZvbnQtc2l6ZToxMC4wcHQ7Zm9udC1mYW1pbHk6JnF1b3Q7
QXJpYWwmcXVvdDssJnF1b3Q7c2Fucy1zZXJpZiZxdW90Oztjb2xvcjojMUY0OTdEIj48bzpwPiZu
YnNwOzwvbzpwPjwvc3Bhbj48L3A+DQo8cCBjbGFzcz0iTXNvTm9ybWFsIj48c3BhbiBsYW5nPSJF
Ti1VUyIgc3R5bGU9ImZvbnQtc2l6ZToxMC4wcHQ7Zm9udC1mYW1pbHk6JnF1b3Q7QXJpYWwmcXVv
dDssJnF1b3Q7c2Fucy1zZXJpZiZxdW90Oztjb2xvcjojMUY0OTdEIj5NYWtlIHN1cmUgeW91IHNl
dHVwIHlvdXIgd2FudGVkIGFsZ29yaXRobXMgZm9yIGJvdGggY29tbXVuaWNhdGlvbiBkaXJlY3Rp
b25zIGNsaWVudCAmbHQ7LSZndDsgc2VydmVyICE8bzpwPjwvbzpwPjwvc3Bhbj48L3A+DQo8cCBj
bGFzcz0iTXNvTm9ybWFsIj48c3BhbiBsYW5nPSJFTi1VUyIgc3R5bGU9ImZvbnQtc2l6ZToxMC4w
cHQ7Zm9udC1mYW1pbHk6JnF1b3Q7QXJpYWwmcXVvdDssJnF1b3Q7c2Fucy1zZXJpZiZxdW90Oztj
b2xvcjojMUY0OTdEIj48bzpwPiZuYnNwOzwvbzpwPjwvc3Bhbj48L3A+DQo8cCBjbGFzcz0iTXNv
Tm9ybWFsIj48c3BhbiBsYW5nPSJFTi1VUyIgc3R5bGU9ImZvbnQtc2l6ZToxMC4wcHQ7Zm9udC1m
YW1pbHk6JnF1b3Q7QXJpYWwmcXVvdDssJnF1b3Q7c2Fucy1zZXJpZiZxdW90Oztjb2xvcjojMUY0
OTdEIj5IYXZlIGEgbG9vayBhdDoNCjwvc3Bhbj48c3BhbiBsYW5nPSJFTi1VUyI+bGlic3NoMl9z
ZXNzaW9uX21ldGhvZHM8bzpwPjwvbzpwPjwvc3Bhbj48L3A+DQo8cCBjbGFzcz0iTXNvTm9ybWFs
Ij48c3BhbiBsYW5nPSJFTi1VUyI+LSZndDsgdG8gbGlzdCBhdCBydW50aW1lIGFsbCBjdXJyZW50
bHkgYWN0aXZlIHVzZWQgYWxnb3JpdGhtczxvOnA+PC9vOnA+PC9zcGFuPjwvcD4NCjxwIGNsYXNz
PSJNc29Ob3JtYWwiPjxzcGFuIGxhbmc9IkVOLVVTIiBzdHlsZT0iZm9udC1zaXplOjEwLjBwdDtm
b250LWZhbWlseTomcXVvdDtBcmlhbCZxdW90OywmcXVvdDtzYW5zLXNlcmlmJnF1b3Q7O2NvbG9y
OiMxRjQ5N0QiPjxvOnA+Jm5ic3A7PC9vOnA+PC9zcGFuPjwvcD4NCjxwIGNsYXNzPSJNc29Ob3Jt
YWwiPjxzcGFuIGxhbmc9IkVOLVVTIiBzdHlsZT0iZm9udC1zaXplOjEwLjBwdDtmb250LWZhbWls
eTomcXVvdDtBcmlhbCZxdW90OywmcXVvdDtzYW5zLXNlcmlmJnF1b3Q7O2NvbG9yOiMxRjQ5N0Qi
PkhhdmUgYSBsb29rIGF0Og0KPC9zcGFuPjxzcGFuIGxhbmc9IkVOLVVTIj5saWJzc2gyX3Nlc3Np
b25fc3VwcG9ydGVkX2FsZ3M8bzpwPjwvbzpwPjwvc3Bhbj48L3A+DQo8cCBjbGFzcz0iTXNvTm9y
bWFsIj48c3BhbiBsYW5nPSJFTi1VUyI+LSZndDsgdG8gZ2V0IGEgbGlzdCBhdCBydW50aW1lIGZv
ciBjdXJyZW50bHkgc3VwcG9ydGVkL2ltcGxlbWVudGVkIGFsZ29yaXRobXM8L3NwYW4+PHNwYW4g
bGFuZz0iRU4tVVMiIHN0eWxlPSJmb250LXNpemU6MTAuMHB0O2ZvbnQtZmFtaWx5OiZxdW90O0Fy
aWFsJnF1b3Q7LCZxdW90O3NhbnMtc2VyaWYmcXVvdDs7Y29sb3I6IzFGNDk3RCI+PG86cD48L286
cD48L3NwYW4+PC9wPg0KPHAgY2xhc3M9Ik1zb05vcm1hbCI+PHNwYW4gbGFuZz0iRU4tVVMiIHN0
eWxlPSJmb250LXNpemU6MTAuMHB0O2ZvbnQtZmFtaWx5OiZxdW90O0FyaWFsJnF1b3Q7LCZxdW90
O3NhbnMtc2VyaWYmcXVvdDs7Y29sb3I6IzFGNDk3RCI+PG86cD4mbmJzcDs8L286cD48L3NwYW4+
PC9wPg0KPHAgY2xhc3M9Ik1zb05vcm1hbCI+PHNwYW4gbGFuZz0iRU4tVVMiIHN0eWxlPSJmb250
LXNpemU6MTAuMHB0O2ZvbnQtZmFtaWx5OiZxdW90O0FyaWFsJnF1b3Q7LCZxdW90O3NhbnMtc2Vy
aWYmcXVvdDs7Y29sb3I6IzFGNDk3RCI+PG86cD4mbmJzcDs8L286cD48L3NwYW4+PC9wPg0KPHAg
Y2xhc3M9Ik1zb05vcm1hbCI+PHNwYW4gbGFuZz0iRU4tVVMiIHN0eWxlPSJmb250LXNpemU6MTAu
MHB0O2ZvbnQtZmFtaWx5OiZxdW90O0FyaWFsJnF1b3Q7LCZxdW90O3NhbnMtc2VyaWYmcXVvdDs7
Y29sb3I6IzFGNDk3RCI+SGF2ZSBhIGxvb2sgYXQ6IGxpYnNzaDJfc2Vzc2lvbl9tZXRob2RfcHJl
ZjxvOnA+PC9vOnA+PC9zcGFuPjwvcD4NCjxwIGNsYXNzPSJNc29Ob3JtYWwiPjxzcGFuIGxhbmc9
IkVOLVVTIiBzdHlsZT0iZm9udC1zaXplOjEwLjBwdDtmb250LWZhbWlseTomcXVvdDtBcmlhbCZx
dW90OywmcXVvdDtzYW5zLXNlcmlmJnF1b3Q7O2NvbG9yOiMxRjQ5N0QiPi0mZ3Q7IHNldHVwIHlv
dXIgYWxnb3JpdGhtcyB5b3Ugd2FudCB0byB1c2U8bzpwPjwvbzpwPjwvc3Bhbj48L3A+DQo8cCBj
bGFzcz0iTXNvTm9ybWFsIj48c3BhbiBsYW5nPSJFTi1VUyIgc3R5bGU9ImZvbnQtc2l6ZToxMC4w
cHQ7Zm9udC1mYW1pbHk6JnF1b3Q7QXJpYWwmcXVvdDssJnF1b3Q7c2Fucy1zZXJpZiZxdW90Oztj
b2xvcjojMUY0OTdEIj48bzpwPiZuYnNwOzwvbzpwPjwvc3Bhbj48L3A+DQo8cCBjbGFzcz0iTXNv
Tm9ybWFsIj48c3BhbiBsYW5nPSJFTi1VUyIgc3R5bGU9ImZvbnQtc2l6ZToxMC4wcHQ7Zm9udC1m
YW1pbHk6JnF1b3Q7QXJpYWwmcXVvdDssJnF1b3Q7c2Fucy1zZXJpZiZxdW90Oztjb2xvcjojMUY0
OTdEIj4vLzxvOnA+PC9vOnA+PC9zcGFuPjwvcD4NCjxwIGNsYXNzPSJNc29Ob3JtYWwiPjxzcGFu
IGxhbmc9IkVOLVVTIiBzdHlsZT0iZm9udC1zaXplOjEwLjBwdDtmb250LWZhbWlseTomcXVvdDtB
cmlhbCZxdW90OywmcXVvdDtzYW5zLXNlcmlmJnF1b3Q7O2NvbG9yOiMxRjQ5N0QiPi8vcG9zc2li
bGUgZXJyb3JzIGhlcmU8bzpwPjwvbzpwPjwvc3Bhbj48L3A+DQo8cCBjbGFzcz0iTXNvTm9ybWFs
Ij48c3BhbiBsYW5nPSJFTi1VUyIgc3R5bGU9ImZvbnQtc2l6ZToxMC4wcHQ7Zm9udC1mYW1pbHk6
JnF1b3Q7QXJpYWwmcXVvdDssJnF1b3Q7c2Fucy1zZXJpZiZxdW90Oztjb2xvcjojMUY0OTdEIj4v
LzxvOnA+PC9vOnA+PC9zcGFuPjwvcD4NCjxwIGNsYXNzPSJNc29Ob3JtYWwiPjxzcGFuIGxhbmc9
IkVOLVVTIiBzdHlsZT0iZm9udC1zaXplOjEwLjBwdDtmb250LWZhbWlseTomcXVvdDtBcmlhbCZx
dW90OywmcXVvdDtzYW5zLXNlcmlmJnF1b3Q7O2NvbG9yOiMxRjQ5N0QiPi8vT0sgLSB6ZXJvPG86
cD48L286cD48L3NwYW4+PC9wPg0KPHAgY2xhc3M9Ik1zb05vcm1hbCI+PHNwYW4gbGFuZz0iRU4t
VVMiIHN0eWxlPSJmb250LXNpemU6MTAuMHB0O2ZvbnQtZmFtaWx5OiZxdW90O0FyaWFsJnF1b3Q7
LCZxdW90O3NhbnMtc2VyaWYmcXVvdDs7Y29sb3I6IzFGNDk3RCI+Ly9mYWlsdXJlIC0gbmVnYXRp
dmUgbnVtYmVyPG86cD48L286cD48L3NwYW4+PC9wPg0KPHAgY2xhc3M9Ik1zb05vcm1hbCI+PHNw
YW4gbGFuZz0iRU4tVVMiIHN0eWxlPSJmb250LXNpemU6MTAuMHB0O2ZvbnQtZmFtaWx5OiZxdW90
O0FyaWFsJnF1b3Q7LCZxdW90O3NhbnMtc2VyaWYmcXVvdDs7Y29sb3I6IzFGNDk3RCI+Ly88bzpw
PjwvbzpwPjwvc3Bhbj48L3A+DQo8cCBjbGFzcz0iTXNvTm9ybWFsIj48c3BhbiBsYW5nPSJFTi1V
UyIgc3R5bGU9ImZvbnQtc2l6ZToxMC4wcHQ7Zm9udC1mYW1pbHk6JnF1b3Q7QXJpYWwmcXVvdDss
JnF1b3Q7c2Fucy1zZXJpZiZxdW90Oztjb2xvcjojMUY0OTdEIj4vL0xJQlNTSDJfRVJST1JfSU5W
QUwgLSBUaGUgcmVxdWVzdGVkIG1ldGhvZCB0eXBlIHdhcyBpbnZhbGlkLjxvOnA+PC9vOnA+PC9z
cGFuPjwvcD4NCjxwIGNsYXNzPSJNc29Ob3JtYWwiPjxzcGFuIGxhbmc9IkVOLVVTIiBzdHlsZT0i
Zm9udC1zaXplOjEwLjBwdDtmb250LWZhbWlseTomcXVvdDtBcmlhbCZxdW90OywmcXVvdDtzYW5z
LXNlcmlmJnF1b3Q7O2NvbG9yOiMxRjQ5N0QiPi8vTElCU1NIMl9FUlJPUl9BTExPQyAtIEFuIGlu
dGVybmFsIG1lbW9yeSBhbGxvY2F0aW9uIGNhbGwgZmFpbGVkLjxvOnA+PC9vOnA+PC9zcGFuPjwv
cD4NCjxwIGNsYXNzPSJNc29Ob3JtYWwiPjxzcGFuIGxhbmc9IkVOLVVTIiBzdHlsZT0iZm9udC1z
aXplOjEwLjBwdDtmb250LWZhbWlseTomcXVvdDtBcmlhbCZxdW90OywmcXVvdDtzYW5zLXNlcmlm
JnF1b3Q7O2NvbG9yOiMxRjQ5N0QiPi8vTElCU1NIMl9FUlJPUl9NRVRIT0RfTk9UX1NVUFBPUlRF
RCAtIFRoZSByZXF1ZXN0ZWQgbWV0aG9kIGlzIG5vdCBzdXBwb3J0ZWQuDQo8bzpwPjwvbzpwPjwv
c3Bhbj48L3A+DQo8cCBjbGFzcz0iTXNvTm9ybWFsIj48c3BhbiBsYW5nPSJFTi1VUyIgc3R5bGU9
ImZvbnQtc2l6ZToxMC4wcHQ7Zm9udC1mYW1pbHk6JnF1b3Q7QXJpYWwmcXVvdDssJnF1b3Q7c2Fu
cy1zZXJpZiZxdW90Oztjb2xvcjojMUY0OTdEIj4vLzxvOnA+PC9vOnA+PC9zcGFuPjwvcD4NCjxw
IGNsYXNzPSJNc29Ob3JtYWwiPjxzcGFuIGxhbmc9IkVOLVVTIiBzdHlsZT0iZm9udC1zaXplOjEw
LjBwdDtmb250LWZhbWlseTomcXVvdDtBcmlhbCZxdW90OywmcXVvdDtzYW5zLXNlcmlmJnF1b3Q7
O2NvbG9yOiMxRjQ5N0QiPi8vREVTQzo8bzpwPjwvbzpwPjwvc3Bhbj48L3A+DQo8cCBjbGFzcz0i
TXNvTm9ybWFsIj48c3BhbiBsYW5nPSJFTi1VUyIgc3R5bGU9ImZvbnQtc2l6ZToxMC4wcHQ7Zm9u
dC1mYW1pbHk6JnF1b3Q7QXJpYWwmcXVvdDssJnF1b3Q7c2Fucy1zZXJpZiZxdW90Oztjb2xvcjoj
MUY0OTdEIj4vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS08bzpwPjwvbzpwPjwvc3Bhbj48L3A+DQo8cCBjbGFz
cz0iTXNvTm9ybWFsIj48c3BhbiBsYW5nPSJFTi1VUyIgc3R5bGU9ImZvbnQtc2l6ZToxMC4wcHQ7
Zm9udC1mYW1pbHk6JnF1b3Q7QXJpYWwmcXVvdDssJnF1b3Q7c2Fucy1zZXJpZiZxdW90Oztjb2xv
cjojMUY0OTdEIj4vL2xpYnNzaDJfc2Vzc2lvbl9tZXRob2RfcHJlZiAtIHNldCBwcmVmZXJyZWQg
a2V5IGV4Y2hhbmdlIG1ldGhvZA0KPG86cD48L286cD48L3NwYW4+PC9wPg0KPHAgY2xhc3M9Ik1z
b05vcm1hbCI+PHNwYW4gbGFuZz0iRU4tVVMiIHN0eWxlPSJmb250LXNpemU6MTAuMHB0O2ZvbnQt
ZmFtaWx5OiZxdW90O0FyaWFsJnF1b3Q7LCZxdW90O3NhbnMtc2VyaWYmcXVvdDs7Y29sb3I6IzFG
NDk3RCI+Ly88bzpwPjwvbzpwPjwvc3Bhbj48L3A+DQo8cCBjbGFzcz0iTXNvTm9ybWFsIj48c3Bh
biBsYW5nPSJFTi1VUyIgc3R5bGU9ImZvbnQtc2l6ZToxMC4wcHQ7Zm9udC1mYW1pbHk6JnF1b3Q7
QXJpYWwmcXVvdDssJnF1b3Q7c2Fucy1zZXJpZiZxdW90Oztjb2xvcjojMUY0OTdEIj4vL3Nlc3Np
b24gLSBTZXNzaW9uIGluc3RhbmNlIGFzIHJldHVybmVkIGJ5IGxpYnNzaDJfc2Vzc2lvbl9pbml0
X2V4LDxvOnA+PC9vOnA+PC9zcGFuPjwvcD4NCjxwIGNsYXNzPSJNc29Ob3JtYWwiPjxzcGFuIGxh
bmc9IkVOLVVTIiBzdHlsZT0iZm9udC1zaXplOjEwLjBwdDtmb250LWZhbWlseTomcXVvdDtBcmlh
bCZxdW90OywmcXVvdDtzYW5zLXNlcmlmJnF1b3Q7O2NvbG9yOiMxRjQ5N0QiPi8vbWV0aG9kX3R5
cGUgLSBPbmUgb2YgdGhlIE1ldGhvZCBUeXBlIGNvbnN0YW50cy48bzpwPjwvbzpwPjwvc3Bhbj48
L3A+DQo8cCBjbGFzcz0iTXNvTm9ybWFsIj48c3BhbiBsYW5nPSJFTi1VUyIgc3R5bGU9ImZvbnQt
c2l6ZToxMC4wcHQ7Zm9udC1mYW1pbHk6JnF1b3Q7QXJpYWwmcXVvdDssJnF1b3Q7c2Fucy1zZXJp
ZiZxdW90Oztjb2xvcjojMUY0OTdEIj4vL3ByZWZzIC0gQ29tYSBkZWxpbWl0ZWQgbGlzdCBvZiBw
cmVmZXJyZWQgbWV0aG9kcyB0byB1c2UNCjxvOnA+PC9vOnA+PC9zcGFuPjwvcD4NCjxwIGNsYXNz
PSJNc29Ob3JtYWwiPjxzcGFuIGxhbmc9IkVOLVVTIiBzdHlsZT0iZm9udC1zaXplOjEwLjBwdDtm
b250LWZhbWlseTomcXVvdDtBcmlhbCZxdW90OywmcXVvdDtzYW5zLXNlcmlmJnF1b3Q7O2NvbG9y
OiMxRjQ5N0QiPi8vd2l0aCB0aGUgbW9zdCBwcmVmZXJyZWQgbGlzdGVkIGZpcnN0IGFuZCB0aGUg
bGVhc3QgcHJlZmVycmVkIGxpc3RlZCBsYXN0Lg0KPG86cD48L286cD48L3NwYW4+PC9wPg0KPHAg
Y2xhc3M9Ik1zb05vcm1hbCI+PHNwYW4gbGFuZz0iRU4tVVMiIHN0eWxlPSJmb250LXNpemU6MTAu
MHB0O2ZvbnQtZmFtaWx5OiZxdW90O0FyaWFsJnF1b3Q7LCZxdW90O3NhbnMtc2VyaWYmcXVvdDs7
Y29sb3I6IzFGNDk3RCI+Ly9JZiBhIG1ldGhvZCBpcyBsaXN0ZWQgd2hpY2ggaXMgbm90IHN1cHBv
cnRlZCBieSBsaWJzc2gyDQo8bzpwPjwvbzpwPjwvc3Bhbj48L3A+DQo8cCBjbGFzcz0iTXNvTm9y
bWFsIj48c3BhbiBsYW5nPSJFTi1VUyIgc3R5bGU9ImZvbnQtc2l6ZToxMC4wcHQ7Zm9udC1mYW1p
bHk6JnF1b3Q7QXJpYWwmcXVvdDssJnF1b3Q7c2Fucy1zZXJpZiZxdW90Oztjb2xvcjojMUY0OTdE
Ij4vL2l0IHdpbGwgYmUgaWdub3JlZCBhbmQgbm90IHNlbnQgdG8gdGhlIHJlbW90ZSBob3N0IGR1
cmluZyBwcm90b2NvbCBuZWdvdGlhdGlvbi48bzpwPjwvbzpwPjwvc3Bhbj48L3A+DQo8cCBjbGFz
cz0iTXNvTm9ybWFsIj48c3BhbiBsYW5nPSJFTi1VUyIgc3R5bGU9ImZvbnQtc2l6ZToxMC4wcHQ7
Zm9udC1mYW1pbHk6JnF1b3Q7QXJpYWwmcXVvdDssJnF1b3Q7c2Fucy1zZXJpZiZxdW90Oztjb2xv
cjojMUY0OTdEIj4vL1NldCBwcmVmZXJyZWQgbWV0aG9kcyB0byBiZSBuZWdvdGlhdGVkLg0KPG86
cD48L286cD48L3NwYW4+PC9wPg0KPHAgY2xhc3M9Ik1zb05vcm1hbCI+PHNwYW4gbGFuZz0iRU4t
VVMiIHN0eWxlPSJmb250LXNpemU6MTAuMHB0O2ZvbnQtZmFtaWx5OiZxdW90O0FyaWFsJnF1b3Q7
LCZxdW90O3NhbnMtc2VyaWYmcXVvdDs7Y29sb3I6IzFGNDk3RCI+Ly9UaGVzZSBwcmVmZXJlbmNl
cyBtdXN0IGJlIHNldCBwcmlvciB0byBjYWxsaW5nIGxpYnNzaDJfc2Vzc2lvbl9oYW5kc2hha2Us
PG86cD48L286cD48L3NwYW4+PC9wPg0KPHAgY2xhc3M9Ik1zb05vcm1hbCI+PHNwYW4gbGFuZz0i
RU4tVVMiIHN0eWxlPSJmb250LXNpemU6MTAuMHB0O2ZvbnQtZmFtaWx5OiZxdW90O0FyaWFsJnF1
b3Q7LCZxdW90O3NhbnMtc2VyaWYmcXVvdDs7Y29sb3I6IzFGNDk3RCI+Ly9hcyB0aGV5IGFyZSB1
c2VkIGR1cmluZyB0aGUgcHJvdG9jb2wgaW5pdGlhdGlvbiBwaGFzZS4NCjxvOnA+PC9vOnA+PC9z
cGFuPjwvcD4NCjxwIGNsYXNzPSJNc29Ob3JtYWwiPjxzcGFuIGxhbmc9IkVOLVVTIiBzdHlsZT0i
Zm9udC1zaXplOjEwLjBwdDtmb250LWZhbWlseTomcXVvdDtBcmlhbCZxdW90OywmcXVvdDtzYW5z
LXNlcmlmJnF1b3Q7O2NvbG9yOiMxRjQ5N0QiPi8vPG86cD48L286cD48L3NwYW4+PC9wPg0KPHAg
Y2xhc3M9Ik1zb05vcm1hbCI+PHNwYW4gbGFuZz0iRU4tVVMiIHN0eWxlPSJmb250LXNpemU6MTAu
MHB0O2ZvbnQtZmFtaWx5OiZxdW90O0FyaWFsJnF1b3Q7LCZxdW90O3NhbnMtc2VyaWYmcXVvdDs7
Y29sb3I6IzFGNDk3RCI+Ly8gbGlic3NoMl9zZXNzaW9uX21ldGhvZF9wcmVmKCkgY29uc3RhbnRz
PG86cD48L286cD48L3NwYW4+PC9wPg0KPHAgY2xhc3M9Ik1zb05vcm1hbCI+PHNwYW4gbGFuZz0i
RU4tVVMiIHN0eWxlPSJmb250LXNpemU6MTAuMHB0O2ZvbnQtZmFtaWx5OiZxdW90O0FyaWFsJnF1
b3Q7LCZxdW90O3NhbnMtc2VyaWYmcXVvdDs7Y29sb3I6IzFGNDk3RCI+Ly8gTElCU1NIMl9NRVRI
T0RfS0VYJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5i
c3A7IDAmbmJzcDsmbmJzcDsgLy9rZXkgZXhjaGFuZ2UmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsm
bmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsgOiBjbGllbnQgJmx0Oy0mZ3Q7IHNlcnZlcjxvOnA+PC9v
OnA+PC9zcGFuPjwvcD4NCjxwIGNsYXNzPSJNc29Ob3JtYWwiPjxzcGFuIGxhbmc9IkVOLVVTIiBz
dHlsZT0iZm9udC1zaXplOjEwLjBwdDtmb250LWZhbWlseTomcXVvdDtBcmlhbCZxdW90OywmcXVv
dDtzYW5zLXNlcmlmJnF1b3Q7O2NvbG9yOiMxRjQ5N0QiPi8vIExJQlNTSDJfTUVUSE9EX0hPU1RL
RVkmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsgMSZuYnNwOyZuYnNwOyAvL2hvc3Qga2V5
IGZpbmdlcnByaW50IDogY2xpZW50ICZsdDstJmd0OyBzZXJ2ZXINCjxvOnA+PC9vOnA+PC9zcGFu
PjwvcD4NCjxwIGNsYXNzPSJNc29Ob3JtYWwiPjxzcGFuIGxhbmc9IkVOLVVTIiBzdHlsZT0iZm9u
dC1zaXplOjEwLjBwdDtmb250LWZhbWlseTomcXVvdDtBcmlhbCZxdW90OywmcXVvdDtzYW5zLXNl
cmlmJnF1b3Q7O2NvbG9yOiMxRjQ5N0QiPi8vIExJQlNTSDJfTUVUSE9EX0NSWVBUX0NTJm5ic3A7
Jm5ic3A7Jm5ic3A7Jm5ic3A7IDImbmJzcDsmbmJzcDsgLy9kYXRhIGVuY3J5cHRpb24mbmJzcDsm
bmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsgOiBjbGllbnQgLS0mZ3Q7IHNlcnZlcjxvOnA+PC9vOnA+
PC9zcGFuPjwvcD4NCjxwIGNsYXNzPSJNc29Ob3JtYWwiPjxzcGFuIGxhbmc9IkVOLVVTIiBzdHls
ZT0iZm9udC1zaXplOjEwLjBwdDtmb250LWZhbWlseTomcXVvdDtBcmlhbCZxdW90OywmcXVvdDtz
YW5zLXNlcmlmJnF1b3Q7O2NvbG9yOiMxRjQ5N0QiPi8vIExJQlNTSDJfTUVUSE9EX0NSWVBUX1ND
Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7IDMmbmJzcDsmbmJzcDsgLy9kYXRhIGRlY3J5cHRpb24m
bmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsgJm5ic3A7OiBjbGllbnQgJmx0Oy0tIHNlcnZlcjxvOnA+
PC9vOnA+PC9zcGFuPjwvcD4NCjxwIGNsYXNzPSJNc29Ob3JtYWwiPjxzcGFuIGxhbmc9IkVOLVVT
IiBzdHlsZT0iZm9udC1zaXplOjEwLjBwdDtmb250LWZhbWlseTomcXVvdDtBcmlhbCZxdW90Oywm
cXVvdDtzYW5zLXNlcmlmJnF1b3Q7O2NvbG9yOiMxRjQ5N0QiPi8vIExJQlNTSDJfTUVUSE9EX01B
Q19DUyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyA0Jm5ic3A7Jm5ic3A7IC8v
bWFjIGhhc2gmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsm
bmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsgOiBjbGllbnQgLS0mZ3Q7IHNlcnZlcjxvOnA+PC9vOnA+
PC9zcGFuPjwvcD4NCjxwIGNsYXNzPSJNc29Ob3JtYWwiPjxzcGFuIGxhbmc9IkVOLVVTIiBzdHls
ZT0iZm9udC1zaXplOjEwLjBwdDtmb250LWZhbWlseTomcXVvdDtBcmlhbCZxdW90OywmcXVvdDtz
YW5zLXNlcmlmJnF1b3Q7O2NvbG9yOiMxRjQ5N0QiPi8vIExJQlNTSDJfTUVUSE9EX01BQ19TQyZu
YnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyA1Jm5ic3A7Jm5ic3A7IC8vbWFjIGhh
c2gmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsm
bmJzcDsmbmJzcDsmbmJzcDsgOiBjbGllbnQgJmx0Oy0tIHNlcnZlcjxvOnA+PC9vOnA+PC9zcGFu
PjwvcD4NCjxwIGNsYXNzPSJNc29Ob3JtYWwiPjxzcGFuIGxhbmc9IkVOLVVTIiBzdHlsZT0iZm9u
dC1zaXplOjEwLjBwdDtmb250LWZhbWlseTomcXVvdDtBcmlhbCZxdW90OywmcXVvdDtzYW5zLXNl
cmlmJnF1b3Q7O2NvbG9yOiMxRjQ5N0QiPi8vIExJQlNTSDJfTUVUSE9EX0NPTVBfQ1MmbmJzcDsm
bmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsgNiZuYnNwOyZuYnNwOyAvL2RhdGEgY29tcHJlc3Npb24m
bmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsgOiBjbGllbnQgLS0mZ3Q7IHNlcnZlcjxvOnA+PC9vOnA+
PC9zcGFuPjwvcD4NCjxwIGNsYXNzPSJNc29Ob3JtYWwiPjxzcGFuIGxhbmc9IkVOLVVTIiBzdHls
ZT0iZm9udC1zaXplOjEwLjBwdDtmb250LWZhbWlseTomcXVvdDtBcmlhbCZxdW90OywmcXVvdDtz
YW5zLXNlcmlmJnF1b3Q7O2NvbG9yOiMxRjQ5N0QiPi8vIExJQlNTSDJfTUVUSE9EX0NPTVBfU0Mm
bmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsgNyZuYnNwOyZuYnNwOyAvL2RhdGEgZGVjb21w
cmVzc2lvbiZuYnNwOyZuYnNwOyA6IGNsaWVudCAmbHQ7LS0gc2VydmVyPG86cD48L286cD48L3Nw
YW4+PC9wPg0KPHAgY2xhc3M9Ik1zb05vcm1hbCI+PHNwYW4gbGFuZz0iRU4tVVMiIHN0eWxlPSJm
b250LXNpemU6MTAuMHB0O2ZvbnQtZmFtaWx5OiZxdW90O0FyaWFsJnF1b3Q7LCZxdW90O3NhbnMt
c2VyaWYmcXVvdDs7Y29sb3I6IzFGNDk3RCI+Ly8gTElCU1NIMl9NRVRIT0RfTEFOR19DUyZuYnNw
OyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyA4Jm5ic3A7Jm5ic3A7IC8vbGFuZ3VhZ2Ugc3NoIGxv
Z2luJm5ic3A7Jm5ic3A7IDogY2xpZW50IC0tJmd0OyBzZXJ2ZXI8bzpwPjwvbzpwPjwvc3Bhbj48
L3A+DQo8cCBjbGFzcz0iTXNvTm9ybWFsIj48c3BhbiBsYW5nPSJFTi1VUyIgc3R5bGU9ImZvbnQt
c2l6ZToxMC4wcHQ7Zm9udC1mYW1pbHk6JnF1b3Q7QXJpYWwmcXVvdDssJnF1b3Q7c2Fucy1zZXJp
ZiZxdW90Oztjb2xvcjojMUY0OTdEIj4vLyBMSUJTU0gyX01FVEhPRF9MQU5HX1NDJm5ic3A7Jm5i
c3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7IDkmbmJzcDsmbmJzcDsgLy9sYW5ndWFnZSBsb2NhbCZuYnNw
OyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyA6IGNsaWVudCAmbHQ7LS0gc2VydmVyPG86
cD48L286cD48L3NwYW4+PC9wPg0KPHAgY2xhc3M9Ik1zb05vcm1hbCI+PHNwYW4gbGFuZz0iRU4t
VVMiIHN0eWxlPSJmb250LXNpemU6MTAuMHB0O2ZvbnQtZmFtaWx5OiZxdW90O0FyaWFsJnF1b3Q7
LCZxdW90O3NhbnMtc2VyaWYmcXVvdDs7Y29sb3I6IzFGNDk3RCI+Ly88bzpwPjwvbzpwPjwvc3Bh
bj48L3A+DQo8cCBjbGFzcz0iTXNvTm9ybWFsIj48c3BhbiBsYW5nPSJFTi1VUyIgc3R5bGU9ImZv
bnQtc2l6ZToxMC4wcHQ7Zm9udC1mYW1pbHk6JnF1b3Q7QXJpYWwmcXVvdDssJnF1b3Q7c2Fucy1z
ZXJpZiZxdW90Oztjb2xvcjojMUY0OTdEIj4vL1JFVFVSTjogaW50PG86cD48L286cD48L3NwYW4+
PC9wPg0KPHAgY2xhc3M9Ik1zb05vcm1hbCI+PHNwYW4gbGFuZz0iRU4tVVMiIHN0eWxlPSJmb250
LXNpemU6MTAuMHB0O2ZvbnQtZmFtaWx5OiZxdW90O0FyaWFsJnF1b3Q7LCZxdW90O3NhbnMtc2Vy
aWYmcXVvdDs7Y29sb3I6IzFGNDk3RCI+Ly88bzpwPjwvbzpwPjwvc3Bhbj48L3A+DQo8cCBjbGFz
cz0iTXNvTm9ybWFsIj48c3BhbiBsYW5nPSJFTi1VUyIgc3R5bGU9ImZvbnQtc2l6ZToxMC4wcHQ7
Zm9udC1mYW1pbHk6JnF1b3Q7QXJpYWwmcXVvdDssJnF1b3Q7c2Fucy1zZXJpZiZxdW90Oztjb2xv
cjojMUY0OTdEIj48bzpwPiZuYnNwOzwvbzpwPjwvc3Bhbj48L3A+DQo8cCBjbGFzcz0iTXNvTm9y
bWFsIj48c3BhbiBsYW5nPSJFTi1VUyIgc3R5bGU9ImZvbnQtc2l6ZToxMC4wcHQ7Zm9udC1mYW1p
bHk6JnF1b3Q7QXJpYWwmcXVvdDssJnF1b3Q7c2Fucy1zZXJpZiZxdW90Oztjb2xvcjojMUY0OTdE
Ij5saWJzc2gyX3Nlc3Npb25fbWV0aG9kX3ByZWYoaGFuZGxlU2Vzc2lvbiwgTElCU1NIMl9NRVRI
T0RfQ1JZUFRfQ1MsIFByZWZlcmVkQWxnb3JpdGhtTGlzdCk7PG86cD48L286cD48L3NwYW4+PC9w
Pg0KPHAgY2xhc3M9Ik1zb05vcm1hbCI+PHNwYW4gbGFuZz0iRU4tVVMiIHN0eWxlPSJmb250LXNp
emU6MTAuMHB0O2ZvbnQtZmFtaWx5OiZxdW90O0FyaWFsJnF1b3Q7LCZxdW90O3NhbnMtc2VyaWYm
cXVvdDs7Y29sb3I6IzFGNDk3RCI+bGlic3NoMl9zZXNzaW9uX21ldGhvZF9wcmVmKGhhbmRsZVNl
c3Npb24sIExJQlNTSDJfTUVUSE9EX0NSWVBUX1NDLCBQcmVmZXJlZEFsZ29yaXRobUxpc3QpOzxv
OnA+PC9vOnA+PC9zcGFuPjwvcD4NCjxwIGNsYXNzPSJNc29Ob3JtYWwiPjxzcGFuIGxhbmc9IkVO
LVVTIiBzdHlsZT0iZm9udC1zaXplOjEwLjBwdDtmb250LWZhbWlseTomcXVvdDtBcmlhbCZxdW90
OywmcXVvdDtzYW5zLXNlcmlmJnF1b3Q7O2NvbG9yOiMxRjQ5N0QiPjxvOnA+Jm5ic3A7PC9vOnA+
PC9zcGFuPjwvcD4NCjxwIGNsYXNzPSJNc29Ob3JtYWwiPjxzcGFuIGxhbmc9IkVOLVVTIiBzdHls
ZT0iZm9udC1zaXplOjEwLjBwdDtmb250LWZhbWlseTomcXVvdDtBcmlhbCZxdW90OywmcXVvdDtz
YW5zLXNlcmlmJnF1b3Q7O2NvbG9yOiMxRjQ5N0QiPi8vIGJhZCBleGFtcGxlPG86cD48L286cD48
L3NwYW4+PC9wPg0KPHAgY2xhc3M9Ik1zb05vcm1hbCI+PHNwYW4gbGFuZz0iRU4tVVMiIHN0eWxl
PSJmb250LXNpemU6MTAuMHB0O2ZvbnQtZmFtaWx5OiZxdW90O0FyaWFsJnF1b3Q7LCZxdW90O3Nh
bnMtc2VyaWYmcXVvdDs7Y29sb3I6IzFGNDk3RCI+UHJlZmVyZWRBbGdvcml0aG1MaXN0ID0gJnF1
b3Q7YWVzMTI4LWNiYyxhZXMyNTYtY2JjLGFlczEyOC1nY20mcXVvdDs8bzpwPjwvbzpwPjwvc3Bh
bj48L3A+DQo8cCBjbGFzcz0iTXNvTm9ybWFsIj48c3BhbiBsYW5nPSJFTi1VUyIgc3R5bGU9ImZv
bnQtc2l6ZToxMC4wcHQ7Zm9udC1mYW1pbHk6JnF1b3Q7QXJpYWwmcXVvdDssJnF1b3Q7c2Fucy1z
ZXJpZiZxdW90Oztjb2xvcjojMUY0OTdEIj4tJmd0OyBmaXJzdCB0cmllcyBhZXMxMjgtY2JjDQo8
bzpwPjwvbzpwPjwvc3Bhbj48L3A+DQo8cCBjbGFzcz0iTXNvTm9ybWFsIj48c3BhbiBsYW5nPSJF
Ti1VUyIgc3R5bGU9ImZvbnQtc2l6ZToxMC4wcHQ7Zm9udC1mYW1pbHk6JnF1b3Q7QXJpYWwmcXVv
dDssJnF1b3Q7c2Fucy1zZXJpZiZxdW90Oztjb2xvcjojMUY0OTdEIj4tJmd0OyBmaXJzdCB0cmll
cyBhZXMyNTYtY2JjPG86cD48L286cD48L3NwYW4+PC9wPg0KPHAgY2xhc3M9Ik1zb05vcm1hbCI+
PHNwYW4gbGFuZz0iRU4tVVMiIHN0eWxlPSJmb250LXNpemU6MTAuMHB0O2ZvbnQtZmFtaWx5OiZx
dW90O0FyaWFsJnF1b3Q7LCZxdW90O3NhbnMtc2VyaWYmcXVvdDs7Y29sb3I6IzFGNDk3RCI+LSZn
dDsgZmlyc3QgdHJpZXMgYWVzMTI4LWdjbTxvOnA+PC9vOnA+PC9zcGFuPjwvcD4NCjxwIGNsYXNz
PSJNc29Ob3JtYWwiPjxzcGFuIGxhbmc9IkVOLVVTIiBzdHlsZT0iZm9udC1zaXplOjEwLjBwdDtm
b250LWZhbWlseTomcXVvdDtBcmlhbCZxdW90OywmcXVvdDtzYW5zLXNlcmlmJnF1b3Q7O2NvbG9y
OiMxRjQ5N0QiPjxvOnA+Jm5ic3A7PC9vOnA+PC9zcGFuPjwvcD4NCjxwIGNsYXNzPSJNc29Ob3Jt
YWwiPjxzcGFuIGxhbmc9IkVOLVVTIiBzdHlsZT0iZm9udC1zaXplOjEwLjBwdDtmb250LWZhbWls
eTomcXVvdDtBcmlhbCZxdW90OywmcXVvdDtzYW5zLXNlcmlmJnF1b3Q7O2NvbG9yOiMxRjQ5N0Qi
Pi8vIGJldHRlciBleGFtcGxlLCB0cmllcyBmaXJzdCBoaWdoZXN0IGlmIG5vdCBwb3NzaWJsZSBn
byBkb3duPG86cD48L286cD48L3NwYW4+PC9wPg0KPHAgY2xhc3M9Ik1zb05vcm1hbCI+PHNwYW4g
bGFuZz0iRU4tVVMiIHN0eWxlPSJmb250LXNpemU6MTAuMHB0O2ZvbnQtZmFtaWx5OiZxdW90O0Fy
aWFsJnF1b3Q7LCZxdW90O3NhbnMtc2VyaWYmcXVvdDs7Y29sb3I6IzFGNDk3RCI+UHJlZmVyZWRB
bGdvcml0aG1MaXN0ID0gJnF1b3Q7YWVzMjU2LWNiYyxhZXMxMjgtY2JjLGFlczEyOC1nY20mcXVv
dDs8bzpwPjwvbzpwPjwvc3Bhbj48L3A+DQo8cCBjbGFzcz0iTXNvTm9ybWFsIj48c3BhbiBsYW5n
PSJFTi1VUyIgc3R5bGU9ImZvbnQtc2l6ZToxMC4wcHQ7Zm9udC1mYW1pbHk6JnF1b3Q7QXJpYWwm
cXVvdDssJnF1b3Q7c2Fucy1zZXJpZiZxdW90Oztjb2xvcjojMUY0OTdEIj4tJmd0OyBmaXJzdCB0
cmllcyBhZXMyNTYtY2JjPG86cD48L286cD48L3NwYW4+PC9wPg0KPHAgY2xhc3M9Ik1zb05vcm1h
bCI+PHNwYW4gbGFuZz0iRU4tVVMiIHN0eWxlPSJmb250LXNpemU6MTAuMHB0O2ZvbnQtZmFtaWx5
OiZxdW90O0FyaWFsJnF1b3Q7LCZxdW90O3NhbnMtc2VyaWYmcXVvdDs7Y29sb3I6IzFGNDk3RCI+
LSZndDsgZmlyc3QgdHJpZXMgYWVzMTI4LWNiYzxvOnA+PC9vOnA+PC9zcGFuPjwvcD4NCjxwIGNs
YXNzPSJNc29Ob3JtYWwiPjxzcGFuIGxhbmc9IkVOLVVTIiBzdHlsZT0iZm9udC1zaXplOjEwLjBw
dDtmb250LWZhbWlseTomcXVvdDtBcmlhbCZxdW90OywmcXVvdDtzYW5zLXNlcmlmJnF1b3Q7O2Nv
bG9yOiMxRjQ5N0QiPi0mZ3Q7IGZpcnN0IHRyaWVzIGFlczEyOC1nY208bzpwPjwvbzpwPjwvc3Bh
bj48L3A+DQo8cCBjbGFzcz0iTXNvTm9ybWFsIj48c3BhbiBsYW5nPSJFTi1VUyIgc3R5bGU9ImZv
bnQtc2l6ZToxMC4wcHQ7Zm9udC1mYW1pbHk6JnF1b3Q7QXJpYWwmcXVvdDssJnF1b3Q7c2Fucy1z
ZXJpZiZxdW90Oztjb2xvcjojMUY0OTdEIj48bzpwPiZuYnNwOzwvbzpwPjwvc3Bhbj48L3A+DQo8
cCBjbGFzcz0iTXNvTm9ybWFsIj48c3BhbiBsYW5nPSJFTi1VUyIgc3R5bGU9ImZvbnQtc2l6ZTox
MC4wcHQ7Zm9udC1mYW1pbHk6JnF1b3Q7QXJpYWwmcXVvdDssJnF1b3Q7c2Fucy1zZXJpZiZxdW90
Oztjb2xvcjojMUY0OTdEIj49Jmd0OyAzZGVzLWNiYyBvciBibG93ZmlzaC1jYmMgZm9yIGV4YW1w
bGUgbmV2ZXIgdXNlZCBmb3IgZW5jcnlwdGlvbi48bzpwPjwvbzpwPjwvc3Bhbj48L3A+DQo8cCBj
bGFzcz0iTXNvTm9ybWFsIj48c3BhbiBsYW5nPSJFTi1VUyIgc3R5bGU9ImZvbnQtc2l6ZToxMC4w
cHQ7Zm9udC1mYW1pbHk6JnF1b3Q7QXJpYWwmcXVvdDssJnF1b3Q7c2Fucy1zZXJpZiZxdW90Oztj
b2xvcjojMUY0OTdEIj48bzpwPiZuYnNwOzwvbzpwPjwvc3Bhbj48L3A+DQo8cCBjbGFzcz0iTXNv
Tm9ybWFsIj48c3BhbiBsYW5nPSJFTi1VUyIgc3R5bGU9ImZvbnQtc2l6ZToxMC4wcHQ7Zm9udC1m
YW1pbHk6JnF1b3Q7QXJpYWwmcXVvdDssJnF1b3Q7c2Fucy1zZXJpZiZxdW90Oztjb2xvcjojMUY0
OTdEIj4vLyBhbGdvcml0aG0gd2hpY2ggYXJlIG5vdCBzcGVjaWZpZWQgYXJlIG5vdCB1c2VkICEg
dGhlcmUgaXMgbm8gaGlkZGVuIHRyeS48bzpwPjwvbzpwPjwvc3Bhbj48L3A+DQo8cCBjbGFzcz0i
TXNvTm9ybWFsIj48c3BhbiBsYW5nPSJFTi1VUyIgc3R5bGU9ImZvbnQtc2l6ZToxMC4wcHQ7Zm9u
dC1mYW1pbHk6JnF1b3Q7QXJpYWwmcXVvdDssJnF1b3Q7c2Fucy1zZXJpZiZxdW90Oztjb2xvcjoj
MUY0OTdEIj48bzpwPiZuYnNwOzwvbzpwPjwvc3Bhbj48L3A+DQo8cCBjbGFzcz0iTXNvTm9ybWFs
Ij48c3BhbiBsYW5nPSJFTi1VUyIgc3R5bGU9ImZvbnQtc2l6ZToxMC4wcHQ7Zm9udC1mYW1pbHk6
JnF1b3Q7QXJpYWwmcXVvdDssJnF1b3Q7c2Fucy1zZXJpZiZxdW90Oztjb2xvcjojMUY0OTdEIj48
bzpwPiZuYnNwOzwvbzpwPjwvc3Bhbj48L3A+DQo8cCBjbGFzcz0iTXNvTm9ybWFsIj48c3BhbiBs
YW5nPSJFTi1VUyIgc3R5bGU9ImZvbnQtc2l6ZToxMC4wcHQ7Zm9udC1mYW1pbHk6JnF1b3Q7QXJp
YWwmcXVvdDssJnF1b3Q7c2Fucy1zZXJpZiZxdW90Oztjb2xvcjojMUY0OTdEIj48bzpwPiZuYnNw
OzwvbzpwPjwvc3Bhbj48L3A+DQo8cCBjbGFzcz0iTXNvTm9ybWFsIj48Yj48c3BhbiBzdHlsZT0i
Zm9udC1zaXplOjEwLjBwdDtmb250LWZhbWlseTomcXVvdDtUYWhvbWEmcXVvdDssJnF1b3Q7c2Fu
cy1zZXJpZiZxdW90OyI+Vm9uOjwvc3Bhbj48L2I+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZToxMC4w
cHQ7Zm9udC1mYW1pbHk6JnF1b3Q7VGFob21hJnF1b3Q7LCZxdW90O3NhbnMtc2VyaWYmcXVvdDsi
PiBsaWJzc2gyLWRldmVsIFttYWlsdG86bGlic3NoMi1kZXZlbC1ib3VuY2VzQGNvb2wuaGF4eC5z
ZV0NCjxiPkltIEF1ZnRyYWcgdm9uIDwvYj5EaGFuYW5qYXkga3VtYXI8YnI+DQo8Yj5HZXNlbmRl
dDo8L2I+IERvbm5lcnN0YWcsIDE4LiBPa3RvYmVyIDIwMTggMTM6Mjg8YnI+DQo8Yj5Bbjo8L2I+
IGxpYnNzaDItZGV2ZWxAY29vbC5oYXh4LnNlPGJyPg0KPGI+QmV0cmVmZjo8L2I+IGxpYnNzaDIg
QVBJcyB0byBjb25maWd1cmUgZGlmZmVyZW50IGFsZ29yaXRobXM8bzpwPjwvbzpwPjwvc3Bhbj48
L3A+DQo8cCBjbGFzcz0iTXNvTm9ybWFsIj48bzpwPiZuYnNwOzwvbzpwPjwvcD4NCjxkaXY+DQo8
ZGl2Pg0KPGRpdj4NCjxkaXY+DQo8ZGl2Pg0KPGRpdj4NCjxkaXY+DQo8ZGl2Pg0KPGRpdj4NCjxk
aXY+DQo8cCBjbGFzcz0iTXNvTm9ybWFsIj5IaSw8bzpwPjwvbzpwPjwvcD4NCjxkaXY+DQo8cCBj
bGFzcz0iTXNvTm9ybWFsIj48bzpwPiZuYnNwOzwvbzpwPjwvcD4NCjwvZGl2Pg0KPGRpdj4NCjxw
IGNsYXNzPSJNc29Ob3JtYWwiPldlIHVzZSBsaWJzc2gyIHNzaCBjbGllbnQgKHZlcmlzb24mbmJz
cDsxLjQuMikgaW4gb3VyIGFwcGxpY2F0aW9uIGFuZCB3ZSBoYXZlIGEgcmVxdWlyZW1lbnQgdG8g
dXNlL29mZmVyIGNlcnRhaW4gS2V5IEV4Y2hhbmdlKGRpZmZpZS1oZWxsbWFuLWdyb3VwMTQtc2hh
MSBvbmx5KSwgRW5jcnlwdGlvbihhZXMxMjgtY2JjLGFlczI1Ni1jYmMsIGFlczEyOC1nY20gb25s
eSksIE1BQyhobWFjLXNoYTEsIGhtYWMtc2hhMS05Ng0KIG9ubHkpIGFuZCBIb3N0S2V5KHNzaC1y
c2Egb25seSkmbmJzcDsgYWxnb3JpdGhtcyBmcm9tIFNTSCBjbGllbnQgZW5kLjxvOnA+PC9vOnA+
PC9wPg0KPC9kaXY+DQo8ZGl2Pg0KPHAgY2xhc3M9Ik1zb05vcm1hbCI+PG86cD4mbmJzcDs8L286
cD48L3A+DQo8L2Rpdj4NCjxkaXY+DQo8cCBjbGFzcz0iTXNvTm9ybWFsIj5JIGFtIG5ldyB0byBs
aWJzc2gyIGFuZCB0cnlpbmcgdG8gZmlndXJlIG91dCBpZiB0aGVyZSBhcmUgbGlic3NoMiBBUElz
IGF2YWlsYWJsZSB0byBjb25maWd1cmUgc2V0IG9mIGFsZ29yaXRobXMgYmVmb3JlIHN0YXJ0aW5n
IGEgc2Vzc2lvbi4gRnJvbSZuYnNwOzxhIGhyZWY9Imh0dHBzOi8vd3d3LmxpYnNzaDIub3JnLyI+
aHR0cHM6Ly93d3cubGlic3NoMi5vcmcvPC9hPiAsIEkgdW5kZXJzdGFuZCBsaWJzc2gyIHN1cHBv
cnRzDQogYWxsIGFib3ZlIG1lbnRpb25lZCBhbGdvcml0aG1zIGFuZCBhbHNvIGxvdCBtb3JlLiBJ
IGFtIGxvb2tpbmcgZm9yIG9wdGlvbnMgdG8gZGlzYWJsZSB0aGUgZXh0cmEgYWxnb3JpdGhtcyBv
biB0aGUgZmx5IChvcikgdG8gZW5hYmxlIG9ubHkgbGltaXRlZCBzZXQgb2YgYWxnb3JpdGhtcy48
bzpwPjwvbzpwPjwvcD4NCjwvZGl2Pg0KPGRpdj4NCjxwIGNsYXNzPSJNc29Ob3JtYWwiPjxvOnA+
Jm5ic3A7PC9vOnA+PC9wPg0KPC9kaXY+DQo8ZGl2Pg0KPHAgY2xhc3M9Ik1zb05vcm1hbCI+QXBw
cmVjaWF0ZSBhbnkgcG9pbnRlcnMsIGNvZGUgcmVmZXJlbmNlcy48bzpwPjwvbzpwPjwvcD4NCjwv
ZGl2Pg0KPGRpdj4NCjxwIGNsYXNzPSJNc29Ob3JtYWwiPjxvOnA+Jm5ic3A7PC9vOnA+PC9wPg0K
PC9kaXY+DQo8ZGl2Pg0KPHAgY2xhc3M9Ik1zb05vcm1hbCI+VGhhbmtzLjxvOnA+PC9vOnA+PC9w
Pg0KPC9kaXY+DQo8L2Rpdj4NCjwvZGl2Pg0KPC9kaXY+DQo8L2Rpdj4NCjwvZGl2Pg0KPC9kaXY+
DQo8L2Rpdj4NCjwvZGl2Pg0KPC9kaXY+DQo8L2Rpdj4NCjwvZGl2Pg0KPC9ib2R5Pg0KPC9odG1s
Pg0K

--_000_16C23041BD880F48901C072C51AC6A2E030678F9DEFTHW99EH2MSXw_--

--===============0771841070==
Content-Type: text/plain; charset="utf-8"
MIME-Version: 1.0
Content-Transfer-Encoding: base64
Content-Disposition: inline

X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KbGlic3NoMi1k
ZXZlbCBodHRwczovL2Nvb2wuaGF4eC5zZS9jZ2ktYmluL21haWxtYW4vbGlzdGluZm8vbGlic3No
Mi1kZXZlbAo=

--===============0771841070==--

From libssh2-devel-bounces@cool.haxx.se  Tue Oct 23 13:02:10 2018
Return-Path: <libssh2-devel-bounces@cool.haxx.se>
Received: from www.haxx.se (mail [127.0.0.1])
	by giant.haxx.se (8.15.2/8.15.2/Debian-4) with ESMTP id w9NB1ipw029586;
	Tue, 23 Oct 2018 13:02:05 +0200
Received: from mail-ed1-x52c.google.com (mail-ed1-x52c.google.com
 [IPv6:2a00:1450:4864:20:0:0:0:52c])
 by giant.haxx.se (8.15.2/8.15.2/Debian-4) with ESMTPS id w9NB1gHJ029553
 (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128 verify=NOT)
 for <libssh2-devel@cool.haxx.se>; Tue, 23 Oct 2018 13:01:43 +0200
Received: by mail-ed1-x52c.google.com with SMTP id t10-v6so1164747eds.12
 for <libssh2-devel@cool.haxx.se>; Tue, 23 Oct 2018 04:01:43 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025;
 h=mime-version:from:date:message-id:subject:to;
 bh=x9eH56mF7v0kLfGovVq5k7YQPTwe2b/TRIB4JVcs36A=;
 b=p1bV+s3TwvdDhUEQaBwZi/SD+cDVNSwlTQtXDqksJGslPJX3qC2mhfP8wRAuVz9U4q
 KoOVhVCN6OcRBIIqRGrLrasMEagjXrakaY8WJ5i8AkwP0OooP+SLsH7pKQaX0LMjtNT2
 ZaiIl18nyed3E+39TvfX7vUxdtMROfKBOl3j+/0nojSd22xEgXeFGGSSv3srRXixQU7w
 5Isn0uqa4PdHDvPyzVnCpcXhJ4fbGGV5U6Str+OxGCWsPSSaco8oG0mUAlUM49YynxhX
 RdYtabmYfFxUN/7FfKI0SG9vgDZx5gLGIT6aEm2Swqm6kl3MUq2axqcaYUcCfLqHcFTi
 mwEQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20161025;
 h=x-gm-message-state:mime-version:from:date:message-id:subject:to;
 bh=x9eH56mF7v0kLfGovVq5k7YQPTwe2b/TRIB4JVcs36A=;
 b=CeM8elGXMTVH56M2xSks8B6xQxYJNpA1NbHOPJ0tXIZreVJJSOXPKj3CWmbEw29WLg
 NFHt8rON1IYekgsskzliww5SVxWCqISjuiyPHzc87ckGigWIQ7m+zdfsCHHiguA6kQQf
 q5+rasDVju1JOrD/823X4DD1pjwAXzuvXJ6H9SirYiGxhGzDOCgs+pzRj8WaOJemEPQ8
 kzBO/0lR89LVUDaon8VMtbS6wRiJGpn55UIKZ+hDkOONdsp/R0DpGswKJOUMjAP3pAxu
 UGO6KIQQ6H2GfpoXibX+L/dJRBtSpLSQbzXR7f/M2craWx9GvOR/6M+RRdrupgIHyllM
 jOLg==
X-Gm-Message-State: ABuFfogplCqmcEtb+f+xqhCwl78iUsDLAsfD7bWBrU6b/2whnIHnsTYz
 nEMWLGihLTKl2K43vB24tnFK/D7RWslpTPmBAIZUcK88
X-Google-Smtp-Source: ACcGV605OcXXjXGBZ0B4sP7BT4kCFERJqkAoLF3KNmOjbt5patgeMn83ja6lwz7ssj8xl/uaJEdA3/tcreMw7rl7IWA=
X-Received: by 2002:a50:9886:: with SMTP id
 j6-v6mr16255814edb.160.1540292497954; 
 Tue, 23 Oct 2018 04:01:37 -0700 (PDT)
MIME-Version: 1.0
From: San <sganis@gmail.com>
Date: Tue, 23 Oct 2018 14:01:29 +0300
Message-ID: <CAPJOxpuBJMVRMDETGuMRNZYqttDgN8LabgpbvrDmHphL+zTV=Q@mail.gmail.com>
Subject: File handlers in multithreading
To: libssh2-devel@cool.haxx.se
X-BeenThere: libssh2-devel@cool.haxx.se
X-Mailman-Version: 2.1.22
Precedence: list
List-Id: libssh2 development <libssh2-devel.cool.haxx.se>
List-Unsubscribe: <https://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: <https://cool.haxx.se/cgi-bin/mailman/listinfo/libssh2-devel>, 
 <mailto:libssh2-devel-request@cool.haxx.se?subject=subscribe>
Reply-To: libssh2 development <libssh2-devel@cool.haxx.se>
Content-Type: multipart/mixed; boundary="===============1871117776=="
Errors-To: libssh2-devel-bounces@cool.haxx.se
Sender: "libssh2-devel" <libssh2-devel-bounces@cool.haxx.se>

--===============1871117776==
Content-Type: multipart/alternative; boundary="00000000000030db0f0578e34bc3"

--00000000000030db0f0578e34bc3
Content-Type: text/plain; charset="UTF-8"

Hello All,

My program keeps many independent ssh sessions, one per each thread, to
avoid locking. I need some information about file handlers.
1. If I have a handler of a file from one session, can I close it using
another session in different thread?
2. If I open a file and get the handler in one session, can I operate on
that handler using different session in different thread (reading a chunk,
for example)?

Thanks,
San.

--00000000000030db0f0578e34bc3
Content-Type: text/html; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

<div dir=3D"ltr">Hello All,<div><br></div><div>My program keeps many indepe=
ndent ssh sessions, one per each thread, to avoid locking. I need some info=
rmation about file handlers.</div><div>1. If I have a handler of a file fro=
m one session, can I close it using another session in different thread?</d=
iv><div>2. If I open a file and get the handler in one session, can I opera=
te on that handler using different session in different thread (reading a c=
hunk, for example)?</div><div><br></div><div>Thanks,</div><div>San.</div></=
div>

--00000000000030db0f0578e34bc3--

--===============1871117776==
Content-Type: text/plain; charset="utf-8"
MIME-Version: 1.0
Content-Transfer-Encoding: base64
Content-Disposition: inline

X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KbGlic3NoMi1k
ZXZlbCBodHRwczovL2Nvb2wuaGF4eC5zZS9jZ2ktYmluL21haWxtYW4vbGlzdGluZm8vbGlic3No
Mi1kZXZlbAo=

--===============1871117776==--

From libssh2-devel-bounces@cool.haxx.se  Sat Oct 27 18:50:07 2018
Return-Path: <libssh2-devel-bounces@cool.haxx.se>
Received: from www.haxx.se (mail [127.0.0.1])
	by giant.haxx.se (8.15.2/8.15.2/Debian-4) with ESMTP id w9RGnWU6001238;
	Sat, 27 Oct 2018 18:49:56 +0200
Received: from rediffmail.com (f5mail-224-131.rediffmail.com [114.31.224.131])
 by giant.haxx.se (8.15.2/8.15.2/Debian-4) with ESMTPS id
 w9RGnThd001198
 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT)
 for <libssh2-devel@cool.haxx.se>; Sat, 27 Oct 2018 18:49:30 +0200
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=rediffmail.com;
 s=mail; t=1540658963;
 bh=U0058vTTN4QVcfFx4wRKWb3hplP7do6ek2lRe7OU/4U=;
 h=MIME-Version:From:Date:Message-ID:Subject:To:Content-Type;
 b=RCyTzMtxgmUeXDqEKIrxJZLFJZ6k7tU5Z05UXFfJCP5+gbwciBfbcbNRT8Duz2lYd
 eYTukZynI2nNhaJYV49KR+8Bv4WuAKaH96DRldJeh5/2E0+zZFYwpP5njgJR+wbEq3
 q83ZHHJYDy+S0u9tdKQv5VvqFByDsWESuqesSLtk=
Received: (qmail 29856 invoked by uid 510); 27 Oct 2018 16:49:23 -0000
x-m-msg: asd54ad564ad7aa6sd5as6d5; a6da7d6asas6dasd77; 5dad65ad5sd;
X-OUT-VDRT-SpamState: 0\LEGIT
X-OUT-VDRT-SpamScore: 30
X-OUT-VDRT-SpamCause: gggruggvucftvghtrhhoucdtuddrgedtkedrheeggddutdekucetufdoteggodetrfdotffvucfrrhhofhhilhgvmecutffgfffkhffhpdfqfgfvnecuuegrihhlohhuthemuceftddtnecuogfthfevqddqvehonhhtvghnthfvhihpvgdvucdlfedtmdenucfjughrpeffkfggvfhsuffhtgesmhdtvdertddtjeenucfhrhhomhepfdfuuhgsrhgrthgrucffrghsghhuphhtrgdfuceoshhusghrrghtrggpuhhshhgrsehrvgguihhffhhmrghilhdrtghomheqnecukfhppeduledvrddujeeirddurdekudenucfrrghrrghmpehmohguvgepshhmthhpohhuthenucevlhhushhtvghrufhiiigvpedt
X-Remote-IP: 192.176.1.81
X-REDF-OSEN: subrata_usha@rediffmail.com
Date: 27 Oct 2018 16:49:23 -0000
Message-ID: <20181027164923.29852.qmail@f5mail-224-131.rediffmail.com>
MIME-Version: 1.0
To: <libssh2-devel@cool.haxx.se>
Received: from unknown 192.176.1.81 by rediffmail.com via HTTP;
 27 Oct 2018 16:49:23 -0000
X-Senderscore: D=0&S=0
Subject: =?utf-8?B?QXR0YWNoZWQgU1NIIGNsaWVudCBub3QgcmVhZGluZyBhbGwgZGF0YSB3aGVuIG91dHB1dCBvZiBjb21tYW5kIGlzIHZlcnkgYmln?=
From: "Subrata Dasgupta" <subrata_usha@rediffmail.com>
Content-Type: multipart/mixed;
	boundary="=_807806a660c38262499320e7a56cec45"
X-BeenThere: libssh2-devel@cool.haxx.se
X-Mailman-Version: 2.1.22
Precedence: list
List-Id: libssh2 development <libssh2-devel.cool.haxx.se>
List-Unsubscribe: <https://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: <https://cool.haxx.se/cgi-bin/mailman/listinfo/libssh2-devel>, 
 <mailto:libssh2-devel-request@cool.haxx.se?subject=subscribe>
Reply-To: libssh2 development <libssh2-devel@cool.haxx.se>
Errors-To: libssh2-devel-bounces@cool.haxx.se
Sender: "libssh2-devel" <libssh2-devel-bounces@cool.haxx.se>

--=_807806a660c38262499320e7a56cec45
Content-Type: multipart/alternative;
	boundary="=_bdb008f4b8cee139b311fec4e332352b"

--=_bdb008f4b8cee139b311fec4e332352b
Content-Transfer-Encoding: 7bit
Content-Type: text/plain; charset="UTF-8"

Hi All,I am new to libssh2.I am using the example program SmallSimpleSSH.c to simulate a SSH client terminal to execute several commands. Please find the attached code.Normally program is working fine. But when output of the remotely executed program is very big then the client is not able to read all the data. Seems server is sending the partial data and then the command prompt. But if I connect the same server using PUTTY and execute the same command then PUTTY terminal is showing &quot;more&quot; at the end of terminal and wait for my &quot;return&quot; key press.My objective is to read all the output of the command without blocking on &quot;more&quot; ( means &quot;return&quot; key press). How can I achieve this ? Please help.ThanksSubrata
--=_bdb008f4b8cee139b311fec4e332352b
Content-Transfer-Encoding: quoted-printable
Content-Type: text/html; charset="UTF-8"

Hi All,<br />I am new to libssh2.<br /><br />I am using the example program=
 SmallSimpleSSH.c to simulate a SSH client terminal to execute several comm=
ands. Please find the attached code.<br /><br />Normally program is working=
 fine. But when output of the remotely executed program is very big then th=
e client is not able to read all the data. Seems server is sending the part=
ial data and then the command prompt. But if I connect the same server usin=
g PUTTY and execute the same command then PUTTY terminal is showing &quot;m=
ore&quot; at the end of terminal and wait for my &quot;return&quot; key pre=
ss.<br /><br />My objective is to read all the output of the command withou=
t blocking on &quot;more&quot; ( means &quot;return&quot; key press). How c=
an I achieve this ? Please help.<br /><br />Thanks<br />Subrata<br>
--=_bdb008f4b8cee139b311fec4e332352b--

--=_807806a660c38262499320e7a56cec45
Content-Transfer-Encoding: base64
Content-Type: application/octet-stream;
 name="SmallSimpleSSH_2.c"; 
Content-Disposition: attachment;
 filename="SmallSimpleSSH_2.c"; 

LyoKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KIE5hbWUgICAgICAgIDogU21hbGxTaW1wbGVTU0guYwog
QXV0aG9yICAgICAgOiBJdmFuIFRyZXR5YWtvdgogVmVyc2lvbiAgICAgOiAwLjEKIENvcHlyaWdo
dCAgIDogR1BMdjMKIERlc2NyaXB0aW9uIDogTGlic3NoMiBzc2ggY2xpZW50IGV4YW1wbGUKID09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KICovCgojaW5jbHVkZSA8c3RkaW8uaD4KI2luY2x1ZGUgPHN0ZGxp
Yi5oPgojaW5jbHVkZSA8dW5pc3RkLmg+CiNpbmNsdWRlIDxsaWJzc2gyLmg+CiNpbmNsdWRlIDxz
eXMvdHlwZXMuaD4KI2luY2x1ZGUgPHN5cy9zb2NrZXQuaD4KI2luY2x1ZGUgPGFycGEvaW5ldC5o
PgojaW5jbHVkZSA8cG9sbC5oPgojaW5jbHVkZSA8ZmNudGwuaD4KCiNkZWZpbmUgRVhJVF9DT01N
QU5ECSJleGl0XG4iCgovKiBNYWluIGZ1bmN0aW9uICovCmludCBtYWluKGludCBhcmdjLCBjaGFy
ICphcmd2W10pIHsKCgljb25zdCBjaGFyICp1c2VybmFtZTsKCWNvbnN0IGNoYXIgKnBhc3N3b3Jk
OwoJY29uc3QgY2hhciAqaG9zdGFkZHI7CglpbnQgcmM7CglpbnQgc29jazsKCWludCB3cml0dGVu
OwoJc3RydWN0IHNvY2thZGRyX2luIHNpbjsKCUxJQlNTSDJfU0VTU0lPTiAqc2Vzc2lvbjsKCUxJ
QlNTSDJfQ0hBTk5FTCAqY2hhbm5lbDsKCWNoYXIgY29tbWFuZGJ1ZltCVUZTSVpdOwoJY2hhciBp
bnB1dGJ1ZltCVUZTSVpdOwoJY29uc3QgY2hhciBudW1mZHMgPSAyOwoJc3RydWN0IHBvbGxmZCBw
ZmRzW251bWZkc107CgoJLyogR2V0IElQIGFuZCBhdXRob3JpemF0aW9uIGRhdGEgKi8KCWlmIChh
cmd2WzFdICE9IE5VTEwgJiYgYXJndlsyXSAhPSBOVUxMICYmIGFyZ3ZbM10gIT0gTlVMTCkgewoJ
CWhvc3RhZGRyID0gYXJndlsxXTsKCQl1c2VybmFtZSA9IGFyZ3ZbMl07CgkJcGFzc3dvcmQgPSBh
cmd2WzNdOwoJfSBlbHNlIHsKCQlmcHJpbnRmKHN0ZGVyciwgIlVzYWdlOiAlcyA8dGFyZ2V0IGlw
PiA8dXNlcm5hbWU+IDxwYXNzd29yZD5cbiIsCgkJCQlhcmd2WzBdKTsKCQlyZXR1cm4gKEVYSVRf
RkFJTFVSRSk7Cgl9CgoJLyogTGlic3MyIGluaXQgYmxvY2sgKi8KCXJjID0gbGlic3NoMl9pbml0
KDApOwoJaWYgKHJjKSB7CgkJZnByaW50ZihzdGRlcnIsICJFcnJvcjogbGlic3NoX2luaXQoKVxu
Iik7CgkJcmV0dXJuIChFWElUX0ZBSUxVUkUpOwoJfQoKCS8qIENyZWF0aW5nIHNvY2tldCAqLwoJ
c29jayA9IHNvY2tldChBRl9JTkVULCBTT0NLX1NUUkVBTSwgMCk7CglpZiAoc29jayA9PSAtMSkg
ewoJCXBlcnJvcigic29ja2V0Iik7CgkJcmV0dXJuIChFWElUX0ZBSUxVUkUpOwoJfQoKCS8qIENv
bm5lY3QgdGhpcyBzb2NrZXQgdG8gcmVtb3RlIHNpZGUgKi8KCXNpbi5zaW5fZmFtaWx5ID0gQUZf
SU5FVDsKCXNpbi5zaW5fcG9ydCA9IGh0b25zKDIyKTsKCXNpbi5zaW5fYWRkci5zX2FkZHIgPSBp
bmV0X2FkZHIoaG9zdGFkZHIpOwoJaWYgKGNvbm5lY3Qoc29jaywgKHN0cnVjdCBzb2NrYWRkciop
KCZzaW4pLAoJCQkJc2l6ZW9mKHN0cnVjdCBzb2NrYWRkcl9pbikpICE9IDApIHsKCQlmcHJpbnRm
KHN0ZGVyciwgIkZhaWxlZCB0byBjb25uZWN0XG4iKTsKCQlyZXR1cm4gKEVYSVRfRkFJTFVSRSk7
Cgl9CgoJLyogU2V0IHNvY2tldCBub24tYmxvY2tpbmcgKi8KCXJjID0gZmNudGwoc29jaywgRl9T
RVRGTCwgT19OT05CTE9DSyk7CglpZiAocmMgPT0gLTEpIHsKCQlwZXJyb3IoImZjbnRsIik7CgkJ
cmV0dXJuIChFWElUX0ZBSUxVUkUpOwoJfQoKCS8qIFNldCBzdGRpbiBub24tYmxvY2tpbmcgKi8K
CXJjID0gZmNudGwoU1RESU5fRklMRU5PLCBGX1NFVEZMLCBPX05PTkJMT0NLKTsKCWlmIChyYyA9
PSAtMSkgewoJCXBlcnJvcigiZmNudGwiKTsKCQlyZXR1cm4gKEVYSVRfRkFJTFVSRSk7Cgl9CgoJ
LyogQ3JlYXRlIGEgc2Vzc2lvbiBpbnN0YW5jZSBhbmQgc3RhcnQgaXQgdXAuIFRoaXMgd2lsbCB0
cmFkZSB3ZWxjb21lCgkgKiBiYW5uZXJzLCBleGNoYW5nZSBrZXlzLCBhbmQgc2V0dXAgY3J5cHRv
LCBjb21wcmVzc2lvbiwgYW5kIE1BQyBsYXllcnMgKi8KCXNlc3Npb24gPSBsaWJzc2gyX3Nlc3Np
b25faW5pdCgpOwoJaWYgKCFzZXNzaW9uKSB7CgkJZnByaW50ZihzdGRlcnIsICJTU0ggaW5pdCBm
YWlsZWRcbiIpOwoJCXJldHVybiAoRVhJVF9GQUlMVVJFKTsKCX0KCgkvKiBIYW5kc2hha2UgZm9y
IHNlc3Npb24gKi8KCXJjID0gbGlic3NoMl9zZXNzaW9uX2hhbmRzaGFrZShzZXNzaW9uLCBzb2Nr
KTsKCWlmIChyYykgewoJCWZwcmludGYoc3RkZXJyLCAiU1NIIGhhbmRzaGFrZSBmYWlsZWRcbiIp
OwoJCXJldHVybiAoRVhJVF9GQUlMVVJFKTsKCX0KCgkvKiBMZXRzIGF1dGhlbnRpY2F0ZSAqLwoJ
cmMgPSBsaWJzc2gyX3VzZXJhdXRoX3Bhc3N3b3JkKHNlc3Npb24sIHVzZXJuYW1lLCBwYXNzd29y
ZCk7CglpZiAocmMpIHsKCQlwcmludGYoIkF1dGhlbnRpY2F0aW9uIGJ5IHBhc3N3b3JkIGZhaWxl
ZFxuIik7CgkJcmV0dXJuIChFWElUX0ZBSUxVUkUpOwoJfSBlbHNlIHsKCQlwcmludGYoIkF1dGhl
bnRpY2F0aW9uIGJ5IHBhc3N3b3JkIHN1Y2NlZWRlZFxuIik7Cgl9CgoJLyogUmVxdWVzdCBhIHNo
ZWxsICovCgljaGFubmVsID0gbGlic3NoMl9jaGFubmVsX29wZW5fc2Vzc2lvbihzZXNzaW9uKTsK
CWlmICghY2hhbm5lbCkgewoJCWZwcmludGYoc3RkZXJyLCAiVW5hYmxlIHRvIG9wZW4gYSBzZXNz
aW9uXG4iKTsKCQlyZXR1cm4gKEVYSVRfRkFJTFVSRSk7Cgl9CgoJLyogUmVxdWVzdCBhIHRlcm1p
bmFsIHdpdGggJ3Z0MTAwJyB0ZXJtaW5hbCBlbXVsYXRpb24gKi8KCXJjID0gbGlic3NoMl9jaGFu
bmVsX3JlcXVlc3RfcHR5KGNoYW5uZWwsICJ2dDEwMCIpOwoJaWYgKHJjKSB7CgkJZnByaW50Zihz
dGRlcnIsICJGYWlsZWQgcmVxdWVzdGluZyBwdHlcbiIpOwoJCXJldHVybiAoRVhJVF9GQUlMVVJF
KTsKCX0KCgkvKiBPcGVuIGEgU0hFTEwgb24gdGhhdCBwdHkgKi8KCXJjID0gbGlic3NoMl9jaGFu
bmVsX3NoZWxsKGNoYW5uZWwpOwoJaWYgKHJjKSB7CgkJZnByaW50ZihzdGRlcnIsICJVbmFibGUg
dG8gcmVxdWVzdCBzaGVsbCBvbiBhbGxvY2F0ZWQgcHR5XG4iKTsKCQlyZXR1cm4gKEVYSVRfRkFJ
TFVSRSk7Cgl9CgoJLyogU2V0IGxpYnNzaDIgdG8gbm9uLWJsb2NraW5nIG1vZGUgKi8KCWxpYnNz
aDJfY2hhbm5lbF9zZXRfYmxvY2tpbmcoY2hhbm5lbCwgMCk7CgoJLyogUHJlcGFyZSB0byB1c2Ug
cG9sbCAqLwoJbWVtc2V0KHBmZHMsIDAsIHNpemVvZihzdHJ1Y3QgcG9sbGZkKSAqIG51bWZkcyk7
CgoJLyogTWFpbiBsb29wIHN0YXJ0cyBoZXJlLgoJICogSW4gaXQgeW91IHdpbGwgYmUgcmVxdWVz
dGVkIHRvIGlucHV0IGEgY29tbWFuZAoJICogY29tbWFuZCB3aWxsIGJlIGV4ZWN1dGVkIGF0IHJl
bW90ZSBzaWRlCgkgKiBhbiB5b3Ugd2lsbCBnZXQgb3V0cHV0IGZyb20gaXQgKi8KCWRvIHsKCQkv
KiBEZWNsYXJlIHRoYXQgd2UgbmVldCB0byB3YWl0IHdoaWxlCgkJICogc29ja2V0IG9yIHN0ZGlu
IG5vdCByZWFkeSBmb3IgcmVhZGluZyAqLwoJCXBmZHNbMF0uZmQgPSBzb2NrOwoJCXBmZHNbMF0u
ZXZlbnRzID0gUE9MTElOOwoJCXBmZHNbMF0ucmV2ZW50cyA9IDA7CgkJcGZkc1sxXS5mZCA9IFNU
RElOX0ZJTEVOTzsKCQlwZmRzWzFdLmV2ZW50cyA9IFBPTExJTjsKCQlwZmRzWzFdLnJldmVudHMg
PSAwOwoKCQkvKiBQb2xsaW5nIG9uIHNvY2tldCBhbmQgc3RkaW4gd2hpbGUgd2UgYXJlCgkJICog
bm90IHJlYWR5IHRvIHJlYWQgZnJvbSBpdCAqLwoJCXJjID0gcG9sbChwZmRzLCBudW1mZHMsIC0x
KTsKCQlpZiAoLTEgPT0gcmMpIHsKCQkJcGVycm9yKCJwb2xsIik7CgkJCWJyZWFrOwoJCX0KCgkJ
aWYgKHBmZHNbMF0ucmV2ZW50cyAmIFBPTExJTikgewoJCQkvKiBSZWFkIG91dHB1dCBmcm9tIHJl
bW90ZSBzaWRlICovCgkJCWRvIHsKCQkJCXJjID0gbGlic3NoMl9jaGFubmVsX3JlYWQoY2hhbm5l
bCwgaW5wdXRidWYsIEJVRlNJWik7CgkJCQlwcmludGYoIiVzIiwgaW5wdXRidWYpOwoJCQkJZmZs
dXNoKHN0ZG91dCk7CgkJCQltZW1zZXQoaW5wdXRidWYsIDAsIEJVRlNJWik7CgkJCX0gd2hpbGUg
KExJQlNTSDJfRVJST1JfRUFHQUlOICE9IHJjICYmIHJjID4gMCk7CgkJfQoJCWlmIChyYyA8IDAg
JiYgTElCU1NIMl9FUlJPUl9FQUdBSU4gIT0gcmMpIHsKCQkJZnByaW50ZihzdGRlcnIsICJsaWJz
c2gyX2NoYW5uZWxfcmVhZCBlcnJvciBjb2RlICVkXG4iLCByYyk7CgkJCXJldHVybiAoRVhJVF9G
QUlMVVJFKTsKCQl9CgoJCWlmIChwZmRzWzFdLnJldmVudHMgJiBQT0xMSU4pIHsKCQkJLyogUmVx
dWVzdCBmb3IgY29tbWFuZCBpbnB1dCAqLwoJCQlmZ2V0cyhjb21tYW5kYnVmLCBCVUZTSVogLSAy
LCBzdGRpbik7CgkJCWlmIChzdHJjbXAoY29tbWFuZGJ1ZiwgRVhJVF9DT01NQU5EKSA9PSAwKQoJ
CQkJYnJlYWs7CgoJCQkvKiBBZGp1c3QgY29tbWFuZCBmb3JtYXQgKi8KCQkJY29tbWFuZGJ1Zltz
dHJsZW4oY29tbWFuZGJ1ZikgLSAxXSA9ICdccic7CgkJCWNvbW1hbmRidWZbc3RybGVuKGNvbW1h
bmRidWYpXSA9ICdcbic7CgkJCWNvbW1hbmRidWZbc3RybGVuKGNvbW1hbmRidWYpICsgMV0gPSAn
XDAnOwoKCQkJLyogV3JpdGUgY29tbWFuZCB0byBzdGRpbiBvZiByZW1vdGUgc2hlbGwgKi8KCQkJ
d3JpdHRlbiA9IDA7CgkJCWRvIHsKCQkJCXJjID0gbGlic3NoMl9jaGFubmVsX3dyaXRlKGNoYW5u
ZWwsIGNvbW1hbmRidWYsIHN0cmxlbihjb21tYW5kYnVmKSk7CgkJCQl3cml0dGVuICs9IHJjOwoJ
CQl9IHdoaWxlIChMSUJTU0gyX0VSUk9SX0VBR0FJTiAhPSByYwoJCQkJCSYmIHJjID4gMAoJCQkJ
CSYmIHdyaXR0ZW4gIT0gc3RybGVuKGNvbW1hbmRidWYpKTsKCQkJbWVtc2V0KGNvbW1hbmRidWYs
IDAsIEJVRlNJWik7CgkJfQoJCWlmIChyYyA8IDAgJiYgTElCU1NIMl9FUlJPUl9FQUdBSU4gIT0g
cmMpIHsKCQkJZnByaW50ZihzdGRlcnIsICJsaWJzc2gyX2NoYW5uZWxfd3JpdGUgZXJyb3IgY29k
ZSAlZFxuIiwgcmMpOwoJCQlyZXR1cm4gKEVYSVRfRkFJTFVSRSk7CgkJfQoKCX0gd2hpbGUgKDEp
OwoJLyogTWFpbiBsb29wIGVuZHMgaGVyZSAqLwoKCS8qIERlLWluaXQgYW5kIHByZS1leGl0IGFj
dGlvbnMgKi8KCWlmIChjaGFubmVsKSB7CgkJbGlic3NoMl9jaGFubmVsX2ZyZWUoY2hhbm5lbCk7
CgkJY2hhbm5lbCA9IE5VTEw7Cgl9CgoJLyogRmluaXNoIGFjdGlvbnMgYmVsb3cgKi8KCXJjID0g
bGlic3NoMl9zZXNzaW9uX2Rpc2Nvbm5lY3Qoc2Vzc2lvbiwgIk5vcm1hbCBTaHV0ZG93biIpOwoJ
aWYgKHJjKSB7CgkJZnByaW50ZihzdGRlcnIsICJTZXNzaW9uIGRpc2Nvbm5lY3QgZXJyb3JcbiIp
OwoJCXJldHVybiAoRVhJVF9GQUlMVVJFKTsKCX0gZWxzZQoJCXByaW50ZigiU2Vzc2lvbiBmaW5p
c2hlZCBzdWNjZXNzZnVsXG4iKTsKCglsaWJzc2gyX3Nlc3Npb25fZnJlZShzZXNzaW9uKTsKCglj
bG9zZShzb2NrKTsKCglsaWJzc2gyX2V4aXQoKTsKCglyZXR1cm4gKEVYSVRfU1VDQ0VTUyk7Cn0K
--=_807806a660c38262499320e7a56cec45
Content-Type: text/plain; charset="utf-8"
MIME-Version: 1.0
Content-Transfer-Encoding: base64
Content-Disposition: inline

X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KbGlic3NoMi1k
ZXZlbCBodHRwczovL2Nvb2wuaGF4eC5zZS9jZ2ktYmluL21haWxtYW4vbGlzdGluZm8vbGlic3No
Mi1kZXZlbAo=

--=_807806a660c38262499320e7a56cec45--

From libssh2-devel-bounces@cool.haxx.se  Sat Oct 27 22:00:55 2018
Return-Path: <libssh2-devel-bounces@cool.haxx.se>
Received: from www.haxx.se (mail [127.0.0.1])
	by giant.haxx.se (8.15.2/8.15.2/Debian-4) with ESMTP id w9RK0Oae004958;
	Sat, 27 Oct 2018 22:00:46 +0200
Received: from rediffmail.com (f5mail-224-101.rediffmail.com [114.31.224.101])
 by giant.haxx.se (8.15.2/8.15.2/Debian-4) with ESMTPS id
 w9RK0LF1004868
 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT)
 for <libssh2-devel@cool.haxx.se>; Sat, 27 Oct 2018 22:00:22 +0200
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=rediffmail.com;
 s=mail; t=1540670416;
 bh=eu93oTOii7bLbqPYu6nccsCrV+5KoXQC69/XaZBDahg=;
 h=MIME-Version:From:Date:Message-ID:Subject:To:Content-Type;
 b=SBhbJ7BjFP38gaiubuwPQrmUgj1qAJOiiDqXhHmeFIqWbNxNipTTKPXGFHbnzWSG9
 94PF2qdKN4Yu5GkKoZgm1Ly/B8r1297aannpvqwG6fgr8Z0dQv6ht9t1MhXDMAL5Hp
 IC4ssAG8ZQmxjm3l1iMoGTB+oYLnGv2kIbrCY5wU=
Received: (qmail 21023 invoked by uid 510); 27 Oct 2018 20:00:16 -0000
x-m-msg: asd54ad564ad7aa6sd5as6d5; a6da7d6asas6dasd77; 5dad65ad5sd;
X-OUT-VDRT-SpamState: 0\LEGIT
X-OUT-VDRT-SpamScore: 30
X-OUT-VDRT-SpamCause: gggruggvucftvghtrhhoucdtuddrgedtkedrheeggddugeejucetufdoteggodetrfdotffvucfrrhhofhhilhgvmecutffgfffkhffhpdfqfgfvnecuuegrihhlohhuthemuceftddtnecuogfthfevqddqvehonhhtvghnthfvhihpvgdvucdlfedtmdenucfjughrpeffkfggvfhsuffhtgesmhdtvdertddtjeenucfhrhhomhepfdfuuhgsrhgrthgrucffrghsghhuphhtrgdfuceoshhusghrrghtrggpuhhshhgrsehrvgguihhffhhmrghilhdrtghomheqnecukfhppeduledvrddujeeirddurdekudenucfrrghrrghmpehmohguvgepshhmthhpohhuthenucevlhhushhtvghrufhiiigvpedt
X-Remote-IP: 192.176.1.81
X-REDF-OSEN: subrata_usha@rediffmail.com
Date: 27 Oct 2018 20:00:16 -0000
Message-ID: <20181027200016.21010.qmail@f5mail-224-101.rediffmail.com>
MIME-Version: 1.0
To: <libssh2-devel@cool.haxx.se>
Received: from unknown 192.176.1.81 by rediffmail.com via HTTP;
 27 Oct 2018 20:00:16 -0000
X-Senderscore: D=0&S=0
Subject: =?utf-8?B?U1NIIGNsaWVudCBpcyBub3QgcmVhZGluZyBmdWxsIGRhdGEgaWYgZXhlY3V0ZWQgY29tbWFuZCBnZW5lcmF0ZXMgYmlnIG91dHB1dA==?=
From: "Subrata Dasgupta" <subrata_usha@rediffmail.com>
Content-Type: multipart/mixed;
	boundary="=_6dac532284e8082013ed04b0df85f995"
X-BeenThere: libssh2-devel@cool.haxx.se
X-Mailman-Version: 2.1.22
Precedence: list
List-Id: libssh2 development <libssh2-devel.cool.haxx.se>
List-Unsubscribe: <https://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: <https://cool.haxx.se/cgi-bin/mailman/listinfo/libssh2-devel>, 
 <mailto:libssh2-devel-request@cool.haxx.se?subject=subscribe>
Reply-To: libssh2 development <libssh2-devel@cool.haxx.se>
Errors-To: libssh2-devel-bounces@cool.haxx.se
Sender: "libssh2-devel" <libssh2-devel-bounces@cool.haxx.se>

--=_6dac532284e8082013ed04b0df85f995
Content-Type: multipart/alternative;
	boundary="=_1ef143308dfab0b3c5ca9ce32b28e3ac"

--=_1ef143308dfab0b3c5ca9ce32b28e3ac
Content-Transfer-Encoding: 7bit
Content-Type: text/plain; charset="UTF-8"

Hi All,I am new to libssh2.I am using the example program SmallSimpleSSH.c to simulate a SSH client terminal to execute several commands. Please find the attached code.Normally program is working fine. But when output of the remotely executed program is very big then the client is not able to read all the data. Seems server is sending the partial data and then the command prompt. But if I connect the same server using PUTTY and execute the same command then PUTTY terminal is showing &quot;more&quot; at the end of terminal and wait for my &quot;return&quot; key press.My objective is to read all the output of the command without blocking on &quot;more&quot; ( means &quot;return&quot; key press). How can I achieve this ? Please help.ThanksSubrata
--=_1ef143308dfab0b3c5ca9ce32b28e3ac
Content-Transfer-Encoding: quoted-printable
Content-Type: text/html; charset="UTF-8"

Hi All,<br />I am new to libssh2.<br /><br />I am using the example program=
 SmallSimpleSSH.c to simulate a SSH client terminal to execute several comm=
ands. Please find the attached code.<br /><br />Normally program is working=
 fine. But when output of the remotely executed program is very big then th=
e client is not able to read all the data. Seems server is sending the part=
ial data and then the command prompt. But if I connect the same server usin=
g PUTTY and execute the same command then PUTTY terminal is showing &quot;m=
ore&quot; at the end of terminal and wait for my &quot;return&quot; key pre=
ss.<br /><br />My objective is to read all the output of the command withou=
t blocking on &quot;more&quot; ( means &quot;return&quot; key press). How c=
an I achieve this ? Please help.<br /><br />Thanks<br />Subrata<br>
--=_1ef143308dfab0b3c5ca9ce32b28e3ac--

--=_6dac532284e8082013ed04b0df85f995
Content-Transfer-Encoding: base64
Content-Type: application/octet-stream;
 name="SmallSimpleSSH_2.c"; 
Content-Disposition: attachment;
 filename="SmallSimpleSSH_2.c"; 

LyoKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KIE5hbWUgICAgICAgIDogU21hbGxTaW1wbGVTU0guYwog
QXV0aG9yICAgICAgOiBJdmFuIFRyZXR5YWtvdgogVmVyc2lvbiAgICAgOiAwLjEKIENvcHlyaWdo
dCAgIDogR1BMdjMKIERlc2NyaXB0aW9uIDogTGlic3NoMiBzc2ggY2xpZW50IGV4YW1wbGUKID09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KICovCgojaW5jbHVkZSA8c3RkaW8uaD4KI2luY2x1ZGUgPHN0ZGxp
Yi5oPgojaW5jbHVkZSA8dW5pc3RkLmg+CiNpbmNsdWRlIDxsaWJzc2gyLmg+CiNpbmNsdWRlIDxz
eXMvdHlwZXMuaD4KI2luY2x1ZGUgPHN5cy9zb2NrZXQuaD4KI2luY2x1ZGUgPGFycGEvaW5ldC5o
PgojaW5jbHVkZSA8cG9sbC5oPgojaW5jbHVkZSA8ZmNudGwuaD4KCiNkZWZpbmUgRVhJVF9DT01N
QU5ECSJleGl0XG4iCgovKiBNYWluIGZ1bmN0aW9uICovCmludCBtYWluKGludCBhcmdjLCBjaGFy
ICphcmd2W10pIHsKCgljb25zdCBjaGFyICp1c2VybmFtZTsKCWNvbnN0IGNoYXIgKnBhc3N3b3Jk
OwoJY29uc3QgY2hhciAqaG9zdGFkZHI7CglpbnQgcmM7CglpbnQgc29jazsKCWludCB3cml0dGVu
OwoJc3RydWN0IHNvY2thZGRyX2luIHNpbjsKCUxJQlNTSDJfU0VTU0lPTiAqc2Vzc2lvbjsKCUxJ
QlNTSDJfQ0hBTk5FTCAqY2hhbm5lbDsKCWNoYXIgY29tbWFuZGJ1ZltCVUZTSVpdOwoJY2hhciBp
bnB1dGJ1ZltCVUZTSVpdOwoJY29uc3QgY2hhciBudW1mZHMgPSAyOwoJc3RydWN0IHBvbGxmZCBw
ZmRzW251bWZkc107CgoJLyogR2V0IElQIGFuZCBhdXRob3JpemF0aW9uIGRhdGEgKi8KCWlmIChh
cmd2WzFdICE9IE5VTEwgJiYgYXJndlsyXSAhPSBOVUxMICYmIGFyZ3ZbM10gIT0gTlVMTCkgewoJ
CWhvc3RhZGRyID0gYXJndlsxXTsKCQl1c2VybmFtZSA9IGFyZ3ZbMl07CgkJcGFzc3dvcmQgPSBh
cmd2WzNdOwoJfSBlbHNlIHsKCQlmcHJpbnRmKHN0ZGVyciwgIlVzYWdlOiAlcyA8dGFyZ2V0IGlw
PiA8dXNlcm5hbWU+IDxwYXNzd29yZD5cbiIsCgkJCQlhcmd2WzBdKTsKCQlyZXR1cm4gKEVYSVRf
RkFJTFVSRSk7Cgl9CgoJLyogTGlic3MyIGluaXQgYmxvY2sgKi8KCXJjID0gbGlic3NoMl9pbml0
KDApOwoJaWYgKHJjKSB7CgkJZnByaW50ZihzdGRlcnIsICJFcnJvcjogbGlic3NoX2luaXQoKVxu
Iik7CgkJcmV0dXJuIChFWElUX0ZBSUxVUkUpOwoJfQoKCS8qIENyZWF0aW5nIHNvY2tldCAqLwoJ
c29jayA9IHNvY2tldChBRl9JTkVULCBTT0NLX1NUUkVBTSwgMCk7CglpZiAoc29jayA9PSAtMSkg
ewoJCXBlcnJvcigic29ja2V0Iik7CgkJcmV0dXJuIChFWElUX0ZBSUxVUkUpOwoJfQoKCS8qIENv
bm5lY3QgdGhpcyBzb2NrZXQgdG8gcmVtb3RlIHNpZGUgKi8KCXNpbi5zaW5fZmFtaWx5ID0gQUZf
SU5FVDsKCXNpbi5zaW5fcG9ydCA9IGh0b25zKDIyKTsKCXNpbi5zaW5fYWRkci5zX2FkZHIgPSBp
bmV0X2FkZHIoaG9zdGFkZHIpOwoJaWYgKGNvbm5lY3Qoc29jaywgKHN0cnVjdCBzb2NrYWRkciop
KCZzaW4pLAoJCQkJc2l6ZW9mKHN0cnVjdCBzb2NrYWRkcl9pbikpICE9IDApIHsKCQlmcHJpbnRm
KHN0ZGVyciwgIkZhaWxlZCB0byBjb25uZWN0XG4iKTsKCQlyZXR1cm4gKEVYSVRfRkFJTFVSRSk7
Cgl9CgoJLyogU2V0IHNvY2tldCBub24tYmxvY2tpbmcgKi8KCXJjID0gZmNudGwoc29jaywgRl9T
RVRGTCwgT19OT05CTE9DSyk7CglpZiAocmMgPT0gLTEpIHsKCQlwZXJyb3IoImZjbnRsIik7CgkJ
cmV0dXJuIChFWElUX0ZBSUxVUkUpOwoJfQoKCS8qIFNldCBzdGRpbiBub24tYmxvY2tpbmcgKi8K
CXJjID0gZmNudGwoU1RESU5fRklMRU5PLCBGX1NFVEZMLCBPX05PTkJMT0NLKTsKCWlmIChyYyA9
PSAtMSkgewoJCXBlcnJvcigiZmNudGwiKTsKCQlyZXR1cm4gKEVYSVRfRkFJTFVSRSk7Cgl9CgoJ
LyogQ3JlYXRlIGEgc2Vzc2lvbiBpbnN0YW5jZSBhbmQgc3RhcnQgaXQgdXAuIFRoaXMgd2lsbCB0
cmFkZSB3ZWxjb21lCgkgKiBiYW5uZXJzLCBleGNoYW5nZSBrZXlzLCBhbmQgc2V0dXAgY3J5cHRv
LCBjb21wcmVzc2lvbiwgYW5kIE1BQyBsYXllcnMgKi8KCXNlc3Npb24gPSBsaWJzc2gyX3Nlc3Np
b25faW5pdCgpOwoJaWYgKCFzZXNzaW9uKSB7CgkJZnByaW50ZihzdGRlcnIsICJTU0ggaW5pdCBm
YWlsZWRcbiIpOwoJCXJldHVybiAoRVhJVF9GQUlMVVJFKTsKCX0KCgkvKiBIYW5kc2hha2UgZm9y
IHNlc3Npb24gKi8KCXJjID0gbGlic3NoMl9zZXNzaW9uX2hhbmRzaGFrZShzZXNzaW9uLCBzb2Nr
KTsKCWlmIChyYykgewoJCWZwcmludGYoc3RkZXJyLCAiU1NIIGhhbmRzaGFrZSBmYWlsZWRcbiIp
OwoJCXJldHVybiAoRVhJVF9GQUlMVVJFKTsKCX0KCgkvKiBMZXRzIGF1dGhlbnRpY2F0ZSAqLwoJ
cmMgPSBsaWJzc2gyX3VzZXJhdXRoX3Bhc3N3b3JkKHNlc3Npb24sIHVzZXJuYW1lLCBwYXNzd29y
ZCk7CglpZiAocmMpIHsKCQlwcmludGYoIkF1dGhlbnRpY2F0aW9uIGJ5IHBhc3N3b3JkIGZhaWxl
ZFxuIik7CgkJcmV0dXJuIChFWElUX0ZBSUxVUkUpOwoJfSBlbHNlIHsKCQlwcmludGYoIkF1dGhl
bnRpY2F0aW9uIGJ5IHBhc3N3b3JkIHN1Y2NlZWRlZFxuIik7Cgl9CgoJLyogUmVxdWVzdCBhIHNo
ZWxsICovCgljaGFubmVsID0gbGlic3NoMl9jaGFubmVsX29wZW5fc2Vzc2lvbihzZXNzaW9uKTsK
CWlmICghY2hhbm5lbCkgewoJCWZwcmludGYoc3RkZXJyLCAiVW5hYmxlIHRvIG9wZW4gYSBzZXNz
aW9uXG4iKTsKCQlyZXR1cm4gKEVYSVRfRkFJTFVSRSk7Cgl9CgoJLyogUmVxdWVzdCBhIHRlcm1p
bmFsIHdpdGggJ3Z0MTAwJyB0ZXJtaW5hbCBlbXVsYXRpb24gKi8KCXJjID0gbGlic3NoMl9jaGFu
bmVsX3JlcXVlc3RfcHR5KGNoYW5uZWwsICJ2dDEwMCIpOwoJaWYgKHJjKSB7CgkJZnByaW50Zihz
dGRlcnIsICJGYWlsZWQgcmVxdWVzdGluZyBwdHlcbiIpOwoJCXJldHVybiAoRVhJVF9GQUlMVVJF
KTsKCX0KCgkvKiBPcGVuIGEgU0hFTEwgb24gdGhhdCBwdHkgKi8KCXJjID0gbGlic3NoMl9jaGFu
bmVsX3NoZWxsKGNoYW5uZWwpOwoJaWYgKHJjKSB7CgkJZnByaW50ZihzdGRlcnIsICJVbmFibGUg
dG8gcmVxdWVzdCBzaGVsbCBvbiBhbGxvY2F0ZWQgcHR5XG4iKTsKCQlyZXR1cm4gKEVYSVRfRkFJ
TFVSRSk7Cgl9CgoJLyogU2V0IGxpYnNzaDIgdG8gbm9uLWJsb2NraW5nIG1vZGUgKi8KCWxpYnNz
aDJfY2hhbm5lbF9zZXRfYmxvY2tpbmcoY2hhbm5lbCwgMCk7CgoJLyogUHJlcGFyZSB0byB1c2Ug
cG9sbCAqLwoJbWVtc2V0KHBmZHMsIDAsIHNpemVvZihzdHJ1Y3QgcG9sbGZkKSAqIG51bWZkcyk7
CgoJLyogTWFpbiBsb29wIHN0YXJ0cyBoZXJlLgoJICogSW4gaXQgeW91IHdpbGwgYmUgcmVxdWVz
dGVkIHRvIGlucHV0IGEgY29tbWFuZAoJICogY29tbWFuZCB3aWxsIGJlIGV4ZWN1dGVkIGF0IHJl
bW90ZSBzaWRlCgkgKiBhbiB5b3Ugd2lsbCBnZXQgb3V0cHV0IGZyb20gaXQgKi8KCWRvIHsKCQkv
KiBEZWNsYXJlIHRoYXQgd2UgbmVldCB0byB3YWl0IHdoaWxlCgkJICogc29ja2V0IG9yIHN0ZGlu
IG5vdCByZWFkeSBmb3IgcmVhZGluZyAqLwoJCXBmZHNbMF0uZmQgPSBzb2NrOwoJCXBmZHNbMF0u
ZXZlbnRzID0gUE9MTElOOwoJCXBmZHNbMF0ucmV2ZW50cyA9IDA7CgkJcGZkc1sxXS5mZCA9IFNU
RElOX0ZJTEVOTzsKCQlwZmRzWzFdLmV2ZW50cyA9IFBPTExJTjsKCQlwZmRzWzFdLnJldmVudHMg
PSAwOwoKCQkvKiBQb2xsaW5nIG9uIHNvY2tldCBhbmQgc3RkaW4gd2hpbGUgd2UgYXJlCgkJICog
bm90IHJlYWR5IHRvIHJlYWQgZnJvbSBpdCAqLwoJCXJjID0gcG9sbChwZmRzLCBudW1mZHMsIC0x
KTsKCQlpZiAoLTEgPT0gcmMpIHsKCQkJcGVycm9yKCJwb2xsIik7CgkJCWJyZWFrOwoJCX0KCgkJ
aWYgKHBmZHNbMF0ucmV2ZW50cyAmIFBPTExJTikgewoJCQkvKiBSZWFkIG91dHB1dCBmcm9tIHJl
bW90ZSBzaWRlICovCgkJCWRvIHsKCQkJCXJjID0gbGlic3NoMl9jaGFubmVsX3JlYWQoY2hhbm5l
bCwgaW5wdXRidWYsIEJVRlNJWik7CgkJCQlwcmludGYoIiVzIiwgaW5wdXRidWYpOwoJCQkJZmZs
dXNoKHN0ZG91dCk7CgkJCQltZW1zZXQoaW5wdXRidWYsIDAsIEJVRlNJWik7CgkJCX0gd2hpbGUg
KExJQlNTSDJfRVJST1JfRUFHQUlOICE9IHJjICYmIHJjID4gMCk7CgkJfQoJCWlmIChyYyA8IDAg
JiYgTElCU1NIMl9FUlJPUl9FQUdBSU4gIT0gcmMpIHsKCQkJZnByaW50ZihzdGRlcnIsICJsaWJz
c2gyX2NoYW5uZWxfcmVhZCBlcnJvciBjb2RlICVkXG4iLCByYyk7CgkJCXJldHVybiAoRVhJVF9G
QUlMVVJFKTsKCQl9CgoJCWlmIChwZmRzWzFdLnJldmVudHMgJiBQT0xMSU4pIHsKCQkJLyogUmVx
dWVzdCBmb3IgY29tbWFuZCBpbnB1dCAqLwoJCQlmZ2V0cyhjb21tYW5kYnVmLCBCVUZTSVogLSAy
LCBzdGRpbik7CgkJCWlmIChzdHJjbXAoY29tbWFuZGJ1ZiwgRVhJVF9DT01NQU5EKSA9PSAwKQoJ
CQkJYnJlYWs7CgoJCQkvKiBBZGp1c3QgY29tbWFuZCBmb3JtYXQgKi8KCQkJY29tbWFuZGJ1Zltz
dHJsZW4oY29tbWFuZGJ1ZikgLSAxXSA9ICdccic7CgkJCWNvbW1hbmRidWZbc3RybGVuKGNvbW1h
bmRidWYpXSA9ICdcbic7CgkJCWNvbW1hbmRidWZbc3RybGVuKGNvbW1hbmRidWYpICsgMV0gPSAn
XDAnOwoKCQkJLyogV3JpdGUgY29tbWFuZCB0byBzdGRpbiBvZiByZW1vdGUgc2hlbGwgKi8KCQkJ
d3JpdHRlbiA9IDA7CgkJCWRvIHsKCQkJCXJjID0gbGlic3NoMl9jaGFubmVsX3dyaXRlKGNoYW5u
ZWwsIGNvbW1hbmRidWYsIHN0cmxlbihjb21tYW5kYnVmKSk7CgkJCQl3cml0dGVuICs9IHJjOwoJ
CQl9IHdoaWxlIChMSUJTU0gyX0VSUk9SX0VBR0FJTiAhPSByYwoJCQkJCSYmIHJjID4gMAoJCQkJ
CSYmIHdyaXR0ZW4gIT0gc3RybGVuKGNvbW1hbmRidWYpKTsKCQkJbWVtc2V0KGNvbW1hbmRidWYs
IDAsIEJVRlNJWik7CgkJfQoJCWlmIChyYyA8IDAgJiYgTElCU1NIMl9FUlJPUl9FQUdBSU4gIT0g
cmMpIHsKCQkJZnByaW50ZihzdGRlcnIsICJsaWJzc2gyX2NoYW5uZWxfd3JpdGUgZXJyb3IgY29k
ZSAlZFxuIiwgcmMpOwoJCQlyZXR1cm4gKEVYSVRfRkFJTFVSRSk7CgkJfQoKCX0gd2hpbGUgKDEp
OwoJLyogTWFpbiBsb29wIGVuZHMgaGVyZSAqLwoKCS8qIERlLWluaXQgYW5kIHByZS1leGl0IGFj
dGlvbnMgKi8KCWlmIChjaGFubmVsKSB7CgkJbGlic3NoMl9jaGFubmVsX2ZyZWUoY2hhbm5lbCk7
CgkJY2hhbm5lbCA9IE5VTEw7Cgl9CgoJLyogRmluaXNoIGFjdGlvbnMgYmVsb3cgKi8KCXJjID0g
bGlic3NoMl9zZXNzaW9uX2Rpc2Nvbm5lY3Qoc2Vzc2lvbiwgIk5vcm1hbCBTaHV0ZG93biIpOwoJ
aWYgKHJjKSB7CgkJZnByaW50ZihzdGRlcnIsICJTZXNzaW9uIGRpc2Nvbm5lY3QgZXJyb3JcbiIp
OwoJCXJldHVybiAoRVhJVF9GQUlMVVJFKTsKCX0gZWxzZQoJCXByaW50ZigiU2Vzc2lvbiBmaW5p
c2hlZCBzdWNjZXNzZnVsXG4iKTsKCglsaWJzc2gyX3Nlc3Npb25fZnJlZShzZXNzaW9uKTsKCglj
bG9zZShzb2NrKTsKCglsaWJzc2gyX2V4aXQoKTsKCglyZXR1cm4gKEVYSVRfU1VDQ0VTUyk7Cn0K
--=_6dac532284e8082013ed04b0df85f995
Content-Type: text/plain; charset="utf-8"
MIME-Version: 1.0
Content-Transfer-Encoding: base64
Content-Disposition: inline

X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KbGlic3NoMi1k
ZXZlbCBodHRwczovL2Nvb2wuaGF4eC5zZS9jZ2ktYmluL21haWxtYW4vbGlzdGluZm8vbGlic3No
Mi1kZXZlbAo=

--=_6dac532284e8082013ed04b0df85f995--

From libssh2-devel-bounces@cool.haxx.se  Sun Oct 28 01:22:31 2018
Return-Path: <libssh2-devel-bounces@cool.haxx.se>
Received: from www.haxx.se (mail [127.0.0.1])
	by giant.haxx.se (8.15.2/8.15.2/Debian-4) with ESMTP id w9RNLwYs023626;
	Sun, 28 Oct 2018 01:22:22 +0200
Received: from foo.stuge.se (foo.stuge.se [212.116.89.98])
 by giant.haxx.se (8.15.2/8.15.2/Debian-4) with ESMTPS id w9RNLvX2023609
 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT)
 for <libssh2-devel@cool.haxx.se>; Sun, 28 Oct 2018 01:21:57 +0200
Received: (qmail 9909 invoked by uid 1000); 27 Oct 2018 23:21:52 -0000
Message-ID: <20181027232152.9908.qmail@stuge.se>
Date: Sat, 27 Oct 2018 23:21:52 +0000
From: Peter Stuge <peter@stuge.se>
To: libssh2-devel@cool.haxx.se
Subject: Re: SSH client is not reading full data if executed command
 generates big output
References: <20181027200016.21010.qmail@f5mail-224-101.rediffmail.com>
MIME-Version: 1.0
Content-Disposition: inline
In-Reply-To: <20181027200016.21010.qmail@f5mail-224-101.rediffmail.com>
X-BeenThere: libssh2-devel@cool.haxx.se
X-Mailman-Version: 2.1.22
Precedence: list
List-Id: libssh2 development <libssh2-devel.cool.haxx.se>
List-Unsubscribe: <https://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: <https://cool.haxx.se/cgi-bin/mailman/listinfo/libssh2-devel>, 
 <mailto:libssh2-devel-request@cool.haxx.se?subject=subscribe>
Reply-To: libssh2 development <libssh2-devel@cool.haxx.se>
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 w9RNLwYs023626

Your attached example requests a VT100 pseudo-terminal (pty) from the
server, but does not include any terminal emulation whatsoever. That
will never work reliably in the general case.

PuTTY includes significant terminal emulation code. Linux/Unix systems
always have a terminal emulator. Windows never does.


Subrata Dasgupta wrote:
> But when output of the remotely executed program is very big then
> the client is not able to read all the data. Seems server is sending
> the partial data and then the command prompt.

In other words: Without terminal emulation, communication is unreliable.

> But if I connect the same server using PUTTY and execute the same
> command then PUTTY terminal is showing &quot;more&quot; at the end
> of terminal and wait for my &quot;return&quot; key press.

In other words: With terminal emulation, communication is reliable.


> My objective is to read all the output of the command without blocking
> on &quot;more&quot; ( means &quot;return&quot; key press).
> How can I achieve this ?

It depends on the capabilities of your server system, but quite
likely you will need to implement some if not full terminal emulation
and then you may have to make your program recognize the "more" prompt,
and then simulate a human pressing "return", while also filtering
that out of the data stream that you want to scrape.

If you're lucky then the server also supports a non-interactive terminal
type, where you can scrape all output without interaction. That's all
completely out of scope of the SSH protocol and thus libssh2, it is
exclusively a property of your particular server. You can try using
"raw", "ascii" and maybe some others instead of "vt100" in the example -
whatever your research on that topic finds may be worth a try.

I will recommend to search for an API offered by the server product
to do what you want instead of trying to automate around the
interactive interface.


Good luck.

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

From libssh2-devel-bounces@cool.haxx.se  Sun Oct 28 20:16:48 2018
Return-Path: <libssh2-devel-bounces@cool.haxx.se>
Received: from www.haxx.se (mail [127.0.0.1])
	by giant.haxx.se (8.15.2/8.15.2/Debian-4) with ESMTP id w9SJGEIS025178;
	Sun, 28 Oct 2018 20:16:38 +0100
Received: from rediffmail.com (f5mail-224-131.rediffmail.com [114.31.224.131])
 by giant.haxx.se (8.15.2/8.15.2/Debian-4) with ESMTPS id
 w9SJGB0E025116
 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT)
 for <libssh2-devel@cool.haxx.se>; Sun, 28 Oct 2018 20:16:12 +0100
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=rediffmail.com;
 s=mail; t=1540754166;
 bh=EiV3bR0ZBGuF25y6J3pWIJYXuKNZuGqo1aYen1T4p/8=;
 h=MIME-Version:From:Date:Message-ID:Subject:To:Content-Type;
 b=BSW5aSODtBnh7HO9N3O51D946SEkJY236TsD6jXN/MPXBnztYBVunREU/FryB0aoy
 kmVPUEajNzk1wjl2jNBoNfWXU2WqI4rOeVSHLG9yXoIGREyXQMNIj4eiOkSsJdTWTG
 dBWK4CRyvzYchtr4yv+umu7BxUbcJpsZLOcnDeis=
Received: (qmail 25156 invoked by uid 510); 28 Oct 2018 19:16:06 -0000
x-m-msg: asd54ad564ad7aa6sd5as6d5; a6da7d6asas6dasd77; 5dad65ad5sd;
X-OUT-VDRT-SpamState: 0\LEGIT
X-OUT-VDRT-SpamScore: 0
X-OUT-VDRT-SpamCause: gggruggvucftvghtrhhoucdtuddrgedtkedrheeigdduvdehucetufdoteggodetrfdotffvucfrrhhofhhilhgvmecutffgfffkhffhpdfqfgfvnecuuegrihhlohhuthemuceftddtnecunecujfgurhepffggvffkjghsuffhtgesrgdtreertddtjeenucfhrhhomhepfdfuuhgsrhgrthgrucffrghsghhuphhtrgdfuceoshhusghrrghtrggpuhhshhgrsehrvgguihhffhhmrghilhdrtghomheqnecuffhomhgrihhnpehhrgiggidrshgvnecukfhppeduledvrddujeeirddurdekudenucfrrghrrghmpehmohguvgepshhmthhpohhuthenucevlhhushhtvghrufhiiigvpedt
X-Remote-IP: 192.176.1.81
X-REDF-OSEN: subrata_usha@rediffmail.com
Date: 28 Oct 2018 19:16:06 -0000
MIME-Version: 1.0
To: "libssh2-devel@cool.haxx.se" <libssh2-devel@cool.haxx.se>
Received: from unknown 192.176.1.81 by rediffmail.com via HTTP;
 28 Oct 2018 19:16:06 -0000
X-Senderscore: D=0&S=0
Message-ID: <1540682836.S.5809.9840.f5-224-118.1540754166.25104@webmail.rediffmail.com>
In-Reply-To: <20181027232152.9908.qmail@stuge.se>
Subject: =?utf-8?B?UmU6IFNTSCBjbGllbnQgaXMgbm90IHJlYWRpbmcgZnVsbCBkYXRhIGlmIGV4ZWN1dGVkIGNvbW1hbmQgZ2VuZXJhdGVzIGJpZyBvdXRwdXQ=?=
From: "Subrata Dasgupta" <subrata_usha@rediffmail.com>
X-BeenThere: libssh2-devel@cool.haxx.se
X-Mailman-Version: 2.1.22
Precedence: list
List-Id: libssh2 development <libssh2-devel.cool.haxx.se>
List-Unsubscribe: <https://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: <https://cool.haxx.se/cgi-bin/mailman/listinfo/libssh2-devel>, 
 <mailto:libssh2-devel-request@cool.haxx.se?subject=subscribe>
Reply-To: libssh2 development <libssh2-devel@cool.haxx.se>
Content-Type: multipart/mixed; boundary="===============0383626707=="
Errors-To: libssh2-devel-bounces@cool.haxx.se
Sender: "libssh2-devel" <libssh2-devel-bounces@cool.haxx.se>

--===============0383626707==
Content-Type: multipart/alternative;
	boundary="=_720b21600fdae98ae5cd7e34240bf1f1"

--=_720b21600fdae98ae5cd7e34240bf1f1
Content-Transfer-Encoding: 7bit
Content-Type: text/plain; charset="UTF-8"

Hi Peter ,Many thanks for your explanation.My intention is to run multiple commands sequentially over ssh and get the output.It seems &quot;libssh2_channel_exec&quot; function can only execute a single command over a session or channel. So this option will not serve my purpose because commands may have some sub-commands. So I need to retain the session or channel to execute those sub-commands. Please let me know if my understanding is wrong and kindly let me know how to execute multiple commands and sub-commands over libssh2_channel_exec.It seems only &quot;libssh2_channel_shell&quot; function can serve my purpose because I can execute multiple commands on a established channel / session. Please let me know if I am wrong.It also seems from the different ssh tutorials from net that non-interactive session may serve my purpose because there is no pty associated with the channel. So I have tried to comment out the &quot;libssh2_channel_request_pty&quot; call , but unfortunately result is the same(server do not send all data). What could be the reason of such problem and how to fix it if possible ?Lastly is there anyway to get all output data of commands or sub-commands without using terminal emulation ?? Please advice if possible.Thanks a lot again,SubrataFrom: Peter Stuge &lt;peter@stuge.se&gt;Sent: Sun, 28 Oct 2018 04:57:16To: libssh2-devel@cool.haxx.seSubject: Re: SSH client is not reading full data if executed command generates big outputYour attached example requests a VT100 pseudo-terminal (pty) from theserver, but does not include any terminal emulation whatsoever. Thatwill never work reliably in the general case.PuTTY includes significant terminal emulation code. Linux/Unix systemsalways have a terminal emulator. Windows never does.Subrata Dasgupta wrote:&gt; But when output of the remotely executed program is very big then&gt; the client is not able to read all the data. Seems server is sending&gt; the partial data and then the command prompt.In other words: Without terminal emulation, communication is unreliable.&gt; But if I connect the same server using PUTTY and execute the same&gt; command then PUTTY terminal is showing &amp;quot;more&amp;quot; at the end&gt; of terminal and wait for my &amp;quot;return&amp;quot; key press.In other words: With terminal emulation, communication is reliable.&gt; My objective is to read all the output of the command without blocking&gt; on &amp;quot;more&amp;quot; ( means &amp;quot;return&amp;quot; key press).&gt; How can I achieve this ?It depends on the capabilities of your server system, but quitelikely you will need to implement some if not full terminal emulationand then you may have to make your program recognize the &quot;more&quot; prompt,and then simulate a human pressing &quot;return&quot;, while also filteringthat out of the data stream that you want to scrape.If you&#39;re lucky then the server also supports a non-interactive terminaltype, where you can scrape all output without interaction. That&#39;s allcompletely out of scope of the SSH protocol and thus libssh2, it isexclusively a property of your particular server. You can try using&quot;raw&quot;, &quot;ascii&quot; and maybe some others instead of &quot;vt100&quot; in the example -whatever your research on that topic finds may be worth a try.I will recommend to search for an API offered by the server productto do what you want instead of trying to automate around theinteractive interface.Good luck.//Peter_______________________________________________libssh2-devel https://cool.haxx.se/cgi-bin/mailman/listinfo/libssh2-devel
--=_720b21600fdae98ae5cd7e34240bf1f1
Content-Transfer-Encoding: quoted-printable
Content-Type: text/html; charset="UTF-8"

Hi Peter ,<br />Many thanks for your explanation.<br /><br />My intention i=
s to run multiple commands sequentially over ssh and get the output.<br /><=
br />It seems &quot;libssh2_channel_exec&quot; function can only execute a =
single command over a session or channel. So this option will not serve my =
purpose because commands may have some sub-commands. So I need to retain th=
e session or channel to execute those sub-commands. Please let me know if m=
y understanding is wrong and kindly let me know how to execute multiple com=
mands and sub-commands over libssh2_channel_exec.<br /><br />It seems only =
&quot;libssh2_channel_shell&quot; function can serve my purpose because I c=
an execute multiple commands on a established channel / session. Please let=
 me know if I am wrong.<br /><br />It also seems from the different ssh tut=
orials from net that non-interactive session may serve my purpose because t=
here is no pty associated with the channel. So I have tried to comment out =
the &quot;libssh2_channel_request_pty&quot; call , but unfortunately result=
 is the same(server do not send all data). What could be the reason of such=
 problem and how to fix it if possible ?<br /><br />Lastly is there anyway =
to get all output data of commands or sub-commands without using terminal e=
mulation ?? Please advice if possible.<br /><br />Thanks a lot again,<br />=
Subrata<br /><br /><br />From: Peter Stuge &lt;peter@stuge.se&gt;<br />Sent=
: Sun, 28 Oct 2018 04:57:16<br />To: libssh2-devel@cool.haxx.se<br />Subjec=
t: Re: SSH client is not reading full data if executed command generates bi=
g output<br /><br />Your attached example requests a VT100 pseudo-terminal =
(pty) from the<br />server, but does not include any terminal emulation wha=
tsoever. That<br />will never work reliably in the general case.<br /><br /=
>PuTTY includes significant terminal emulation code. Linux/Unix systems<br =
/>always have a terminal emulator. Windows never does.<br /><br /><br />Sub=
rata Dasgupta wrote:<br />&gt; But when output of the remotely executed pro=
gram is very big then<br />&gt; the client is not able to read all the data=
. Seems server is sending<br />&gt; the partial data and then the command p=
rompt.<br /><br />In other words: Without terminal emulation, communication=
 is unreliable.<br /><br />&gt; But if I connect the same server using PUTT=
Y and execute the same<br />&gt; command then PUTTY terminal is showing &am=
p;quot;more&amp;quot; at the end<br />&gt; of terminal and wait for my &amp=
;quot;return&amp;quot; key press.<br /><br />In other words: With terminal =
emulation, communication is reliable.<br /><br /><br />&gt; My objective is=
 to read all the output of the command without blocking<br />&gt; on &amp;q=
uot;more&amp;quot; ( means &amp;quot;return&amp;quot; key press).<br />&gt;=
 How can I achieve this ?<br /><br />It depends on the capabilities of your=
 server system, but quite<br />likely you will need to implement some if no=
t full terminal emulation<br />and then you may have to make your program r=
ecognize the &quot;more&quot; prompt,<br />and then simulate a human pressi=
ng &quot;return&quot;, while also filtering<br />that out of the data strea=
m that you want to scrape.<br /><br />If you&#39;re lucky then the server a=
lso supports a non-interactive terminal<br />type, where you can scrape all=
 output without interaction. That&#39;s all<br />completely out of scope of=
 the SSH protocol and thus libssh2, it is<br />exclusively a property of yo=
ur particular server. You can try using<br />&quot;raw&quot;, &quot;ascii&q=
uot; and maybe some others instead of &quot;vt100&quot; in the example -<br=
 />whatever your research on that topic finds may be worth a try.<br /><br =
/>I will recommend to search for an API offered by the server product<br />=
to do what you want instead of trying to automate around the<br />interacti=
ve interface.<br /><br /><br />Good luck.<br /><br />//Peter<br />_________=
______________________________________<br />libssh2-devel <a href=3D"https:=
//cool.haxx.se/cgi-bin/mailman/listinfo/libssh2-devel" target=3D"_blank">ht=
tps://cool.haxx.se/cgi-bin/mailman/listinfo/libssh2-devel</a><br>
--=_720b21600fdae98ae5cd7e34240bf1f1--

--===============0383626707==
Content-Type: text/plain; charset="utf-8"
MIME-Version: 1.0
Content-Transfer-Encoding: base64
Content-Disposition: inline

X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KbGlic3NoMi1k
ZXZlbCBodHRwczovL2Nvb2wuaGF4eC5zZS9jZ2ktYmluL21haWxtYW4vbGlzdGluZm8vbGlic3No
Mi1kZXZlbAo=

--===============0383626707==--

From libssh2-devel-bounces@cool.haxx.se  Sun Oct 28 20:17:38 2018
Return-Path: <libssh2-devel-bounces@cool.haxx.se>
Received: from www.haxx.se (mail [127.0.0.1])
	by giant.haxx.se (8.15.2/8.15.2/Debian-4) with ESMTP id w9SJHZmI026946;
	Sun, 28 Oct 2018 20:17:37 +0100
Received: from rediffmail.com (f5mail-224-153.rediffmail.com [114.31.224.153])
 by giant.haxx.se (8.15.2/8.15.2/Debian-4) with ESMTPS id
 w9SJHVnS026847
 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT)
 for <libssh2-devel@cool.haxx.se>; Sun, 28 Oct 2018 20:17:32 +0100
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=rediffmail.com;
 s=mail; t=1540754247;
 bh=nXkiAw0GNodrGeXLON1v/qctjWlCd7utbSylnqFZ3a4=;
 h=MIME-Version:From:Date:Message-ID:Subject:To:Content-Type;
 b=ETLTt/cVVNjh/ORGfr3x//CajmMp2VjkWwdWvD3r8hCfRgslJFcczAJdJnETB8Q//
 XwAV7IYxJBYcHwcNXWhSRUmreV9wewGVeSRMLhEvOIs3KUKDr59Q27gC2LU2p928q4
 BypJiR1miwO8Ge6U2QpO7AfUIk9nQEjvwUB84/Jo=
Received: (qmail 32042 invoked by uid 510); 28 Oct 2018 19:17:27 -0000
x-m-msg: asd54ad564ad7aa6sd5as6d5; a6da7d6asas6dasd77; 5dad65ad5sd;
X-OUT-VDRT-SpamState: ERR
X-OUT-VDRT-SpamScore: 
X-OUT-VDRT-SpamCause: 
X-Remote-IP: 192.176.1.81
X-REDF-OSEN: subrata_usha@rediffmail.com
Date: 28 Oct 2018 19:17:27 -0000
MIME-Version: 1.0
To: "libssh2-devel@cool.haxx.se" <libssh2-devel@cool.haxx.se>
Received: from unknown 192.176.1.81 by rediffmail.com via HTTP;
 28 Oct 2018 19:17:27 -0000
X-Senderscore: D=0&S=0
Message-ID: <1540682836.S.5809.9840.f5-224-118.1540754247.31946@webmail.rediffmail.com>
In-Reply-To: <20181027232152.9908.qmail@stuge.se>
Subject: =?utf-8?B?UmU6IFNTSCBjbGllbnQgaXMgbm90IHJlYWRpbmcgZnVsbCBkYXRhIGlmIGV4ZWN1dGVkIGNvbW1hbmQgZ2VuZXJhdGVzIGJpZyBvdXRwdXQ=?=
From: "Subrata Dasgupta" <subrata_usha@rediffmail.com>
X-BeenThere: libssh2-devel@cool.haxx.se
X-Mailman-Version: 2.1.22
Precedence: list
List-Id: libssh2 development <libssh2-devel.cool.haxx.se>
List-Unsubscribe: <https://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: <https://cool.haxx.se/cgi-bin/mailman/listinfo/libssh2-devel>, 
 <mailto:libssh2-devel-request@cool.haxx.se?subject=subscribe>
Reply-To: libssh2 development <libssh2-devel@cool.haxx.se>
Content-Type: multipart/mixed; boundary="===============1309694657=="
Errors-To: libssh2-devel-bounces@cool.haxx.se
Sender: "libssh2-devel" <libssh2-devel-bounces@cool.haxx.se>

--===============1309694657==
Content-Type: multipart/alternative;
	boundary="=_712735025dad0393ab95183d321a27a1"

--=_712735025dad0393ab95183d321a27a1
Content-Transfer-Encoding: 7bit
Content-Type: text/plain; charset="UTF-8"

Hi Peter ,Many thanks for your explanation.My intention is to run multiple commands sequentially over ssh and get the output.It seems &quot;libssh2_channel_exec&quot; function can only execute a single command over a session or channel. So this option will not serve my purpose because commands may have some sub-commands. So I need to retain the session or channel to execute those sub-commands. Please let me know if my understanding is wrong and kindly let me know how to execute multiple commands and sub-commands over libssh2_channel_exec.It seems only &quot;libssh2_channel_shell&quot; function can serve my purpose because I can execute multiple commands on a established channel / session. Please let me know if I am wrong.It also seems from the different ssh tutorials from net that non-interactive session may serve my purpose because there is no pty associated with the channel. So I have tried to comment out the &quot;libssh2_channel_request_pty&quot; call , but unfortunately result is the same(server do not send all data). What could be the reason of such problem and how to fix it if possible ?Lastly is there anyway to get all output data of commands or sub-commands without using terminal emulation ?? Please advice if possible.Thanks a lot again,SubrataFrom: Peter Stuge &lt;peter@stuge.se&gt;Sent: Sun, 28 Oct 2018 04:57:16To: libssh2-devel@cool.haxx.seSubject: Re: SSH client is not reading full data if executed command generates big outputYour attached example requests a VT100 pseudo-terminal (pty) from theserver, but does not include any terminal emulation whatsoever. Thatwill never work reliably in the general case.PuTTY includes significant terminal emulation code. Linux/Unix systemsalways have a terminal emulator. Windows never does.Subrata Dasgupta wrote:&gt; But when output of the remotely executed program is very big then&gt; the client is not able to read all the data. Seems server is sending&gt; the partial data and then the command prompt.In other words: Without terminal emulation, communication is unreliable.&gt; But if I connect the same server using PUTTY and execute the same&gt; command then PUTTY terminal is showing &amp;quot;more&amp;quot; at the end&gt; of terminal and wait for my &amp;quot;return&amp;quot; key press.In other words: With terminal emulation, communication is reliable.&gt; My objective is to read all the output of the command without blocking&gt; on &amp;quot;more&amp;quot; ( means &amp;quot;return&amp;quot; key press).&gt; How can I achieve this ?It depends on the capabilities of your server system, but quitelikely you will need to implement some if not full terminal emulationand then you may have to make your program recognize the &quot;more&quot; prompt,and then simulate a human pressing &quot;return&quot;, while also filteringthat out of the data stream that you want to scrape.If you&#39;re lucky then the server also supports a non-interactive terminaltype, where you can scrape all output without interaction. That&#39;s allcompletely out of scope of the SSH protocol and thus libssh2, it isexclusively a property of your particular server. You can try using&quot;raw&quot;, &quot;ascii&quot; and maybe some others instead of &quot;vt100&quot; in the example -whatever your research on that topic finds may be worth a try.I will recommend to search for an API offered by the server productto do what you want instead of trying to automate around theinteractive interface.Good luck.//Peter_______________________________________________libssh2-devel https://cool.haxx.se/cgi-bin/mailman/listinfo/libssh2-devel
--=_712735025dad0393ab95183d321a27a1
Content-Transfer-Encoding: quoted-printable
Content-Type: text/html; charset="UTF-8"

Hi Peter ,<br />Many thanks for your explanation.<br /><br />My intention i=
s to run multiple commands sequentially over ssh and get the output.<br /><=
br />It seems &quot;libssh2_channel_exec&quot; function can only execute a =
single command over a session or channel. So this option will not serve my =
purpose because commands may have some sub-commands. So I need to retain th=
e session or channel to execute those sub-commands. Please let me know if m=
y understanding is wrong and kindly let me know how to execute multiple com=
mands and sub-commands over libssh2_channel_exec.<br /><br />It seems only =
&quot;libssh2_channel_shell&quot; function can serve my purpose because I c=
an execute multiple commands on a established channel / session. Please let=
 me know if I am wrong.<br /><br />It also seems from the different ssh tut=
orials from net that non-interactive session may serve my purpose because t=
here is no pty associated with the channel. So I have tried to comment out =
the &quot;libssh2_channel_request_pty&quot; call , but unfortunately result=
 is the same(server do not send all data). What could be the reason of such=
 problem and how to fix it if possible ?<br /><br />Lastly is there anyway =
to get all output data of commands or sub-commands without using terminal e=
mulation ?? Please advice if possible.<br /><br />Thanks a lot again,<br />=
Subrata<br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><b=
r /><br /><br />From: Peter Stuge &lt;peter@stuge.se&gt;<br />Sent: Sun, 28=
 Oct 2018 04:57:16<br />To: libssh2-devel@cool.haxx.se<br />Subject: Re: SS=
H client is not reading full data if executed command generates big output<=
br /><br />Your attached example requests a VT100 pseudo-terminal (pty) fro=
m the<br />server, but does not include any terminal emulation whatsoever. =
That<br />will never work reliably in the general case.<br /><br />PuTTY in=
cludes significant terminal emulation code. Linux/Unix systems<br />always =
have a terminal emulator. Windows never does.<br /><br /><br />Subrata Dasg=
upta wrote:<br />&gt; But when output of the remotely executed program is v=
ery big then<br />&gt; the client is not able to read all the data. Seems s=
erver is sending<br />&gt; the partial data and then the command prompt.<br=
 /><br />In other words: Without terminal emulation, communication is unrel=
iable.<br /><br />&gt; But if I connect the same server using PUTTY and exe=
cute the same<br />&gt; command then PUTTY terminal is showing &amp;quot;mo=
re&amp;quot; at the end<br />&gt; of terminal and wait for my &amp;quot;ret=
urn&amp;quot; key press.<br /><br />In other words: With terminal emulation=
, communication is reliable.<br /><br /><br />&gt; My objective is to read =
all the output of the command without blocking<br />&gt; on &amp;quot;more&=
amp;quot; ( means &amp;quot;return&amp;quot; key press).<br />&gt; How can =
I achieve this ?<br /><br />It depends on the capabilities of your server s=
ystem, but quite<br />likely you will need to implement some if not full te=
rminal emulation<br />and then you may have to make your program recognize =
the &quot;more&quot; prompt,<br />and then simulate a human pressing &quot;=
return&quot;, while also filtering<br />that out of the data stream that yo=
u want to scrape.<br /><br />If you&#39;re lucky then the server also suppo=
rts a non-interactive terminal<br />type, where you can scrape all output w=
ithout interaction. That&#39;s all<br />completely out of scope of the SSH =
protocol and thus libssh2, it is<br />exclusively a property of your partic=
ular server. You can try using<br />&quot;raw&quot;, &quot;ascii&quot; and =
maybe some others instead of &quot;vt100&quot; in the example -<br />whatev=
er your research on that topic finds may be worth a try.<br /><br />I will =
recommend to search for an API offered by the server product<br />to do wha=
t you want instead of trying to automate around the<br />interactive interf=
ace.<br /><br /><br />Good luck.<br /><br />//Peter<br />__________________=
_____________________________<br />libssh2-devel <a href=3D"https://cool.ha=
xx.se/cgi-bin/mailman/listinfo/libssh2-devel" target=3D"_blank">https://coo=
l.haxx.se/cgi-bin/mailman/listinfo/libssh2-devel</a><br>
--=_712735025dad0393ab95183d321a27a1--

--===============1309694657==
Content-Type: text/plain; charset="utf-8"
MIME-Version: 1.0
Content-Transfer-Encoding: base64
Content-Disposition: inline

X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KbGlic3NoMi1k
ZXZlbCBodHRwczovL2Nvb2wuaGF4eC5zZS9jZ2ktYmluL21haWxtYW4vbGlzdGluZm8vbGlic3No
Mi1kZXZlbAo=

--===============1309694657==--

From libssh2-devel-bounces@cool.haxx.se  Sun Oct 28 21:49:54 2018
Return-Path: <libssh2-devel-bounces@cool.haxx.se>
Received: from www.haxx.se (mail [127.0.0.1])
	by giant.haxx.se (8.15.2/8.15.2/Debian-4) with ESMTP id w9SKnWuI028149;
	Sun, 28 Oct 2018 21:49:47 +0100
Received: from foo.stuge.se (foo.stuge.se [212.116.89.98])
 by giant.haxx.se (8.15.2/8.15.2/Debian-4) with ESMTPS id w9SKnUC9028029
 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT)
 for <libssh2-devel@cool.haxx.se>; Sun, 28 Oct 2018 21:49:31 +0100
Received: (qmail 11332 invoked by uid 1000); 28 Oct 2018 20:49:26 -0000
Message-ID: <20181028204926.11331.qmail@stuge.se>
Date: Sun, 28 Oct 2018 20:49:26 +0000
From: Peter Stuge <peter@stuge.se>
To: libssh2-devel@cool.haxx.se
Subject: Re: SSH client is not reading full data if executed command
 generates big output
References: <20181027232152.9908.qmail@stuge.se>
 <1540682836.S.5809.9840.f5-224-118.1540754166.25104@webmail.rediffmail.com>
MIME-Version: 1.0
Content-Disposition: inline
In-Reply-To: <1540682836.S.5809.9840.f5-224-118.1540754166.25104@webmail.rediffmail.com>
X-BeenThere: libssh2-devel@cool.haxx.se
X-Mailman-Version: 2.1.22
Precedence: list
List-Id: libssh2 development <libssh2-devel.cool.haxx.se>
List-Unsubscribe: <https://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: <https://cool.haxx.se/cgi-bin/mailman/listinfo/libssh2-devel>, 
 <mailto:libssh2-devel-request@cool.haxx.se?subject=subscribe>
Reply-To: libssh2 development <libssh2-devel@cool.haxx.se>
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 w9SKnWuI028149

Subrata Dasgupta wrote:
> My intention is to run multiple commands sequentially over ssh and
> get the output.It seems &quot;libssh2_channel_exec&quot; function
> can only execute a single command over a session or channel.  So
> this option will not serve my purpose because commands may have
> some sub-commands.  So I need to retain the session or channel to
> execute those sub-commands.  Please let me know if my
> understanding is wrong and kindly let me know how to execute
> multiple commands and sub-commands over libssh2_channel_exec.

Your understanding is correct; libssh2_channel_exec() only ever
executes one command, but you can call it many times within one
session.

That allows you to take advantage of well-defined fit-for-purpose
behavior and interactions between your client and the server. This
way, your software has some chance to control the processes on the
server side.


> It seems only &quot;libssh2_channel_shell&quot; function can serve
> my purpose because I can execute multiple commands on a established
> channel / session.  Please let me know if I am wrong.

A shell channel is not needed to execute multiple commands in one
session, only to execute multiple commands in one *channel*. Study
the difference to see what is actually required in your case.


> It also seems from the different ssh tutorials from net that
> non-interactive session may serve my purpose because there is no
> pty associated with the channel.  So I have tried to comment out
> the &quot;libssh2_channel_request_pty&quot; call , but unfortunately!
> result is the same(server do not send all data).  What could be
> the reason of such problem and how to fix it if possible ?

One reason could be that the software you are executing on the server
simply is not written to support both interactive and programmed use.
You can't fix that in the client. There can be other reasons, you'll
have to study the particular server software you want to support in
detail.


> Lastly is there anyway to get all output data of commands or
> sub-commands without using terminal emulation ??

Please clarify what you mean by "sub-commands" ?


In general, if the software you want to execute on the server does
not explicitly support programmed use (and this is likely the case)
then your only option is to write a software that simulates interactive
use, which neccessarily requires terminal emulation to handle everything
that the server software outputs, as well as everything that your
simulator requires to output.

Shells are human interfaces, not programming interfaces, making them a
poor choice for automation. Sometimes there is may be no other way,
but it always requires a lot of (I think wasted) effort. Try to solve
the problem another way if possible.


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

From libssh2-devel-bounces@cool.haxx.se  Mon Oct 29 13:23:51 2018
Return-Path: <libssh2-devel-bounces@cool.haxx.se>
Received: from www.haxx.se (mail [127.0.0.1])
	by giant.haxx.se (8.15.2/8.15.2/Debian-4) with ESMTP id w9TCNJoY019581;
	Mon, 29 Oct 2018 13:23:42 +0100
Received: from rediffmail.com (f5mail-224-150.rediffmail.com [114.31.224.150])
 by giant.haxx.se (8.15.2/8.15.2/Debian-4) with ESMTPS id
 w9TCNFj8019547
 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT)
 for <libssh2-devel@cool.haxx.se>; Mon, 29 Oct 2018 13:23:16 +0100
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=rediffmail.com;
 s=mail; t=1540815789;
 bh=PrcXiVzgsVmmnfYIYshfPhdDt8G12fkXFq7t2nGpI2M=;
 h=MIME-Version:From:Date:Message-ID:Subject:To:Content-Type;
 b=BY8iC0+XOQ7Zhs7hRXyNeu1IvaxP6p65QYSKJ8xLBssJEveiao/SUwJpZ0YO5pd9C
 MZdmPzQ9j3lqVyNAfinufYS1aFZX5mr9nVLwXqxucGlfQD1yD0odm+JQOfyaNmTeuB
 bMmL2/N7Dp/ksR/Wu545MlYMZFI96S+InxqWH1aQ=
Received: (qmail 30882 invoked by uid 510); 29 Oct 2018 12:23:09 -0000
x-m-msg: asd54ad564ad7aa6sd5as6d5; a6da7d6asas6dasd77; 5dad65ad5sd;
X-OUT-VDRT-SpamState: 0\LEGIT
X-OUT-VDRT-SpamScore: 0
X-OUT-VDRT-SpamCause: gggruggvucftvghtrhhoucdtuddrgedtkedrheekgdefkecutefuodetggdotefrodftvfcurfhrohhfihhlvgemucftgfffkffhhfdpqfgfvfenuceurghilhhouhhtmecufedttdenucenucfjughrpeffggfvkfgjshfuhfgtsegrtderredttdejnecuhfhrohhmpedfufhusghrrghtrgcuffgrshhguhhpthgrfdcuoehsuhgsrhgrthgrpghushhhrgesrhgvughifhhfmhgrihhlrdgtohhmqeenucffohhmrghinhepohhuthhpuhhtrdhithdphhgrgiigrdhsvgenucfkphepuddvhedrvddtrdejrdeijeenucfrrghrrghmpehmohguvgepshhmthhpohhuthenucevlhhushhtvghrufhiiigvpedt
X-Remote-IP: 125.20.7.67
X-REDF-OSEN: subrata_usha@rediffmail.com
Date: 29 Oct 2018 12:23:09 -0000
MIME-Version: 1.0
To: "libssh2-devel@cool.haxx.se" <libssh2-devel@cool.haxx.se>
Received: from unknown 125.20.7.67 by rediffmail.com via HTTP;
 29 Oct 2018 12:23:09 -0000
X-Senderscore: D=0&S=0
Message-ID: <1540760047.S.7008.21227.f5-224-101.1540815789.30469@webmail.rediffmail.com>
In-Reply-To: <20181028204926.11331.qmail@stuge.se>
Subject: =?utf-8?B?UmU6IFNTSCBjbGllbnQgaXMgbm90IHJlYWRpbmcgZnVsbCBkYXRhIGlmIGV4ZWN1dGVkIGNvbW1hbmQgZ2VuZXJhdGVzIGJpZyBvdXRwdXQ=?=
From: "Subrata Dasgupta" <subrata_usha@rediffmail.com>
X-BeenThere: libssh2-devel@cool.haxx.se
X-Mailman-Version: 2.1.22
Precedence: list
List-Id: libssh2 development <libssh2-devel.cool.haxx.se>
List-Unsubscribe: <https://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: <https://cool.haxx.se/cgi-bin/mailman/listinfo/libssh2-devel>, 
 <mailto:libssh2-devel-request@cool.haxx.se?subject=subscribe>
Reply-To: libssh2 development <libssh2-devel@cool.haxx.se>
Content-Type: multipart/mixed; boundary="===============1663799840=="
Errors-To: libssh2-devel-bounces@cool.haxx.se
Sender: "libssh2-devel" <libssh2-devel-bounces@cool.haxx.se>

--===============1663799840==
Content-Type: multipart/alternative;
	boundary="=_169b39947f383caebadf3b7d5d5c4bcf"

--=_169b39947f383caebadf3b7d5d5c4bcf
Content-Transfer-Encoding: 7bit
Content-Type: text/plain; charset="UTF-8"

Hi Peter,Thanks a lot for beautiful explanation.My intention is to run several commands on a small router like device. The device provide a restricted environment and allows user to run only specific set of commands. Some commands may also have sub-commands, for an example until and unless &#39;enable&#39; command is executed user are not allowed to execute few commands. One more example of sub-command is , until and unless &quot;configure terminal&quot; command is executed users are not allowed to run any configuration related commands. So I need to retain the state otherwise I can not execute some commands.I do not fully understand the difference between session and channel. If possible please explain a bit.Is it possible to use &quot;libssh2_channel_exec&quot; in the scenario explained above (means in sub-command case) ? If yes please let me know how.Does &quot;libssh2_channel_exec&quot; is able to provide all the data if command output is very big ?ThanksSubrataFrom: Peter Stuge &lt;peter@stuge.se&gt;Sent: Mon, 29 Oct 2018 02:24:07To: libssh2-devel@cool.haxx.seSubject: Re: SSH client is not reading full data if executed command generates big outputSubrata Dasgupta wrote:&gt; My intention is to run multiple commands sequentially over ssh and&gt; get the output.It seems &amp;quot;libssh2_channel_exec&amp;quot; function&gt; can only execute a single command over a session or channel. &nbsp;So&gt; this option will not serve my purpose because commands may have&gt; some sub-commands. &nbsp;So I need to retain the session or channel to&gt; execute those sub-commands. &nbsp;Please let me know if my&gt; understanding is wrong and kindly let me know how to execute&gt; multiple commands and sub-commands over libssh2_channel_exec.Your understanding is correct; libssh2_channel_exec() only everexecutes one command, but you can call it many times within onesession.That allows you to take advantage of well-defined fit-for-purposebehavior and interactions between your client and the server. Thisway, your software has some chance to control the processes on theserver side.&gt; It seems only &amp;quot;libssh2_channel_shell&amp;quot; function can serve&gt; my purpose because I can execute multiple commands on a established&gt; channel / session. &nbsp;Please let me know if I am wrong.A shell channel is not needed to execute multiple commands in onesession, only to execute multiple commands in one *channel*. Studythe difference to see what is actually required in your case.&gt; It also seems from the different ssh tutorials from net that&gt; non-interactive session may serve my purpose because there is no&gt; pty associated with the channel. &nbsp;So I have tried to comment out&gt; the &amp;quot;libssh2_channel_request_pty&amp;quot; call ,&nbsp;but unfortunately!&gt; result is the same(server do not send all data). &nbsp;What could be&gt; the reason of such problem and how to fix it if possible ?One reason could be that the software you are executing on the serversimply is not written to support both interactive and programmed use.You can&#39;t fix that in the client. There can be other reasons, you&#39;llhave to study the particular server software you want to support indetail.&gt; Lastly is there anyway to get all output data of commands or&gt; sub-commands without using terminal emulation ??Please clarify what you mean by &quot;sub-commands&quot; ?In general, if the software you want to execute on the server doesnot explicitly support programmed use (and this is likely the case)then your only option is to write a software that simulates interactiveuse, which neccessarily requires terminal emulation to handle everythingthat the server software outputs, as well as everything that yoursimulator requires to output.Shells are human interfaces, not programming interfaces, making them apoor choice for automation. Sometimes there is may be no other way,but it always requires a lot of (I think wasted) effort. Try to solvethe problem another way if possible.//Peter_______________________________________________libssh2-devel https://cool.haxx.se/cgi-bin/mailman/listinfo/libssh2-devel
--=_169b39947f383caebadf3b7d5d5c4bcf
Content-Transfer-Encoding: quoted-printable
Content-Type: text/html; charset="UTF-8"

Hi Peter,<br />Thanks a lot for beautiful explanation.<br /><br />My intent=
ion is to run several commands on a small router like device. The device pr=
ovide a restricted environment and allows user to run only specific set of =
commands. Some commands may also have sub-commands, for an example until an=
d unless &#39;enable&#39; command is executed user are not allowed to execu=
te few commands. One more example of sub-command is , until and unless &quo=
t;configure terminal&quot; command is executed users are not allowed to run=
 any configuration related commands. So I need to retain the state otherwis=
e I can not execute some commands.<br /><br />I do not fully understand the=
 difference between session and channel. If possible please explain a bit.<=
br /><br />Is it possible to use &quot;libssh2_channel_exec&quot; in the sc=
enario explained above (means in sub-command case) ? If yes please let me k=
now how.<br />Does &quot;libssh2_channel_exec&quot; is able to provide all =
the data if command output is very big ?<br /><br />Thanks<br />Subrata<br =
/><br /><br /><br />From: Peter Stuge &lt;peter@stuge.se&gt;<br />Sent: Mon=
, 29 Oct 2018 02:24:07<br />To: libssh2-devel@cool.haxx.se<br />Subject: Re=
: SSH client is not reading full data if executed command generates big out=
put<br /><br />Subrata Dasgupta wrote:<br />&gt; My intention is to run mul=
tiple commands sequentially over ssh and<br />&gt; get the <a href=3D"http:=
//output.It" rel=3D"external" target=3D"_blank">output.It</a> seems &amp;qu=
ot;libssh2_channel_exec&amp;quot; function<br />&gt; can only execute a sin=
gle command over a session or channel. &nbsp;So<br />&gt; this option will =
not serve my purpose because commands may have<br />&gt; some sub-commands.=
 &nbsp;So I need to retain the session or channel to<br />&gt; execute thos=
e sub-commands. &nbsp;Please let me know if my<br />&gt; understanding is w=
rong and kindly let me know how to execute<br />&gt; multiple commands and =
sub-commands over libssh2_channel_exec.<br /><br />Your understanding is co=
rrect; libssh2_channel_exec() only ever<br />executes one command, but you =
can call it many times within one<br />session.<br /><br />That allows you =
to take advantage of well-defined fit-for-purpose<br />behavior and interac=
tions between your client and the server. This<br />way, your software has =
some chance to control the processes on the<br />server side.<br /><br /><b=
r />&gt; It seems only &amp;quot;libssh2_channel_shell&amp;quot; function c=
an serve<br />&gt; my purpose because I can execute multiple commands on a =
established<br />&gt; channel / session. &nbsp;Please let me know if I am w=
rong.<br /><br />A shell channel is not needed to execute multiple commands=
 in one<br />session, only to execute multiple commands in one *channel*. S=
tudy<br />the difference to see what is actually required in your case.<br =
/><br /><br />&gt; It also seems from the different ssh tutorials from net =
that<br />&gt; non-interactive session may serve my purpose because there i=
s no<br />&gt; pty associated with the channel. &nbsp;So I have tried to co=
mment out<br />&gt; the &amp;quot;libssh2_channel_request_pty&amp;quot; cal=
l ,&nbsp;but unfortunately!<br />&gt; result is the same(server do not send=
 all data). &nbsp;What could be<br />&gt; the reason of such problem and ho=
w to fix it if possible ?<br /><br />One reason could be that the software =
you are executing on the server<br />simply is not written to support both =
interactive and programmed use.<br />You can&#39;t fix that in the client. =
There can be other reasons, you&#39;ll<br />have to study the particular se=
rver software you want to support in<br />detail.<br /><br /><br />&gt; Las=
tly is there anyway to get all output data of commands or<br />&gt; sub-com=
mands without using terminal emulation ??<br /><br />Please clarify what yo=
u mean by &quot;sub-commands&quot; ?<br /><br /><br />In general, if the so=
ftware you want to execute on the server does<br />not explicitly support p=
rogrammed use (and this is likely the case)<br />then your only option is t=
o write a software that simulates interactive<br />use, which neccessarily =
requires terminal emulation to handle everything<br />that the server softw=
are outputs, as well as everything that your<br />simulator requires to out=
put.<br /><br />Shells are human interfaces, not programming interfaces, ma=
king them a<br />poor choice for automation. Sometimes there is may be no o=
ther way,<br />but it always requires a lot of (I think wasted) effort. Try=
 to solve<br />the problem another way if possible.<br /><br /><br />//Pete=
r<br />_______________________________________________<br />libssh2-devel <=
a href=3D"https://cool.haxx.se/cgi-bin/mailman/listinfo/libssh2-devel" targ=
et=3D"_blank">https://cool.haxx.se/cgi-bin/mailman/listinfo/libssh2-devel</=
a><br>
--=_169b39947f383caebadf3b7d5d5c4bcf--

--===============1663799840==
Content-Type: text/plain; charset="utf-8"
MIME-Version: 1.0
Content-Transfer-Encoding: base64
Content-Disposition: inline

X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KbGlic3NoMi1k
ZXZlbCBodHRwczovL2Nvb2wuaGF4eC5zZS9jZ2ktYmluL21haWxtYW4vbGlzdGluZm8vbGlic3No
Mi1kZXZlbAo=

--===============1663799840==--

From libssh2-devel-bounces@cool.haxx.se  Mon Oct 29 13:24:08 2018
Return-Path: <libssh2-devel-bounces@cool.haxx.se>
Received: from www.haxx.se (mail [127.0.0.1])
	by giant.haxx.se (8.15.2/8.15.2/Debian-4) with ESMTP id w9TCO6tT020190;
	Mon, 29 Oct 2018 13:24:08 +0100
Received: from rediffmail.com (f5mail-224-128.rediffmail.com [114.31.224.128])
 by giant.haxx.se (8.15.2/8.15.2/Debian-4) with ESMTPS id
 w9TCO2XH020092
 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT)
 for <libssh2-devel@cool.haxx.se>; Mon, 29 Oct 2018 13:24:04 +0100
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=rediffmail.com;
 s=mail; t=1540815837;
 bh=9WyNOiauvPwmidcgrHDk5ilW745usaYiQWgcatNoB8M=;
 h=MIME-Version:From:Date:Message-ID:Subject:To:Content-Type;
 b=cJ3405SHHEEoE41DwkvylmnZaB609wXNF7+8PcRixAkf/z4NHZ0/mZPUP3drJrj71
 5SdQ9L3nhc6CpSFzSc+nqnZzSbDsgFtALn58vpoJ7vifMYPwdAhA86acOUx5ERFw+1
 sI2Qc1wHHed8tg4XBVNiSiimMc3SPb1lvglpB3fE=
Received: (qmail 26596 invoked by uid 510); 29 Oct 2018 12:23:57 -0000
x-m-msg: asd54ad564ad7aa6sd5as6d5; a6da7d6asas6dasd77; 5dad65ad5sd;
X-OUT-VDRT-SpamState: ERR
X-OUT-VDRT-SpamScore: 
X-OUT-VDRT-SpamCause: 
X-Remote-IP: 125.20.7.67
X-REDF-OSEN: subrata_usha@rediffmail.com
Date: 29 Oct 2018 12:23:57 -0000
MIME-Version: 1.0
To: "libssh2-devel@cool.haxx.se" <libssh2-devel@cool.haxx.se>
Received: from unknown 125.20.7.67 by rediffmail.com via HTTP;
 29 Oct 2018 12:23:57 -0000
X-Senderscore: D=0&S=0
Message-ID: <1540760047.S.7008.21227.f5-224-101.1540815837.26264@webmail.rediffmail.com>
In-Reply-To: <20181028204926.11331.qmail@stuge.se>
Subject: =?utf-8?B?UmU6IFNTSCBjbGllbnQgaXMgbm90IHJlYWRpbmcgZnVsbCBkYXRhIGlmIGV4ZWN1dGVkIGNvbW1hbmQgZ2VuZXJhdGVzIGJpZyBvdXRwdXQ=?=
From: "Subrata Dasgupta" <subrata_usha@rediffmail.com>
X-BeenThere: libssh2-devel@cool.haxx.se
X-Mailman-Version: 2.1.22
Precedence: list
List-Id: libssh2 development <libssh2-devel.cool.haxx.se>
List-Unsubscribe: <https://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: <https://cool.haxx.se/cgi-bin/mailman/listinfo/libssh2-devel>, 
 <mailto:libssh2-devel-request@cool.haxx.se?subject=subscribe>
Reply-To: libssh2 development <libssh2-devel@cool.haxx.se>
Content-Type: multipart/mixed; boundary="===============0231917437=="
Errors-To: libssh2-devel-bounces@cool.haxx.se
Sender: "libssh2-devel" <libssh2-devel-bounces@cool.haxx.se>

--===============0231917437==
Content-Type: multipart/alternative;
	boundary="=_94e39206a269151d7ae3a94ee0291890"

--=_94e39206a269151d7ae3a94ee0291890
Content-Transfer-Encoding: 7bit
Content-Type: text/plain; charset="UTF-8"

Hi Peter,Thanks a lot for beautiful explanation.My intention is to run several commands on a small router like device. The device provide a restricted environment and allows user to run only specific set of commands. Some commands may also have sub-commands, for an example until and unless &#39;enable&#39; command is executed user are not allowed to execute few commands. One more example of sub-command is , until and unless &quot;configure terminal&quot; command is executed users are not allowed to run any configuration related commands. So I need to retain the state otherwise I can not execute some commands.I do not fully understand the difference between session and channel. If possible please explain a bit.Is it possible to use &quot;libssh2_channel_exec&quot; in the scenario explained above (means in sub-command case) ? If yes please let me know how.Does &quot;libssh2_channel_exec&quot; is able to provide all the data if command output is very big ?ThanksSubrataFrom: Peter Stuge &lt;peter@stuge.se&gt;Sent: Mon, 29 Oct 2018 02:24:07To: libssh2-devel@cool.haxx.seSubject: Re: SSH client is not reading full data if executed command generates big outputSubrata Dasgupta wrote:&gt; My intention is to run multiple commands sequentially over ssh and&gt; get the output.It seems &amp;quot;libssh2_channel_exec&amp;quot; function&gt; can only execute a single command over a session or channel. &nbsp;So&gt; this option will not serve my purpose because commands may have&gt; some sub-commands. &nbsp;So I need to retain the session or channel to&gt; execute those sub-commands. &nbsp;Please let me know if my&gt; understanding is wrong and kindly let me know how to execute&gt; multiple commands and sub-commands over libssh2_channel_exec.Your understanding is correct; libssh2_channel_exec() only everexecutes one command, but you can call it many times within onesession.That allows you to take advantage of well-defined fit-for-purposebehavior and interactions between your client and the server. Thisway, your software has some chance to control the processes on theserver side.&gt; It seems only &amp;quot;libssh2_channel_shell&amp;quot; function can serve&gt; my purpose because I can execute multiple commands on a established&gt; channel / session. &nbsp;Please let me know if I am wrong.A shell channel is not needed to execute multiple commands in onesession, only to execute multiple commands in one *channel*. Studythe difference to see what is actually required in your case.&gt; It also seems from the different ssh tutorials from net that&gt; non-interactive session may serve my purpose because there is no&gt; pty associated with the channel. &nbsp;So I have tried to comment out&gt; the &amp;quot;libssh2_channel_request_pty&amp;quot; call ,&nbsp;but unfortunately!&gt; result is the same(server do not send all data). &nbsp;What could be&gt; the reason of such problem and how to fix it if possible ?One reason could be that the software you are executing on the serversimply is not written to support both interactive and programmed use.You can&#39;t fix that in the client. There can be other reasons, you&#39;llhave to study the particular server software you want to support indetail.&gt; Lastly is there anyway to get all output data of commands or&gt; sub-commands without using terminal emulation ??Please clarify what you mean by &quot;sub-commands&quot; ?In general, if the software you want to execute on the server doesnot explicitly support programmed use (and this is likely the case)then your only option is to write a software that simulates interactiveuse, which neccessarily requires terminal emulation to handle everythingthat the server software outputs, as well as everything that yoursimulator requires to output.Shells are human interfaces, not programming interfaces, making them apoor choice for automation. Sometimes there is may be no other way,but it always requires a lot of (I think wasted) effort. Try to solvethe problem another way if possible.//Peter_______________________________________________libssh2-devel https://cool.haxx.se/cgi-bin/mailman/listinfo/libssh2-devel
--=_94e39206a269151d7ae3a94ee0291890
Content-Transfer-Encoding: quoted-printable
Content-Type: text/html; charset="UTF-8"

Hi Peter,<br />Thanks a lot for beautiful explanation.<br /><br />My intent=
ion is to run several commands on a small router like device. The device pr=
ovide a restricted environment and allows user to run only specific set of =
commands. Some commands may also have sub-commands, for an example until an=
d unless &#39;enable&#39; command is executed user are not allowed to execu=
te few commands. One more example of sub-command is , until and unless &quo=
t;configure terminal&quot; command is executed users are not allowed to run=
 any configuration related commands. So I need to retain the state otherwis=
e I can not execute some commands.<br /><br />I do not fully understand the=
 difference between session and channel. If possible please explain a bit.<=
br /><br />Is it possible to use &quot;libssh2_channel_exec&quot; in the sc=
enario explained above (means in sub-command case) ? If yes please let me k=
now how.<br />Does &quot;libssh2_channel_exec&quot; is able to provide all =
the data if command output is very big ?<br /><br />Thanks<br />Subrata<br =
/><br /><br /><br />From: Peter Stuge &lt;peter@stuge.se&gt;<br />Sent: Mon=
, 29 Oct 2018 02:24:07<br />To: libssh2-devel@cool.haxx.se<br />Subject: Re=
: SSH client is not reading full data if executed command generates big out=
put<br /><br />Subrata Dasgupta wrote:<br />&gt; My intention is to run mul=
tiple commands sequentially over ssh and<br />&gt; get the <a href=3D"http:=
//output.It" rel=3D"external" target=3D"_blank">output.It</a> seems &amp;qu=
ot;libssh2_channel_exec&amp;quot; function<br />&gt; can only execute a sin=
gle command over a session or channel. &nbsp;So<br />&gt; this option will =
not serve my purpose because commands may have<br />&gt; some sub-commands.=
 &nbsp;So I need to retain the session or channel to<br />&gt; execute thos=
e sub-commands. &nbsp;Please let me know if my<br />&gt; understanding is w=
rong and kindly let me know how to execute<br />&gt; multiple commands and =
sub-commands over libssh2_channel_exec.<br /><br />Your understanding is co=
rrect; libssh2_channel_exec() only ever<br />executes one command, but you =
can call it many times within one<br />session.<br /><br />That allows you =
to take advantage of well-defined fit-for-purpose<br />behavior and interac=
tions between your client and the server. This<br />way, your software has =
some chance to control the processes on the<br />server side.<br /><br /><b=
r />&gt; It seems only &amp;quot;libssh2_channel_shell&amp;quot; function c=
an serve<br />&gt; my purpose because I can execute multiple commands on a =
established<br />&gt; channel / session. &nbsp;Please let me know if I am w=
rong.<br /><br />A shell channel is not needed to execute multiple commands=
 in one<br />session, only to execute multiple commands in one *channel*. S=
tudy<br />the difference to see what is actually required in your case.<br =
/><br /><br />&gt; It also seems from the different ssh tutorials from net =
that<br />&gt; non-interactive session may serve my purpose because there i=
s no<br />&gt; pty associated with the channel. &nbsp;So I have tried to co=
mment out<br />&gt; the &amp;quot;libssh2_channel_request_pty&amp;quot; cal=
l ,&nbsp;but unfortunately!<br />&gt; result is the same(server do not send=
 all data). &nbsp;What could be<br />&gt; the reason of such problem and ho=
w to fix it if possible ?<br /><br />One reason could be that the software =
you are executing on the server<br />simply is not written to support both =
interactive and programmed use.<br />You can&#39;t fix that in the client. =
There can be other reasons, you&#39;ll<br />have to study the particular se=
rver software you want to support in<br />detail.<br /><br /><br />&gt; Las=
tly is there anyway to get all output data of commands or<br />&gt; sub-com=
mands without using terminal emulation ??<br /><br />Please clarify what yo=
u mean by &quot;sub-commands&quot; ?<br /><br /><br />In general, if the so=
ftware you want to execute on the server does<br />not explicitly support p=
rogrammed use (and this is likely the case)<br />then your only option is t=
o write a software that simulates interactive<br />use, which neccessarily =
requires terminal emulation to handle everything<br />that the server softw=
are outputs, as well as everything that your<br />simulator requires to out=
put.<br /><br />Shells are human interfaces, not programming interfaces, ma=
king them a<br />poor choice for automation. Sometimes there is may be no o=
ther way,<br />but it always requires a lot of (I think wasted) effort. Try=
 to solve<br />the problem another way if possible.<br /><br /><br />//Pete=
r<br />_______________________________________________<br />libssh2-devel <=
a href=3D"https://cool.haxx.se/cgi-bin/mailman/listinfo/libssh2-devel" targ=
et=3D"_blank">https://cool.haxx.se/cgi-bin/mailman/listinfo/libssh2-devel</=
a><br>
--=_94e39206a269151d7ae3a94ee0291890--

--===============0231917437==
Content-Type: text/plain; charset="utf-8"
MIME-Version: 1.0
Content-Transfer-Encoding: base64
Content-Disposition: inline

X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KbGlic3NoMi1k
ZXZlbCBodHRwczovL2Nvb2wuaGF4eC5zZS9jZ2ktYmluL21haWxtYW4vbGlzdGluZm8vbGlic3No
Mi1kZXZlbAo=

--===============0231917437==--

From libssh2-devel-bounces@cool.haxx.se  Tue Oct 30 12:07:58 2018
Return-Path: <libssh2-devel-bounces@cool.haxx.se>
Received: from www.haxx.se (mail [127.0.0.1])
	by giant.haxx.se (8.15.2/8.15.2/Debian-4) with ESMTP id w9UB7SOV027392;
	Tue, 30 Oct 2018 12:07:51 +0100
Received: from foo.stuge.se (foo.stuge.se [212.116.89.98])
 by giant.haxx.se (8.15.2/8.15.2/Debian-4) with ESMTPS id w9UB7PrV027357
 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT)
 for <libssh2-devel@cool.haxx.se>; Tue, 30 Oct 2018 12:07:26 +0100
Received: (qmail 26876 invoked by uid 1000); 30 Oct 2018 11:07:21 -0000
Message-ID: <20181030110721.26875.qmail@stuge.se>
Date: Tue, 30 Oct 2018 11:07:21 +0000
From: Peter Stuge <peter@stuge.se>
To: libssh2 development <libssh2-devel@cool.haxx.se>
Subject: Re: SSH client is not reading full data if executed command
 generates big output
References: <20181028204926.11331.qmail@stuge.se>
 <1540760047.S.7008.21227.f5-224-101.1540815789.30469@webmail.rediffmail.com>
MIME-Version: 1.0
Content-Disposition: inline
In-Reply-To: <1540760047.S.7008.21227.f5-224-101.1540815789.30469@webmail.rediffmail.com>
X-BeenThere: libssh2-devel@cool.haxx.se
X-Mailman-Version: 2.1.22
Precedence: list
List-Id: libssh2 development <libssh2-devel.cool.haxx.se>
List-Unsubscribe: <https://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: <https://cool.haxx.se/cgi-bin/mailman/listinfo/libssh2-devel>, 
 <mailto:libssh2-devel-request@cool.haxx.se?subject=subscribe>
Reply-To: libssh2 development <libssh2-devel@cool.haxx.se>
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 w9UB7SOV027392

Subrata Dasgupta wrote:
> My intention is to run several commands on a small router like device.
> The device provide a restricted environment and allows user to run only
> specific set of commands. Some commands may also have sub-commands, for
> an example until and unless &#39;enable&#39; command is executed user
> are not allowed to execute few commands. One more example of sub-command
> is, until and unless &quot;configure terminal&quot; command is executed
> users are not allowed to run any configuration related commands.

Oh now I understand. Thanks for the explanation.


> So I need to retain the state otherwise I can not execute some commands.
> I do not fully understand the difference between session and channel.
> If possible please explain a bit.

They are two SSH protocol level concepts, I recommend reading RFC4254
chapter 5 and 6 where channels are explained:

https://tools.ietf.org/rfc/rfc4254.txt

Please note that SSH sessions are different from "terminal sessions"
and "Interactive Sessions" also explained in RFC4254.

An SSH session can be considered to represent the TCP connection that
has been authenticated by the SSH server, usually by one or more of
password, public key and keyboard-interactive credentials. Within one
such SSH session there can be multiple SSH channels, if server policy
permits. You can e.g. take advantage of this in the OpenSSH ssh client
using the "ControlMaster" and "ControlPath" directives. It's a nice
feature of the SSH protocol.


> Is it possible to use &quot;libssh2_channel_exec&quot; in the scenario
> explained above (means in sub-command case) ?

No, that will not work with the type of shell you describe. Your target
device should in fact probably not even allow you to open a channel,
since that application-specific shell is rich in context.


> Does &quot;libssh2_channel_exec&quot; is able to provide all the data
> if command output is very big ?

Large data transfer does work well with all channel types in libssh2,
the function at the center of data transfer is libssh2_channel_read(),
which reads data from open channels. But it does not behave exactly like
the read() system call, and the differences can be tricky to deal with.

Differences have to do with how the SSH protocol can also send other
messages than what you are waiting for (like data for another channel,
or a message unrelated to any channel such as re-keying the SSH session)
and while libssh2 handles them in the background, things like timeout
usually have to be implemented "by hand" in the application - the kernel
APIs such as select() and poll() can't be used, because one TCP connection
can carry many SSH message types, and the kernel doesn't know which bytes
belong to a particular channel. SSH is a very useful protocol, but this
part can make it a little inconvenient in applications.

Try using some of the examples that are included with libssh2, first
unchanged, then move on to change them.

In the end, for an interactive shell like the one you describe, I
think you will have to do a lot of work to create a reliable tool,
including some kind of terminal emulation (but maybe not very much)
to satisfy the expectations of the shell running on the device.


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

