From libssh2-devel-bounces@cool.haxx.se  Tue Sep  4 05:50:31 2012
Return-Path: <libssh2-devel-bounces@cool.haxx.se>
Received: from www.haxx.se (localhost.localdomain [127.0.0.1])
	by giant.haxx.se (8.14.4/8.14.4/Debian-2) with ESMTP id q843nMgp006502;
	Tue, 4 Sep 2012 05:50:01 +0200
Received: from mail-pb0-f54.google.com (mail-pb0-f54.google.com
 [209.85.160.54])
 by giant.haxx.se (8.14.4/8.14.4/Debian-2) with ESMTP id q843nI04006468
 (version=TLSv1/SSLv3 cipher=RC4-SHA bits=128 verify=NOT)
 for <libssh2-devel@cool.haxx.se>; Tue, 4 Sep 2012 05:49:20 +0200
Received: by pbbrp2 with SMTP id rp2so8162534pbb.41
 for <libssh2-devel@cool.haxx.se>; Mon, 03 Sep 2012 20:49:14 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113;
 h=message-id:date:from:user-agent:mime-version:to:subject
 :content-type:content-transfer-encoding;
 bh=ra6+K4gtsrYhn8CTccg/jApfbwbA3Db2IARySxliRtM=;
 b=lKXGWjIj08vqWNGkytjqfOR85Fl/jP5eNRmjts1CYr5FddXPtR3D2j1q9RNJb+a0og
 jIqvwV60yskNB2mzcqiFfQEwtDfxPtuol0PdwcMIOqGFelIAdVWxFWUr4PYwbaGDfqqR
 iTO4DPOA7TAv04GkNuRvHLmkkNWZR1VoNPWvzVsTMNP7+m+MrH+5jCAy04sxPc9iZqmq
 IsVAWDwO4/JqF9ACaLVirj/SNW9NqxU9Sb28sVUxNW2oqWjqNBgtAfpJyiMAj0KcGic5
 fPydreHIUVvI+PwA3K0C1iugIZKttBh6c8AkmiH+EPaDwctQcL7S6+X1nuAhuvHOVFd+
 8uiw==
Received: by 10.68.191.134 with SMTP id gy6mr42392357pbc.136.1346730554020;
 Mon, 03 Sep 2012 20:49:14 -0700 (PDT)
Received: from [127.0.0.1] ([101.161.243.108])
 by mx.google.com with ESMTPS id ka9sm11237561pbb.59.2012.09.03.20.49.12
 (version=TLSv1/SSLv3 cipher=OTHER);
 Mon, 03 Sep 2012 20:49:13 -0700 (PDT)
Message-ID: <50457A33.2040905@gmail.com>
Date: Tue, 04 Sep 2012 13:49:07 +1000
From: Noah <n0ahz0rk@gmail.com>
User-Agent: Mozilla/5.0 (Windows NT 6.1;
 rv:15.0) Gecko/20120824 Thunderbird/15.0
MIME-Version: 1.0
To: libssh2-devel@cool.haxx.se
Subject: Visual C++ 2010 Express edition cannot open and convert libssh2 win32
 project file
X-BeenThere: libssh2-devel@cool.haxx.se
X-Mailman-Version: 2.1.15
Precedence: list
Reply-To: libssh2 development <libssh2-devel@cool.haxx.se>
List-Id: libssh2 development <libssh2-devel.cool.haxx.se>
List-Unsubscribe: <http://cool.haxx.se/cgi-bin/mailman/options/libssh2-devel>, 
 <mailto:libssh2-devel-request@cool.haxx.se?subject=unsubscribe>
List-Archive: <http://cool.haxx.se/pipermail/libssh2-devel/>
List-Post: <mailto:libssh2-devel@cool.haxx.se>
List-Help: <mailto:libssh2-devel-request@cool.haxx.se?subject=help>
List-Subscribe: <http://cool.haxx.se/cgi-bin/mailman/listinfo/libssh2-devel>, 
 <mailto:libssh2-devel-request@cool.haxx.se?subject=subscribe>
Content-Type: multipart/mixed; boundary="===============2036458546=="
Errors-To: libssh2-devel-bounces@cool.haxx.se
Sender: "libssh2-devel" <libssh2-devel-bounces@cool.haxx.se>

--===============2036458546==
Content-Type: text/html; charset=ISO-8859-1
Content-Transfer-Encoding: 7bit

<html>
  <head>

    <meta http-equiv="content-type" content="text/html; charset=ISO-8859-1">
  </head>
  <body bgcolor="#FFFFFF" text="#000066">
    <font size="-1"><font face="Helvetica, Arial, sans-serif">Hi,<br>
        <br>
        Not sure if others have this problem, but I have tried to open
        the C:\libssh2-1.4.2\win32\libssh2.dsp file (as per the
        instruction in </font></font><font size="-1"><font
        face="Helvetica, Arial, sans-serif"><span style="color: rgb(0,
          0, 0); font-family: arial, helvetica, ariel, sans-serif;
          font-size: 14px; font-style: normal; font-variant: normal;
          font-weight: normal; letter-spacing: normal; line-height:
          normal; orphans: 2; text-align: -webkit-left; text-indent:
          0px; text-transform: none; white-space: normal; widows: 2;
          word-spacing: 0px; -webkit-text-size-adjust: auto;
          -webkit-text-stroke-width: 0px; background-color: rgb(255,
          255, 255); display: inline !important; float: none; ">Andrei
          Jakab's<span class="Apple-converted-space">&nbsp;</span></span><a
href="http://curl.haxx.se/libcurl/c/Using-libcurl-with-SSH-support-in-Visual-Studio-2010.pdf"
          style="font-family: arial, helvetica, ariel, sans-serif;
          font-size: 14px; font-style: normal; font-variant: normal;
          font-weight: normal; letter-spacing: normal; line-height:
          normal; orphans: 2; text-align: -webkit-left; text-indent:
          0px; text-transform: none; white-space: normal; widows: 2;
          word-spacing: 0px; -webkit-text-size-adjust: auto;
          -webkit-text-stroke-width: 0px; background-color: rgb(255,
          255, 255); ">Using libcurl with SSH support in Visual Studio
          2010</a><span style="color: rgb(0, 0, 0); font-family: arial,
          helvetica, ariel, sans-serif; font-size: 14px; font-style:
          normal; font-variant: normal; font-weight: normal;
          letter-spacing: normal; line-height: normal; orphans: 2;
          text-align: -webkit-left; text-indent: 0px; text-transform:
          none; white-space: normal; widows: 2; word-spacing: 0px;
          -webkit-text-size-adjust: auto; -webkit-text-stroke-width:
          0px; background-color: rgb(255, 255, 255); display: inline
          !important; float: none; "><span class="Apple-converted-space">&nbsp;</span>[PDF]
          - referring to the link on </span></font></font><font
      size="-1"><font face="Helvetica, Arial, sans-serif"><span
          style="color: rgb(0, 0, 0); font-family: arial, helvetica,
          ariel, sans-serif; font-size: 14px; font-style: normal;
          font-variant: normal; font-weight: normal; letter-spacing:
          normal; line-height: normal; orphans: 2; text-align:
          -webkit-left; text-indent: 0px; text-transform: none;
          white-space: normal; widows: 2; word-spacing: 0px;
          -webkit-text-size-adjust: auto; -webkit-text-stroke-width:
          0px; background-color: rgb(255, 255, 255); display: inline
          !important; float: none; "><a
            href="http://curl.haxx.se/libcurl/c/">http://curl.haxx.se/libcurl/c/</a>
          ) </span>with my Visual C++ 2010 Express edition, and I do
        get the prompt that advises the project will have to be
        converted, but after that I get no error messages, and no
        project is open in the IDE.<br>
        <br>
        I don't have the retail version of Visual Studio 2010.<br>
        <br>
        I'd appreciate if anyone knows where to look for any further
        error messages or logging - of if anyone has found and overcome
        this same issue, any help would be appreciated.<br>
        <br>
        Thanks,<br>
        Andrew.<br>
      </font></font>
  </body>
</html>

--===============2036458546==
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: inline

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

--===============2036458546==--

From libssh2-devel-bounces@cool.haxx.se  Tue Sep  4 08:45:15 2012
Return-Path: <libssh2-devel-bounces@cool.haxx.se>
Received: from www.haxx.se (localhost.localdomain [127.0.0.1])
	by giant.haxx.se (8.14.4/8.14.4/Debian-2) with ESMTP id q846j2GH003246;
	Tue, 4 Sep 2012 08:45:12 +0200
Received: from mail-vc0-f182.google.com (mail-vc0-f182.google.com
 [209.85.220.182])
 by giant.haxx.se (8.14.4/8.14.4/Debian-2) with ESMTP id q846j0xu002702
 (version=TLSv1/SSLv3 cipher=RC4-SHA bits=128 verify=NOT)
 for <libssh2-devel@cool.haxx.se>; Tue, 4 Sep 2012 08:45:00 +0200
Received: by vcbgb22 with SMTP id gb22so6547344vcb.41
 for <libssh2-devel@cool.haxx.se>; Mon, 03 Sep 2012 23:44:55 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113;
 h=mime-version:date:message-id:subject:from:to:content-type;
 bh=HtDaS6tNqW/peeDdRZmZ1RaWNxiTKES1CkKgXTOgyLc=;
 b=qPRGzrRFDNHJuGmMmDxwyL8lzbyir798hY4n2SbvRWdDG5Mwq2mUVh8FUH9h16T2Sw
 /TEbCM8w3bRZyqSmgaKFQKKJ/JxxQd4ygZ5fISPxzySZNbeuBq8tWKMM2vazLt0++r2T
 lq5m9Stu9U+zEzTRW4dMxMS0wzYS/gPT2eBI68DHeFHTAdsA7TNdYMAvCVgLixc+JOmg
 v1ZG5zqUJlIusZyg+JLk/sN4h1CLGk0/TsRhxFUKFLGVfp1QlSADZ2A6tpRVCiLS19hK
 RQxdM0/jUnIU5HWLFThbAm+C/L53acNVa1lgD9rjA/s7Ip5lHe2LoOlW+XOl1jVUn5qy
 Vtvg==
MIME-Version: 1.0
Received: by 10.52.25.73 with SMTP id a9mr11474478vdg.95.1346741095761; Mon,
 03 Sep 2012 23:44:55 -0700 (PDT)
Received: by 10.220.51.13 with HTTP; Mon, 3 Sep 2012 23:44:55 -0700 (PDT)
Date: Tue, 4 Sep 2012 12:14:55 +0530
Message-ID: <CAEKYpERrKN5tGV0aRWyE-ACaoP2boNicgJLq_uujiDGfdqD2GQ@mail.gmail.com>
Subject: SSH timeout
From: anirudh nair <anirudh.anu01@gmail.com>
To: libssh2-devel@cool.haxx.se
X-BeenThere: libssh2-devel@cool.haxx.se
X-Mailman-Version: 2.1.15
Precedence: list
Reply-To: libssh2 development <libssh2-devel@cool.haxx.se>
List-Id: libssh2 development <libssh2-devel.cool.haxx.se>
List-Unsubscribe: <http://cool.haxx.se/cgi-bin/mailman/options/libssh2-devel>, 
 <mailto:libssh2-devel-request@cool.haxx.se?subject=unsubscribe>
List-Archive: <http://cool.haxx.se/pipermail/libssh2-devel/>
List-Post: <mailto:libssh2-devel@cool.haxx.se>
List-Help: <mailto:libssh2-devel-request@cool.haxx.se?subject=help>
List-Subscribe: <http://cool.haxx.se/cgi-bin/mailman/listinfo/libssh2-devel>, 
 <mailto:libssh2-devel-request@cool.haxx.se?subject=subscribe>
Content-Type: multipart/mixed; boundary="===============2112116081=="
Errors-To: libssh2-devel-bounces@cool.haxx.se
Sender: "libssh2-devel" <libssh2-devel-bounces@cool.haxx.se>

--===============2112116081==
Content-Type: multipart/alternative; boundary=20cf3079bff09e063004c8da982f

--20cf3079bff09e063004c8da982f
Content-Type: text/plain; charset=ISO-8859-1

Hi All,

Is it advisable to persist the SSH session object(LIBSSH2_SESSION). Are
there chances for the
session to timeout. Can I set the session not to timeout at all?

Thanks
Anirudh

--20cf3079bff09e063004c8da982f
Content-Type: text/html; charset=ISO-8859-1
Content-Transfer-Encoding: quoted-printable

Hi All,=A0<div><br></div><div>Is it advisable to persist the SSH session ob=
ject(LIBSSH2_SESSION). Are there chances for the=A0</div><div>session to ti=
meout. Can I set the session not to timeout at all?</div><div><br></div><di=
v>
Thanks</div><div>Anirudh</div>

--20cf3079bff09e063004c8da982f--

--===============2112116081==
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: inline

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

--===============2112116081==--

From libssh2-devel-bounces@cool.haxx.se  Tue Sep  4 11:57:49 2012
Return-Path: <libssh2-devel-bounces@cool.haxx.se>
Received: from www.haxx.se (localhost.localdomain [127.0.0.1])
	by giant.haxx.se (8.14.4/8.14.4/Debian-2) with ESMTP id q849vPAO018452;
	Tue, 4 Sep 2012 11:57:43 +0200
Received: from mail-qc0-f182.google.com (mail-qc0-f182.google.com
 [209.85.216.182])
 by giant.haxx.se (8.14.4/8.14.4/Debian-2) with ESMTP id q849vM4o018425
 (version=TLSv1/SSLv3 cipher=RC4-SHA bits=128 verify=NOT)
 for <libssh2-devel@cool.haxx.se>; Tue, 4 Sep 2012 11:57:23 +0200
Received: by qcsg15 with SMTP id g15so4155474qcs.41
 for <libssh2-devel@cool.haxx.se>; Tue, 04 Sep 2012 02:57:18 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113;
 h=mime-version:sender:in-reply-to:references:date
 :x-google-sender-auth:message-id:subject:from:to:content-type;
 bh=wZU2g25qij+Dn6Kw481JyEivxEG7HNy/FTjPk4T/f1E=;
 b=l6bZHYVlkEPYsHw5QAj49CSpby0yjfcYPKX6ledgN8tybsKmMyuPbieFZGd9SK13Dj
 TSYoLTmiDwcDoZ1kSnoPjtPuLPlFoiPoHRszj5D5o6voQin0w232qV8Uab18KNqJFQGC
 UjmeJTh6bNRhKEaaHwNDbLkjuKxCCZll8q7a7jevgvQrhcBOMnruMeEg2e+PuWaqzL8t
 RwrH97wPsmk3LBXrVrcZV26SmMX00IO4CxwhncgEhsaQB2cZEeE24qZdVSKbi8JgAQem
 FpYznreUg0FdxGAPXzknR0+azJfi0HrEH70FW1wlC4c0XQGlD0d9O/gzEGzZ4Qb4H/Sd
 aadQ==
MIME-Version: 1.0
Received: by 10.224.208.73 with SMTP id gb9mr39184366qab.53.1346752638371;
 Tue, 04 Sep 2012 02:57:18 -0700 (PDT)
Received: by 10.229.181.130 with HTTP; Tue, 4 Sep 2012 02:57:18 -0700 (PDT)
In-Reply-To: <50457A33.2040905@gmail.com>
References: <50457A33.2040905@gmail.com>
Date: Tue, 4 Sep 2012 10:57:18 +0100
X-Google-Sender-Auth: RsBWMyY4EA1A6LjrQpRg3JoQAlQ
Message-ID: <CADyPeTOftwJ1-sYCTgc7q9E3Chze_k==H8vEo6k2j+F0WkThSA@mail.gmail.com>
Subject: Re: Visual C++ 2010 Express edition cannot open and convert libssh2
 win32 project file
From: Alexander Lamaison <swish@lammy.co.uk>
To: libssh2 development <libssh2-devel@cool.haxx.se>
X-BeenThere: libssh2-devel@cool.haxx.se
X-Mailman-Version: 2.1.15
Precedence: list
Reply-To: libssh2 development <libssh2-devel@cool.haxx.se>
List-Id: libssh2 development <libssh2-devel.cool.haxx.se>
List-Unsubscribe: <http://cool.haxx.se/cgi-bin/mailman/options/libssh2-devel>, 
 <mailto:libssh2-devel-request@cool.haxx.se?subject=unsubscribe>
List-Archive: <http://cool.haxx.se/pipermail/libssh2-devel/>
List-Post: <mailto:libssh2-devel@cool.haxx.se>
List-Help: <mailto:libssh2-devel-request@cool.haxx.se?subject=help>
List-Subscribe: <http://cool.haxx.se/cgi-bin/mailman/listinfo/libssh2-devel>, 
 <mailto:libssh2-devel-request@cool.haxx.se?subject=subscribe>
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Errors-To: libssh2-devel-bounces@cool.haxx.se
Sender: "libssh2-devel" <libssh2-devel-bounces@cool.haxx.se>

On 4 September 2012 04:49, Noah <n0ahz0rk@gmail.com> wrote:
> Hi,
>
> Not sure if others have this problem, but I have tried to open the
> C:\libssh2-1.4.2\win32\libssh2.dsp file (as per the instruction in Andrei
> Jakab's Using libcurl with SSH support in Visual Studio 2010 [PDF] -
> referring to the link on http://curl.haxx.se/libcurl/c/ ) with my Visual C++
> 2010 Express edition, and I do get the prompt that advises the project will
> have to be converted, but after that I get no error messages, and no project
> is open in the IDE.

I can't help you with the conversion but my advice would be to ignore
the included project files entirely as libssh2 is so easy to build on
Windows.  Here's the guide I sent round the list a little while back:

Using Visual Studio:
- Shove all the .c files in libssh2/src into an empty Win32 C++ (DLL
or Static Library) project except libgcrypt.c/openssl.c of which you
only pick the one appropriate to your crypto library.
- Add your OpenSSL or libgcrypt include directory to the project include path
- Add libssh2/include to the project include path
- Add libssh2/win32 to the project include path
- Add the appropriate crypto libraries to the project Additonal Libraries list
- Build
- Job done

Using MinGW:
I'm not confident enough to list the exact steps for this but its
basically a matter of adding the same .c files to a Makefile source
list and instructing gcc to make a DLL or static library from them.
Use Google to find the flags you need to add for those two
alternatives.

Alex

-- 
Swish - Easy SFTP for Windows Explorer (http://www.swish-sftp.org)
_______________________________________________
libssh2-devel http://cool.haxx.se/cgi-bin/mailman/listinfo/libssh2-devel

From libssh2-devel-bounces@cool.haxx.se  Tue Sep  4 12:05:52 2012
Return-Path: <libssh2-devel-bounces@cool.haxx.se>
Received: from www.haxx.se (localhost.localdomain [127.0.0.1])
	by giant.haxx.se (8.14.4/8.14.4/Debian-2) with ESMTP id q84A5oCQ026886;
	Tue, 4 Sep 2012 12:05:52 +0200
Received: from mail-qa0-f47.google.com (mail-qa0-f47.google.com
 [209.85.216.47])
 by giant.haxx.se (8.14.4/8.14.4/Debian-2) with ESMTP id q84A5lun026801
 (version=TLSv1/SSLv3 cipher=RC4-SHA bits=128 verify=NOT)
 for <libssh2-devel@cool.haxx.se>; Tue, 4 Sep 2012 12:05:48 +0200
Received: by qadc11 with SMTP id c11so2840807qad.20
 for <libssh2-devel@cool.haxx.se>; Tue, 04 Sep 2012 03:05:43 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113;
 h=mime-version:sender:in-reply-to:references:date
 :x-google-sender-auth:message-id:subject:from:to:content-type;
 bh=HruCRs0/xGIQXa8gi1VLGC7j17YGHv50IQiI8bGV0B8=;
 b=e/RgeGTX3PzEpelRFWXlEPX6lCiWTevercfCW5jRYVa3/CALlEojFBl+Kg/0bKHPS3
 8EzvoTfIvchNvJiiXxpT8qu2uLRbMu3EY7zzgESUqSwui3LMtzLL4XvwxAqLoyDwo068
 D7l4H1zA+uLIQolXiGSFf+BhpXCXplmqbrMboqsgZu6JDhdRb6e6tULn+WcTwqpcj0GL
 XXOButz64Vsjbp1GA/xeT8QHSKnBzaCBp4tXUAo8LJGcZ1l5R3I789n7LH8Gb9hGTiWS
 EOt82o/e3zuyeiSYXQyvGWStsgNIH2114pKhtnII1xxRAv62sCZO672Za4NEwWBt5Nbs
 BYdQ==
MIME-Version: 1.0
Received: by 10.224.208.73 with SMTP id gb9mr39216451qab.53.1346753143259;
 Tue, 04 Sep 2012 03:05:43 -0700 (PDT)
Received: by 10.229.181.130 with HTTP; Tue, 4 Sep 2012 03:05:43 -0700 (PDT)
In-Reply-To: <CAEKYpERrKN5tGV0aRWyE-ACaoP2boNicgJLq_uujiDGfdqD2GQ@mail.gmail.com>
References: <CAEKYpERrKN5tGV0aRWyE-ACaoP2boNicgJLq_uujiDGfdqD2GQ@mail.gmail.com>
Date: Tue, 4 Sep 2012 11:05:43 +0100
X-Google-Sender-Auth: 7Bkjk_So38pJU9otj-uHceLS_Vw
Message-ID: <CADyPeTPZfsAsPN9DgtkhOn-2DaJ6Fyjm4DeLy7gf0KTh91UC5A@mail.gmail.com>
Subject: Re: SSH timeout
From: Alexander Lamaison <swish@lammy.co.uk>
To: libssh2 development <libssh2-devel@cool.haxx.se>
X-BeenThere: libssh2-devel@cool.haxx.se
X-Mailman-Version: 2.1.15
Precedence: list
Reply-To: libssh2 development <libssh2-devel@cool.haxx.se>
List-Id: libssh2 development <libssh2-devel.cool.haxx.se>
List-Unsubscribe: <http://cool.haxx.se/cgi-bin/mailman/options/libssh2-devel>, 
 <mailto:libssh2-devel-request@cool.haxx.se?subject=unsubscribe>
List-Archive: <http://cool.haxx.se/pipermail/libssh2-devel/>
List-Post: <mailto:libssh2-devel@cool.haxx.se>
List-Help: <mailto:libssh2-devel-request@cool.haxx.se?subject=help>
List-Subscribe: <http://cool.haxx.se/cgi-bin/mailman/listinfo/libssh2-devel>, 
 <mailto:libssh2-devel-request@cool.haxx.se?subject=subscribe>
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Errors-To: libssh2-devel-bounces@cool.haxx.se
Sender: "libssh2-devel" <libssh2-devel-bounces@cool.haxx.se>

On 4 September 2012 07:44, anirudh nair <anirudh.anu01@gmail.com> wrote:
> Is it advisable to persist the SSH session object(LIBSSH2_SESSION).

By 'persist' I assume you just mean keeping the session object around
to use later rather than the usual meaning of 'persist' which means
saving to disk?

> Are there chances for the session to timeout.

Absolutely, the server is free to terminate the connection after a
period idle.  Some severs make this period quite large so timeouts
aren't such a problem.  Others, particularly embedded servers set this
to a few seconds.

> Can I set the session not to timeout at all?

No.  The server can do whatever it likes.  But, you can encourage most
servers to hold the connection open by responding to its keepalive
requests during idle time.  These get processed when you call a
libssh2 API function that reads from the channel but that's not much
use if you really intend to be idle.  I plan to add an API function
that just processes the outstanding packets but I've not found the
time.  In the mean time, calling the deprecated libssh2_poll might do
the trick.

Alex

-- 
Swish - Easy SFTP for Windows Explorer (http://www.swish-sftp.org)
_______________________________________________
libssh2-devel http://cool.haxx.se/cgi-bin/mailman/listinfo/libssh2-devel

From libssh2-devel-bounces@cool.haxx.se  Tue Sep  4 13:03:45 2012
Return-Path: <libssh2-devel-bounces@cool.haxx.se>
Received: from www.haxx.se (localhost.localdomain [127.0.0.1])
	by giant.haxx.se (8.14.4/8.14.4/Debian-2) with ESMTP id q84B3CUh007949;
	Tue, 4 Sep 2012 13:03:22 +0200
Received: from dns-factory.at (mail.dns-factory.at [194.242.35.75])
 by giant.haxx.se (8.14.4/8.14.4/Debian-2) with ESMTP id q84B3Bw8007941
 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NOT)
 for <libssh2-devel@cool.haxx.se>; Tue, 4 Sep 2012 13:03:11 +0200
Received: from [172.17.100.7] lists@gknw.net [37.201.243.102]
 by dns-factory.at with NetMail SMTP Agent $Revision: 8582 $ on Novell NetWare
 via secured & encrypted transport (TLS);
 Tue, 04 Sep 2012 13:03:01 +0200
Message-ID: <5045DFD1.2070005@gknw.net>
Date: Tue, 04 Sep 2012 13:02:41 +0200
From: Guenter <lists@gknw.net>
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; de;
 rv:1.9.2.28) Gecko/20120306 Lightning/1.0b2 Thunderbird/3.1.20
MIME-Version: 1.0
To: libssh2 development <libssh2-devel@cool.haxx.se>
Subject: Re: Visual C++ 2010 Express edition cannot open and convert libssh2
 win32 project file
References: <50457A33.2040905@gmail.com>
 <CADyPeTOftwJ1-sYCTgc7q9E3Chze_k==H8vEo6k2j+F0WkThSA@mail.gmail.com>
In-Reply-To: <CADyPeTOftwJ1-sYCTgc7q9E3Chze_k==H8vEo6k2j+F0WkThSA@mail.gmail.com>
X-MIME-Autoconverted: from quoted-printable to 8bit by giant.haxx.se id
 q84B3Bw8007941
X-BeenThere: libssh2-devel@cool.haxx.se
X-Mailman-Version: 2.1.15
Precedence: list
Reply-To: libssh2 development <libssh2-devel@cool.haxx.se>
List-Id: libssh2 development <libssh2-devel.cool.haxx.se>
List-Unsubscribe: <http://cool.haxx.se/cgi-bin/mailman/options/libssh2-devel>, 
 <mailto:libssh2-devel-request@cool.haxx.se?subject=unsubscribe>
List-Archive: <http://cool.haxx.se/pipermail/libssh2-devel/>
List-Post: <mailto:libssh2-devel@cool.haxx.se>
List-Help: <mailto:libssh2-devel-request@cool.haxx.se?subject=help>
List-Subscribe: <http://cool.haxx.se/cgi-bin/mailman/listinfo/libssh2-devel>, 
 <mailto:libssh2-devel-request@cool.haxx.se?subject=subscribe>
Content-Type: text/plain; charset="iso-8859-1"; 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 quoted-printable to 8bit by giant.haxx.se id q84B3CUh007949

Hi,
Am 04.09.2012 11:57, schrieb Alexander Lamaison:
> Using Visual Studio:
there's a NMakefile available too which should work with all MSVC 
versions; edit .\win32\config.mk and setup the paths to OpenSSL and 
Zlib, then in the root: nmake

> Using MinGW:
> I'm not confident enough to list the exact steps for this but its
set OPENSSL_PATH=...
if you want Zlib support:
set WITH_ZLIB=1
set ZLIB_PATH=...
in ./win32 folder: mingw32-make

Gün.



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

From libssh2-devel-bounces@cool.haxx.se  Tue Sep  4 13:08:17 2012
Return-Path: <libssh2-devel-bounces@cool.haxx.se>
Received: from www.haxx.se (localhost.localdomain [127.0.0.1])
	by giant.haxx.se (8.14.4/8.14.4/Debian-2) with ESMTP id q84B8GjX012829;
	Tue, 4 Sep 2012 13:08:17 +0200
Received: from mail-pz0-f54.google.com (mail-pz0-f54.google.com
 [209.85.210.54])
 by giant.haxx.se (8.14.4/8.14.4/Debian-2) with ESMTP id q84B8DxH012786
 (version=TLSv1/SSLv3 cipher=RC4-SHA bits=128 verify=NOT)
 for <libssh2-devel@cool.haxx.se>; Tue, 4 Sep 2012 13:08:14 +0200
Received: by dadr6 with SMTP id r6so3911924dad.41
 for <libssh2-devel@cool.haxx.se>; Tue, 04 Sep 2012 04:08:09 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113;
 h=message-id:date:from:user-agent:mime-version:to:subject:references
 :in-reply-to:content-type:content-transfer-encoding;
 bh=5xX/gIE8QGGQaaA8uET6KDiWqMP941mUqV4NyMUFmDM=;
 b=XahIIvAB7NFQCahLngrRPTlf44hgrrJzGym46BBBWtrVZs4RmQYTF1oCJ+pxyHEoQI
 NwviEhpL5h+lk1d9YTrflFciwL0nOavRs1L9iv4I/+4lCEPcjtfhhrde+gSvQ0kQk8N6
 a3Q9HJ47mHhBNUNUB6ITC/tb0bFnTuUGYwKNgKHWPdlW6SD7zAcczT34afgnmIur7zt+
 8QfqJKzw7S72mi7JIvRqAeE8Vw9uBhKYj6UGptHcjso29FRLGz8niRtGgPPdliZjZUxB
 JxEQ/8hcGLPN6gSyF0OU7VSWAbWgJgFYvJ7ydqt+jeK014uP0/I7vMDV2sEP39Xlwi3v
 z8xw==
Received: by 10.68.129.164 with SMTP id nx4mr44844181pbb.28.1346756889107;
 Tue, 04 Sep 2012 04:08:09 -0700 (PDT)
Received: from [127.0.0.1] ([101.161.243.108])
 by mx.google.com with ESMTPS id kt1sm11989638pbc.45.2012.09.04.04.08.07
 (version=TLSv1/SSLv3 cipher=OTHER);
 Tue, 04 Sep 2012 04:08:08 -0700 (PDT)
Message-ID: <5045E113.2030506@gmail.com>
Date: Tue, 04 Sep 2012 21:08:03 +1000
From: Noah <n0ahz0rk@gmail.com>
User-Agent: Mozilla/5.0 (Windows NT 6.1;
 rv:15.0) Gecko/20120824 Thunderbird/15.0
MIME-Version: 1.0
To: libssh2 development <libssh2-devel@cool.haxx.se>
Subject: Re: Visual C++ 2010 Express edition cannot open and convert libssh2
 win32 project file
References: <50457A33.2040905@gmail.com>
 <CADyPeTOftwJ1-sYCTgc7q9E3Chze_k==H8vEo6k2j+F0WkThSA@mail.gmail.com>
In-Reply-To: <CADyPeTOftwJ1-sYCTgc7q9E3Chze_k==H8vEo6k2j+F0WkThSA@mail.gmail.com>
X-BeenThere: libssh2-devel@cool.haxx.se
X-Mailman-Version: 2.1.15
Precedence: list
Reply-To: libssh2 development <libssh2-devel@cool.haxx.se>
List-Id: libssh2 development <libssh2-devel.cool.haxx.se>
List-Unsubscribe: <http://cool.haxx.se/cgi-bin/mailman/options/libssh2-devel>, 
 <mailto:libssh2-devel-request@cool.haxx.se?subject=unsubscribe>
List-Archive: <http://cool.haxx.se/pipermail/libssh2-devel/>
List-Post: <mailto:libssh2-devel@cool.haxx.se>
List-Help: <mailto:libssh2-devel-request@cool.haxx.se?subject=help>
List-Subscribe: <http://cool.haxx.se/cgi-bin/mailman/listinfo/libssh2-devel>, 
 <mailto:libssh2-devel-request@cool.haxx.se?subject=subscribe>
Content-Type: multipart/mixed; boundary="===============0694470758=="
Errors-To: libssh2-devel-bounces@cool.haxx.se
Sender: "libssh2-devel" <libssh2-devel-bounces@cool.haxx.se>

--===============0694470758==
Content-Type: text/html; charset=ISO-8859-1
Content-Transfer-Encoding: 7bit

<html>
  <head>
    <meta content="text/html; charset=ISO-8859-1"
      http-equiv="Content-Type">
  </head>
  <body bgcolor="#FFFFFF" text="#000066">
    <font size="-1"><font face="Helvetica, Arial, sans-serif">Thanks
        Alex, works perfectly, and I have been able to build libcurl as
        per the guide I referred to before with the libssh2.lib
        generated via the method you described below.<br>
        <br>
        Just in case there are any other noobs like me using visual c++
        express, you can create a static library project by selecting a
        win32 console app as the main template (as there is no template
        for static library), then on the subsequent screen, you will see
        a radio button option to select a static library instead of the
        console app.<br>
        <br>
        <br>
        <br>
        <br>
        <br>
      </font></font>
    <div class="moz-cite-prefix">On 4/09/2012 7:57 PM, Alexander
      Lamaison wrote:<br>
    </div>
    <blockquote
cite="mid:CADyPeTOftwJ1-sYCTgc7q9E3Chze_k==H8vEo6k2j+F0WkThSA@mail.gmail.com"
      type="cite">
      <pre wrap="">On 4 September 2012 04:49, Noah <a class="moz-txt-link-rfc2396E" href="mailto:n0ahz0rk@gmail.com">&lt;n0ahz0rk@gmail.com&gt;</a> wrote:
</pre>
      <blockquote type="cite">
        <pre wrap="">Hi,

Not sure if others have this problem, but I have tried to open the
C:\libssh2-1.4.2\win32\libssh2.dsp file (as per the instruction in Andrei
Jakab's Using libcurl with SSH support in Visual Studio 2010 [PDF] -
referring to the link on <a class="moz-txt-link-freetext" href="http://curl.haxx.se/libcurl/c/">http://curl.haxx.se/libcurl/c/</a> ) with my Visual C++
2010 Express edition, and I do get the prompt that advises the project will
have to be converted, but after that I get no error messages, and no project
is open in the IDE.
</pre>
      </blockquote>
      <pre wrap="">
I can't help you with the conversion but my advice would be to ignore
the included project files entirely as libssh2 is so easy to build on
Windows.  Here's the guide I sent round the list a little while back:

Using Visual Studio:
- Shove all the .c files in libssh2/src into an empty Win32 C++ (DLL
or Static Library) project except libgcrypt.c/openssl.c of which you
only pick the one appropriate to your crypto library.
- Add your OpenSSL or libgcrypt include directory to the project include path
- Add libssh2/include to the project include path
- Add libssh2/win32 to the project include path
- Add the appropriate crypto libraries to the project Additonal Libraries list
- Build
- Job done

Using MinGW:
I'm not confident enough to list the exact steps for this but its
basically a matter of adding the same .c files to a Makefile source
list and instructing gcc to make a DLL or static library from them.
Use Google to find the flags you need to add for those two
alternatives.

Alex

</pre>
    </blockquote>
    <br>
  </body>
</html>

--===============0694470758==
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: inline

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

--===============0694470758==--

From libssh2-devel-bounces@cool.haxx.se  Mon Sep 10 11:06:35 2012
Return-Path: <libssh2-devel-bounces@cool.haxx.se>
Received: from www.haxx.se (localhost.localdomain [127.0.0.1])
	by giant.haxx.se (8.14.4/8.14.4/Debian-2) with ESMTP id q8A961p4020296;
	Mon, 10 Sep 2012 11:06:27 +0200
Received: from earth.stuge.se (earth.stuge.se [212.116.89.126])
 by giant.haxx.se (8.14.4/8.14.4/Debian-2) with ESMTP id q8A95xVU020283
 for <libssh2-devel@cool.haxx.se>; Mon, 10 Sep 2012 11:06:00 +0200
Received: (qmail 12140 invoked from network); 10 Sep 2012 09:05:56 -0000
Received: from unknown (HELO earth.stuge.se) (127.0.0.1)
 by localhost with SMTP; 10 Sep 2012 09:05:56 -0000
MIME-Version: 1.0
From: "libssh2 Trac" <trac@libssh2.stuge.se>
X-Trac-Version: 1.0dev
Precedence: bulk
Cc: libssh2-devel@cool.haxx.se
Auto-Submitted: auto-generated
X-Mailer: Trac 1.0dev, by Edgewall Software
X-Trac-Project: libssh2
Date: Mon, 10 Sep 2012 09:05:56 -0000
X-URL: https://trac.libssh2.org/
Subject: [libssh2] #248: A small patch to handle private key in memory
X-Trac-Ticket-URL: https://trac.libssh2.org/ticket/248
Message-ID: <043.48c1af7833dd360b0e68e04fd78bedf2@libssh2.stuge.se>
X-Trac-Ticket-ID: 248
X-MIME-Autoconverted: from base64 to 8bit by giant.haxx.se id q8A95xVU020283
X-BeenThere: libssh2-devel@cool.haxx.se
X-Mailman-Version: 2.1.15
Reply-To: trac@libssh2.stuge.se,
        libssh2 development <libssh2-devel@cool.haxx.se>
List-Id: libssh2 development <libssh2-devel.cool.haxx.se>
List-Unsubscribe: <http://cool.haxx.se/cgi-bin/mailman/options/libssh2-devel>, 
 <mailto:libssh2-devel-request@cool.haxx.se?subject=unsubscribe>
List-Archive: <http://cool.haxx.se/pipermail/libssh2-devel/>
List-Post: <mailto:libssh2-devel@cool.haxx.se>
List-Help: <mailto:libssh2-devel-request@cool.haxx.se?subject=help>
List-Subscribe: <http://cool.haxx.se/cgi-bin/mailman/listinfo/libssh2-devel>, 
 <mailto:libssh2-devel-request@cool.haxx.se?subject=subscribe>
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Errors-To: libssh2-devel-bounces@cool.haxx.se
Sender: "libssh2-devel" <libssh2-devel-bounces@cool.haxx.se>

#248: A small patch to handle private key in memory
-------------------------+--------------------
 Reporter:  intron       |       Owner:
     Type:  enhancement  |      Status:  new
 Priority:  normal       |   Milestone:  1.4.3
Component:  API          |     Version:  1.4.2
 Keywords:               |  Blocked By:
   Blocks:               |
-------------------------+--------------------
 Here is my small patch to handle private key in memory:
     http://ftp.intron.ac/tmp/openssl.c.diff
 This feature is useful to work with a private key stored in a
 USB key. I wish that this patch was useful to this project.

 With this patch, if the argument "privatekey" of
 libssh2_userauth_publickey_fromfile_ex() points to a string
 starting with "mem://", the contents in the string after "mem://"
 will be interpreted as a private key. Otherwise, the full contents
 of "privatekey" is interpreted as a filename of private key.

 Example:

   char usbkeybuf[4096], pvk[4096];

   /* Read a private key from USB key to usbkeybuf[] */
   ...

   strcpy(pvk, "mem://");
   strcat(pvk, usbkeybuf);

   /*
      pvk now contains
        "mem://-----BEGIN RSA PRIVATE KEY-----\n"
           ...
        "-----END RSA PRIVATE KEY-----"
    */

   nret = libssh2_userauth_publickey_fromfile(session,
       username, NULL, pvk, NULL);

-- 
Ticket URL: <https://trac.libssh2.org/ticket/248>
libssh2 <https://trac.libssh2.org/>
C library for writing portable SSH2 clients

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

From libssh2-devel-bounces@cool.haxx.se  Mon Sep 10 11:14:29 2012
Return-Path: <libssh2-devel-bounces@cool.haxx.se>
Received: from www.haxx.se (localhost.localdomain [127.0.0.1])
	by giant.haxx.se (8.14.4/8.14.4/Debian-2) with ESMTP id q8A9EPUM025565;
	Mon, 10 Sep 2012 11:14:28 +0200
Received: from earth.stuge.se (earth.stuge.se [212.116.89.126])
 by giant.haxx.se (8.14.4/8.14.4/Debian-2) with ESMTP id q8A9EOoQ025558
 for <libssh2-devel@cool.haxx.se>; Mon, 10 Sep 2012 11:14:24 +0200
Received: (qmail 14251 invoked from network); 10 Sep 2012 09:14:23 -0000
Received: from unknown (HELO earth.stuge.se) (127.0.0.1)
 by localhost with SMTP; 10 Sep 2012 09:14:23 -0000
MIME-Version: 1.0
From: "libssh2 Trac" <trac@libssh2.stuge.se>
X-Trac-Version: 1.0dev
Precedence: bulk
Cc: libssh2-devel@cool.haxx.se
Auto-Submitted: auto-generated
X-Mailer: Trac 1.0dev, by Edgewall Software
X-Trac-Project: libssh2
Date: Mon, 10 Sep 2012 09:14:23 -0000
X-URL: https://trac.libssh2.org/
Subject: Re: [libssh2] #248: A small patch to handle private key in memory
X-Trac-Ticket-URL: https://trac.libssh2.org/ticket/248#comment:1
Message-ID: <058.9c12b5a7a3cfd02f0299f4c7f317223f@libssh2.stuge.se>
References: <043.48c1af7833dd360b0e68e04fd78bedf2@libssh2.stuge.se>
X-Trac-Ticket-ID: 248
In-Reply-To: <043.48c1af7833dd360b0e68e04fd78bedf2@libssh2.stuge.se>
X-MIME-Autoconverted: from base64 to 8bit by giant.haxx.se id q8A9EOoQ025558
X-BeenThere: libssh2-devel@cool.haxx.se
X-Mailman-Version: 2.1.15
Reply-To: trac@libssh2.stuge.se,
        libssh2 development <libssh2-devel@cool.haxx.se>
List-Id: libssh2 development <libssh2-devel.cool.haxx.se>
List-Unsubscribe: <http://cool.haxx.se/cgi-bin/mailman/options/libssh2-devel>, 
 <mailto:libssh2-devel-request@cool.haxx.se?subject=unsubscribe>
List-Archive: <http://cool.haxx.se/pipermail/libssh2-devel/>
List-Post: <mailto:libssh2-devel@cool.haxx.se>
List-Help: <mailto:libssh2-devel-request@cool.haxx.se?subject=help>
List-Subscribe: <http://cool.haxx.se/cgi-bin/mailman/listinfo/libssh2-devel>, 
 <mailto:libssh2-devel-request@cool.haxx.se?subject=subscribe>
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Errors-To: libssh2-devel-bounces@cool.haxx.se
Sender: "libssh2-devel" <libssh2-devel-bounces@cool.haxx.se>

#248: A small patch to handle private key in memory
--------------------------+-------------------
  Reporter:  intron       |      Owner:
      Type:  enhancement  |     Status:  new
  Priority:  normal       |  Milestone:  1.4.3
 Component:  API          |    Version:  1.4.2
Resolution:               |   Keywords:
Blocked By:               |     Blocks:
--------------------------+-------------------

Comment (by alamaison):

 I'd like to see this feature in libssh2 but as a new API function, not
 using this magic string.  In fact,  libssh2_userauth_publickey might give
 you all you need to implement this without modifying libssh2 at all.
 Though, of course, it would be nicer to have it included in the API for
 others to benefit.

 Also, any solution should address libgcrypt as well.

-- 
Ticket URL: <https://trac.libssh2.org/ticket/248#comment:1>
libssh2 <https://trac.libssh2.org/>
C library for writing portable SSH2 clients

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

From libssh2-devel-bounces@cool.haxx.se  Mon Sep 10 14:23:29 2012
Return-Path: <libssh2-devel-bounces@cool.haxx.se>
Received: from www.haxx.se (localhost.localdomain [127.0.0.1])
	by giant.haxx.se (8.14.4/8.14.4/Debian-2) with ESMTP id q8ACMhQH030718;
	Mon, 10 Sep 2012 14:23:02 +0200
Received: from mail-vb0-f54.google.com (mail-vb0-f54.google.com
 [209.85.212.54])
 by giant.haxx.se (8.14.4/8.14.4/Debian-2) with ESMTP id q8ACMeBr030586
 (version=TLSv1/SSLv3 cipher=RC4-SHA bits=128 verify=NOT)
 for <libssh2-devel@cool.haxx.se>; Mon, 10 Sep 2012 14:22:41 +0200
Received: by vbmv11 with SMTP id v11so2638766vbm.41
 for <libssh2-devel@cool.haxx.se>; Mon, 10 Sep 2012 05:22:34 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113;
 h=mime-version:in-reply-to:references:date:message-id:subject:from:to
 :content-type; bh=nL2KK1iOJFWB/w7b9/igehEP9QL2stDIjD22wn9/iD8=;
 b=UV6XZCDAFx1GnfiPg6BGp59jJTTek85+8N/cC+aILGIOjghfqLiJ+qa1qQHFjgCF3m
 UwHNV7ZbJcKApArUGFhMy7Lv9G3KJXqPBMItQD8lLIMwlqYlebjIN84PmD+p0JbDZ5mf
 k0R/PJ4ccgHViyDIOvM6GWkMc6buvwGS4B8GLjUWnBMnLU5x6RX+FqZezQUmJhArcK3Z
 GlGC6sYSsS6xczVXLpUMUIq28+cvZO0TjQsrjDwnknDoyK1NR/YYyWbVFx8DOwTz13Gy
 aTtD6vXJL/FuI65BnCROFAgV4jyApU9tljPBLcmfZNiBao+S11KX5Iovt7iHb5Iepdbu
 OQpA==
MIME-Version: 1.0
Received: by 10.52.24.103 with SMTP id t7mr15592187vdf.84.1347279754717; Mon,
 10 Sep 2012 05:22:34 -0700 (PDT)
Received: by 10.58.128.228 with HTTP; Mon, 10 Sep 2012 05:22:34 -0700 (PDT)
In-Reply-To: <058.9c12b5a7a3cfd02f0299f4c7f317223f@libssh2.stuge.se>
References: <043.48c1af7833dd360b0e68e04fd78bedf2@libssh2.stuge.se>
 <058.9c12b5a7a3cfd02f0299f4c7f317223f@libssh2.stuge.se>
Date: Mon, 10 Sep 2012 08:22:34 -0400
Message-ID: <CAFnqFY2O4er-sZ5bs--te36PXq=L8gcCADs3up0Ar8sE9qyTmw@mail.gmail.com>
Subject: Re: [libssh2] #248: A small patch to handle private key in memory
From: Joe Turpin <joe.turpin@gmail.com>
To: trac@libssh2.stuge.se, libssh2 development <libssh2-devel@cool.haxx.se>
X-BeenThere: libssh2-devel@cool.haxx.se
X-Mailman-Version: 2.1.15
Precedence: list
Reply-To: libssh2 development <libssh2-devel@cool.haxx.se>
List-Id: libssh2 development <libssh2-devel.cool.haxx.se>
List-Unsubscribe: <http://cool.haxx.se/cgi-bin/mailman/options/libssh2-devel>, 
 <mailto:libssh2-devel-request@cool.haxx.se?subject=unsubscribe>
List-Archive: <http://cool.haxx.se/pipermail/libssh2-devel/>
List-Post: <mailto:libssh2-devel@cool.haxx.se>
List-Help: <mailto:libssh2-devel-request@cool.haxx.se?subject=help>
List-Subscribe: <http://cool.haxx.se/cgi-bin/mailman/listinfo/libssh2-devel>, 
 <mailto:libssh2-devel-request@cool.haxx.se?subject=subscribe>
Content-Type: multipart/mixed; boundary="===============1459978928=="
Errors-To: libssh2-devel-bounces@cool.haxx.se
Sender: "libssh2-devel" <libssh2-devel-bounces@cool.haxx.se>

--===============1459978928==
Content-Type: multipart/alternative; boundary=20cf30781330316a1004c958034e

--20cf30781330316a1004c958034e
Content-Type: text/plain; charset=ISO-8859-1

FYI, I was seeking the same functionality not too long ago. I sent in a
patch back in March to the list:
http://www.libssh2.org/mail/libssh2-devel-archive-2012-03/0134.shtml


On Mon, Sep 10, 2012 at 5:14 AM, libssh2 Trac <trac@libssh2.stuge.se> wrote:

> #248: A small patch to handle private key in memory
> --------------------------+-------------------
>   Reporter:  intron       |      Owner:
>       Type:  enhancement  |     Status:  new
>   Priority:  normal       |  Milestone:  1.4.3
>  Component:  API          |    Version:  1.4.2
> Resolution:               |   Keywords:
> Blocked By:               |     Blocks:
> --------------------------+-------------------
>
> Comment (by alamaison):
>
>  I'd like to see this feature in libssh2 but as a new API function, not
>  using this magic string.  In fact,  libssh2_userauth_publickey might give
>  you all you need to implement this without modifying libssh2 at all.
>  Though, of course, it would be nicer to have it included in the API for
>  others to benefit.
>
>  Also, any solution should address libgcrypt as well.
>
> --
> Ticket URL: <https://trac.libssh2.org/ticket/248#comment:1>
> libssh2 <https://trac.libssh2.org/>
> C library for writing portable SSH2 clients
>
> _______________________________________________
> libssh2-devel http://cool.haxx.se/cgi-bin/mailman/listinfo/libssh2-devel
>

--20cf30781330316a1004c958034e
Content-Type: text/html; charset=ISO-8859-1
Content-Transfer-Encoding: quoted-printable

FYI, I was seeking the same functionality not too long ago. I sent in a pat=
ch back in March to the list:<div><a href=3D"http://www.libssh2.org/mail/li=
bssh2-devel-archive-2012-03/0134.shtml">http://www.libssh2.org/mail/libssh2=
-devel-archive-2012-03/0134.shtml</a></div>
<div><br><br><div class=3D"gmail_quote">On Mon, Sep 10, 2012 at 5:14 AM, li=
bssh2 Trac <span dir=3D"ltr">&lt;<a href=3D"mailto:trac@libssh2.stuge.se" t=
arget=3D"_blank">trac@libssh2.stuge.se</a>&gt;</span> wrote:<br><blockquote=
 class=3D"gmail_quote" style=3D"margin:0 0 0 .8ex;border-left:1px #ccc soli=
d;padding-left:1ex">
<div class=3D"im">#248: A small patch to handle private key in memory<br>
</div>--------------------------+-------------------<br>
<div class=3D"im">=A0 Reporter: =A0intron =A0 =A0 =A0 | =A0 =A0 =A0Owner:<b=
r>
=A0 =A0 =A0 Type: =A0enhancement =A0| =A0 =A0 Status: =A0new<br>
=A0 Priority: =A0normal =A0 =A0 =A0 | =A0Milestone: =A01.4.3<br>
=A0Component: =A0API =A0 =A0 =A0 =A0 =A0| =A0 =A0Version: =A01.4.2<br>
</div>Resolution: =A0 =A0 =A0 =A0 =A0 =A0 =A0 | =A0 Keywords:<br>
Blocked By: =A0 =A0 =A0 =A0 =A0 =A0 =A0 | =A0 =A0 Blocks:<br>
--------------------------+-------------------<br>
<br>
Comment (by alamaison):<br>
<br>
=A0I&#39;d like to see this feature in libssh2 but as a new API function, n=
ot<br>
=A0using this magic string. =A0In fact, =A0libssh2_userauth_publickey might=
 give<br>
=A0you all you need to implement this without modifying libssh2 at all.<br>
=A0Though, of course, it would be nicer to have it included in the API for<=
br>
=A0others to benefit.<br>
<br>
=A0Also, any solution should address libgcrypt as well.<br>
<span class=3D"HOEnZb"><font color=3D"#888888"><br>
--<br>
Ticket URL: &lt;<a href=3D"https://trac.libssh2.org/ticket/248#comment:1" t=
arget=3D"_blank">https://trac.libssh2.org/ticket/248#comment:1</a>&gt;<br>
</font></span><div class=3D"HOEnZb"><div class=3D"h5">libssh2 &lt;<a href=
=3D"https://trac.libssh2.org/" target=3D"_blank">https://trac.libssh2.org/<=
/a>&gt;<br>
C library for writing portable SSH2 clients<br>
<br>
_______________________________________________<br>
libssh2-devel <a href=3D"http://cool.haxx.se/cgi-bin/mailman/listinfo/libss=
h2-devel" target=3D"_blank">http://cool.haxx.se/cgi-bin/mailman/listinfo/li=
bssh2-devel</a><br>
</div></div></blockquote></div><br></div>

--20cf30781330316a1004c958034e--

--===============1459978928==
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: inline

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

--===============1459978928==--

From libssh2-devel-bounces@cool.haxx.se  Mon Sep 10 14:42:17 2012
Return-Path: <libssh2-devel-bounces@cool.haxx.se>
Received: from www.haxx.se (localhost.localdomain [127.0.0.1])
	by giant.haxx.se (8.14.4/8.14.4/Debian-2) with ESMTP id q8ACg8ij018375;
	Mon, 10 Sep 2012 14:42:14 +0200
Received: from mail-qc0-f182.google.com (mail-qc0-f182.google.com
 [209.85.216.182])
 by giant.haxx.se (8.14.4/8.14.4/Debian-2) with ESMTP id q8ACg5FG018176
 (version=TLSv1/SSLv3 cipher=RC4-SHA bits=128 verify=NOT)
 for <libssh2-devel@cool.haxx.se>; Mon, 10 Sep 2012 14:42:06 +0200
Received: by qcsg15 with SMTP id g15so1127581qcs.41
 for <libssh2-devel@cool.haxx.se>; Mon, 10 Sep 2012 05:42:01 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113;
 h=mime-version:sender:in-reply-to:references:date
 :x-google-sender-auth:message-id:subject:from:to:content-type;
 bh=hdUvqjnejHEjcgSKWDE/kQHNJ7ykEDlej/BypDo9tCQ=;
 b=ZsxwETXOd0ETmSEUTj0tqGxR0dttVMi+G0LxSxEBtm84vIXbUMa8n65vHv76XEa+GC
 M3euZ4XJLEfO+UMZuuJOiFEUXotvUtI57dRpGRO4qtlEOCyffftOWKMrdkddAdNs6DTM
 qSKuHwTt4HYb75qofDwPLFhsmU6+XgN4ce6R9bueCq2/CKPQXfkXLPFoncsL0SG22Fvi
 rq7825NUqLxzahmfsbomCf1kAa30ngHivLae3o5Ijgjfi+qK+pagJO0SNrZY8f7Mkgas
 uwXq1J7Vs3y1j4oxyw/O82yjQPyyJBvnjrczFOAxgRq0w6bycxFKVUTTFHpp2chzCInG
 aT3A==
MIME-Version: 1.0
Received: by 10.229.135.213 with SMTP id o21mr3743744qct.59.1347280920945;
 Mon, 10 Sep 2012 05:42:00 -0700 (PDT)
Received: by 10.229.181.130 with HTTP; Mon, 10 Sep 2012 05:42:00 -0700 (PDT)
In-Reply-To: <CAFnqFY2O4er-sZ5bs--te36PXq=L8gcCADs3up0Ar8sE9qyTmw@mail.gmail.com>
References: <043.48c1af7833dd360b0e68e04fd78bedf2@libssh2.stuge.se>
 <058.9c12b5a7a3cfd02f0299f4c7f317223f@libssh2.stuge.se>
 <CAFnqFY2O4er-sZ5bs--te36PXq=L8gcCADs3up0Ar8sE9qyTmw@mail.gmail.com>
Date: Mon, 10 Sep 2012 13:42:00 +0100
X-Google-Sender-Auth: CzNm8Bj6dudYOiirCfVURCEOPR4
Message-ID: <CADyPeTPNPpCqTiaTthOqr4y-cnEkHAfQrLfhdHhWWcMXocULyw@mail.gmail.com>
Subject: Re: [libssh2] #248: A small patch to handle private key in memory
From: Alexander Lamaison <swish@lammy.co.uk>
To: libssh2 development <libssh2-devel@cool.haxx.se>
X-BeenThere: libssh2-devel@cool.haxx.se
X-Mailman-Version: 2.1.15
Precedence: list
Reply-To: libssh2 development <libssh2-devel@cool.haxx.se>
List-Id: libssh2 development <libssh2-devel.cool.haxx.se>
List-Unsubscribe: <http://cool.haxx.se/cgi-bin/mailman/options/libssh2-devel>, 
 <mailto:libssh2-devel-request@cool.haxx.se?subject=unsubscribe>
List-Archive: <http://cool.haxx.se/pipermail/libssh2-devel/>
List-Post: <mailto:libssh2-devel@cool.haxx.se>
List-Help: <mailto:libssh2-devel-request@cool.haxx.se?subject=help>
List-Subscribe: <http://cool.haxx.se/cgi-bin/mailman/listinfo/libssh2-devel>, 
 <mailto:libssh2-devel-request@cool.haxx.se?subject=subscribe>
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Errors-To: libssh2-devel-bounces@cool.haxx.se
Sender: "libssh2-devel" <libssh2-devel-bounces@cool.haxx.se>

>>  I'd like to see this feature in libssh2 but as a new API function, not
>>  using this magic string.  In fact,  libssh2_userauth_publickey might give
>>  you all you need to implement this without modifying libssh2 at all.
>>  Though, of course, it would be nicer to have it included in the API for
>>  others to benefit.
>>
>>  Also, any solution should address libgcrypt as well.

On 10 September 2012 13:22, Joe Turpin <joe.turpin@gmail.com> wrote:
> FYI, I was seeking the same functionality not too long ago. I sent in a
> patch back in March to the list:
> http://www.libssh2.org/mail/libssh2-devel-archive-2012-03/0134.shtml

Indeed you did.  Did anyone review it or did it get lost in the list?

If not already done, could someone else review this patch (Dan?
Peter?) I've no time to read anything till October :(

From a quick skim, it seems like it duplicates a lot of code, no?

-- 
Swish - Easy SFTP for Windows Explorer (http://www.swish-sftp.org)
_______________________________________________
libssh2-devel http://cool.haxx.se/cgi-bin/mailman/listinfo/libssh2-devel

From libssh2-devel-bounces@cool.haxx.se  Mon Sep 10 16:32:47 2012
Return-Path: <libssh2-devel-bounces@cool.haxx.se>
Received: from www.haxx.se (localhost.localdomain [127.0.0.1])
	by giant.haxx.se (8.14.4/8.14.4/Debian-2) with ESMTP id q8AEWUJI006090;
	Mon, 10 Sep 2012 16:32:44 +0200
Received: from earth.stuge.se (earth.stuge.se [212.116.89.126])
 by giant.haxx.se (8.14.4/8.14.4/Debian-2) with ESMTP id q8AEWSXv006072
 for <libssh2-devel@cool.haxx.se>; Mon, 10 Sep 2012 16:32:28 +0200
Received: (qmail 7643 invoked from network); 10 Sep 2012 14:32:26 -0000
Received: from unknown (HELO earth.stuge.se) (127.0.0.1)
 by localhost with SMTP; 10 Sep 2012 14:32:26 -0000
MIME-Version: 1.0
From: "libssh2 Trac" <trac@libssh2.stuge.se>
X-Trac-Version: 1.0dev
Precedence: bulk
Cc: libssh2-devel@cool.haxx.se
Auto-Submitted: auto-generated
X-Mailer: Trac 1.0dev, by Edgewall Software
X-Trac-Project: libssh2
Date: Mon, 10 Sep 2012 14:32:26 -0000
X-URL: https://trac.libssh2.org/
Subject: Re: [libssh2] #248: A small patch to handle private key in memory
X-Trac-Ticket-URL: https://trac.libssh2.org/ticket/248#comment:2
Message-ID: <058.81c86867ce6642de66980362dd4a6398@libssh2.stuge.se>
References: <043.48c1af7833dd360b0e68e04fd78bedf2@libssh2.stuge.se>
X-Trac-Ticket-ID: 248
In-Reply-To: <043.48c1af7833dd360b0e68e04fd78bedf2@libssh2.stuge.se>
X-MIME-Autoconverted: from base64 to 8bit by giant.haxx.se id q8AEWSXv006072
X-BeenThere: libssh2-devel@cool.haxx.se
X-Mailman-Version: 2.1.15
Reply-To: trac@libssh2.stuge.se,
        libssh2 development <libssh2-devel@cool.haxx.se>
List-Id: libssh2 development <libssh2-devel.cool.haxx.se>
List-Unsubscribe: <http://cool.haxx.se/cgi-bin/mailman/options/libssh2-devel>, 
 <mailto:libssh2-devel-request@cool.haxx.se?subject=unsubscribe>
List-Archive: <http://cool.haxx.se/pipermail/libssh2-devel/>
List-Post: <mailto:libssh2-devel@cool.haxx.se>
List-Help: <mailto:libssh2-devel-request@cool.haxx.se?subject=help>
List-Subscribe: <http://cool.haxx.se/cgi-bin/mailman/listinfo/libssh2-devel>, 
 <mailto:libssh2-devel-request@cool.haxx.se?subject=subscribe>
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Errors-To: libssh2-devel-bounces@cool.haxx.se
Sender: "libssh2-devel" <libssh2-devel-bounces@cool.haxx.se>

#248: A small patch to handle private key in memory
--------------------------+-------------------
  Reporter:  intron       |      Owner:
      Type:  enhancement  |     Status:  new
  Priority:  normal       |  Milestone:  1.4.3
 Component:  API          |    Version:  1.4.2
Resolution:               |   Keywords:
Blocked By:               |     Blocks:
--------------------------+-------------------

Comment (by intron):

 To handle private key in memory with libssh2_userauth_publickey() means
 re-implementing sign_fromfile(). I believe that it is quite easy to you,
 a group of SSH experts. But it is difficult to many of others as well.

-- 
Ticket URL: <https://trac.libssh2.org/ticket/248#comment:2>
libssh2 <https://trac.libssh2.org/>
C library for writing portable SSH2 clients

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

From libssh2-devel-bounces@cool.haxx.se  Mon Sep 10 16:35:18 2012
Return-Path: <libssh2-devel-bounces@cool.haxx.se>
Received: from www.haxx.se (localhost.localdomain [127.0.0.1])
	by giant.haxx.se (8.14.4/8.14.4/Debian-2) with ESMTP id q8AEZHsV008437;
	Mon, 10 Sep 2012 16:35:18 +0200
Received: from earth.stuge.se (earth.stuge.se [212.116.89.126])
 by giant.haxx.se (8.14.4/8.14.4/Debian-2) with ESMTP id q8AEZG7u008422
 for <libssh2-devel@cool.haxx.se>; Mon, 10 Sep 2012 16:35:16 +0200
Received: (qmail 8283 invoked from network); 10 Sep 2012 14:35:16 -0000
Received: from unknown (HELO earth.stuge.se) (127.0.0.1)
 by localhost with SMTP; 10 Sep 2012 14:35:16 -0000
MIME-Version: 1.0
From: "libssh2 Trac" <trac@libssh2.stuge.se>
X-Trac-Version: 1.0dev
Precedence: bulk
Cc: libssh2-devel@cool.haxx.se
Auto-Submitted: auto-generated
X-Mailer: Trac 1.0dev, by Edgewall Software
X-Trac-Project: libssh2
Date: Mon, 10 Sep 2012 14:35:16 -0000
X-URL: https://trac.libssh2.org/
Subject: Re: [libssh2] #248: A small patch to handle private key in memory
X-Trac-Ticket-URL: https://trac.libssh2.org/ticket/248#comment:3
Message-ID: <058.8905a3a03433dd19492b392e1e32348d@libssh2.stuge.se>
References: <043.48c1af7833dd360b0e68e04fd78bedf2@libssh2.stuge.se>
X-Trac-Ticket-ID: 248
In-Reply-To: <043.48c1af7833dd360b0e68e04fd78bedf2@libssh2.stuge.se>
X-MIME-Autoconverted: from base64 to 8bit by giant.haxx.se id q8AEZG7u008422
X-BeenThere: libssh2-devel@cool.haxx.se
X-Mailman-Version: 2.1.15
Reply-To: trac@libssh2.stuge.se,
        libssh2 development <libssh2-devel@cool.haxx.se>
List-Id: libssh2 development <libssh2-devel.cool.haxx.se>
List-Unsubscribe: <http://cool.haxx.se/cgi-bin/mailman/options/libssh2-devel>, 
 <mailto:libssh2-devel-request@cool.haxx.se?subject=unsubscribe>
List-Archive: <http://cool.haxx.se/pipermail/libssh2-devel/>
List-Post: <mailto:libssh2-devel@cool.haxx.se>
List-Help: <mailto:libssh2-devel-request@cool.haxx.se?subject=help>
List-Subscribe: <http://cool.haxx.se/cgi-bin/mailman/listinfo/libssh2-devel>, 
 <mailto:libssh2-devel-request@cool.haxx.se?subject=subscribe>
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Errors-To: libssh2-devel-bounces@cool.haxx.se
Sender: "libssh2-devel" <libssh2-devel-bounces@cool.haxx.se>

#248: A small patch to handle private key in memory
--------------------------+-------------------
  Reporter:  intron       |      Owner:
      Type:  enhancement  |     Status:  new
  Priority:  normal       |  Milestone:  1.4.3
 Component:  API          |    Version:  1.4.2
Resolution:               |   Keywords:
Blocked By:               |     Blocks:
--------------------------+-------------------

Comment (by alamaison):

 Replying to [comment:2 intron]:
 > To handle private key in memory with libssh2_userauth_publickey() means
 > re-implementing sign_fromfile(). I believe that it is quite easy to you,
 > a group of SSH experts. But it is difficult to many of others as well.

 Alas, `sign_fromfile` is a mystery to me too.  However, if you add a new
 API function you can you not just reuse the version used by
 `libssh2_userauth_publickey_fromfile_ex`?

-- 
Ticket URL: <https://trac.libssh2.org/ticket/248#comment:3>
libssh2 <https://trac.libssh2.org/>
C library for writing portable SSH2 clients

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

From libssh2-devel-bounces@cool.haxx.se  Tue Sep 11 09:56:31 2012
Return-Path: <libssh2-devel-bounces@cool.haxx.se>
Received: from www.haxx.se (localhost.localdomain [127.0.0.1])
	by giant.haxx.se (8.14.4/8.14.4/Debian-2) with ESMTP id q8B7tuJk031262;
	Tue, 11 Sep 2012 09:56:23 +0200
Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28])
 by giant.haxx.se (8.14.4/8.14.4/Debian-2) with ESMTP id q8B7trsN031230
 for <libssh2-devel@cool.haxx.se>; Tue, 11 Sep 2012 09:55:54 +0200
Received: from int-mx09.intmail.prod.int.phx2.redhat.com
 (int-mx09.intmail.prod.int.phx2.redhat.com [10.5.11.22])
 by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id q8B7trvx029200
 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK)
 for <libssh2-devel@cool.haxx.se>; Tue, 11 Sep 2012 03:55:53 -0400
Received: from kdudka.brq.redhat.com (kdudka.brq.redhat.com [10.34.4.67])
 by int-mx09.intmail.prod.int.phx2.redhat.com (8.14.4/8.14.4) with ESMTP id
 q8B7tptU029761; Tue, 11 Sep 2012 03:55:52 -0400
From: Kamil Dudka <kdudka@redhat.com>
To: libssh2-devel@cool.haxx.se
Subject: [PATCH 1/4] kex: do not ignore failure of libssh2_md5_init()
Date: Tue, 11 Sep 2012 09:55:22 +0200
Message-Id: <1347350125-319-1-git-send-email-kdudka@redhat.com>
X-Scanned-By: MIMEDefang 2.68 on 10.5.11.22
X-BeenThere: libssh2-devel@cool.haxx.se
X-Mailman-Version: 2.1.15
Precedence: list
Reply-To: libssh2 development <libssh2-devel@cool.haxx.se>
List-Id: libssh2 development <libssh2-devel.cool.haxx.se>
List-Unsubscribe: <http://cool.haxx.se/cgi-bin/mailman/options/libssh2-devel>, 
 <mailto:libssh2-devel-request@cool.haxx.se?subject=unsubscribe>
List-Archive: <http://cool.haxx.se/pipermail/libssh2-devel/>
List-Post: <mailto:libssh2-devel@cool.haxx.se>
List-Help: <mailto:libssh2-devel-request@cool.haxx.se?subject=help>
List-Subscribe: <http://cool.haxx.se/cgi-bin/mailman/listinfo/libssh2-devel>, 
 <mailto:libssh2-devel-request@cool.haxx.se?subject=subscribe>
MIME-Version: 1.0
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Errors-To: libssh2-devel-bounces@cool.haxx.se
Sender: "libssh2-devel" <libssh2-devel-bounces@cool.haxx.se>

The MD5 algorithm is disabled when running in FIPS mode.
---
 src/hostkey.c      |    4 +++-
 src/kex.c          |   13 +++++++++----
 src/libgcrypt.h    |    6 +++++-
 src/libssh2_priv.h |    1 +
 src/openssl.h      |    3 +++
 5 files changed, 21 insertions(+), 6 deletions(-)

diff --git a/src/hostkey.c b/src/hostkey.c
index 53f7479..753563d 100644
--- a/src/hostkey.c
+++ b/src/hostkey.c
@@ -429,7 +429,9 @@ libssh2_hostkey_hash(LIBSSH2_SESSION * session, int hash_type)
     switch (hash_type) {
 #if LIBSSH2_MD5
     case LIBSSH2_HOSTKEY_HASH_MD5:
-        return (char *) session->server_hostkey_md5;
+        return (session->server_hostkey_md5_valid)
+          ? (char *) session->server_hostkey_md5
+          : NULL;
         break;
 #endif /* LIBSSH2_MD5 */
     case LIBSSH2_HOSTKEY_HASH_SHA1:
diff --git a/src/kex.c b/src/kex.c
index 0a72cb7..a3691ce 100644
--- a/src/kex.c
+++ b/src/kex.c
@@ -218,10 +218,15 @@ static int diffie_hellman_sha1(LIBSSH2_SESSION *session,
         {
             libssh2_md5_ctx fingerprint_ctx;
 
-            libssh2_md5_init(&fingerprint_ctx);
-            libssh2_md5_update(fingerprint_ctx, session->server_hostkey,
-                               session->server_hostkey_len);
-            libssh2_md5_final(fingerprint_ctx, session->server_hostkey_md5);
+            if (libssh2_md5_init(&fingerprint_ctx)) {
+              libssh2_md5_update(fingerprint_ctx, session->server_hostkey,
+                                 session->server_hostkey_len);
+              libssh2_md5_final(fingerprint_ctx, session->server_hostkey_md5);
+              session->server_hostkey_md5_valid = TRUE;
+            }
+            else {
+              session->server_hostkey_md5_valid = FALSE;
+            }
         }
 #ifdef LIBSSH2DEBUG
         {
diff --git a/src/libgcrypt.h b/src/libgcrypt.h
index 04516e5..1f0276e 100644
--- a/src/libgcrypt.h
+++ b/src/libgcrypt.h
@@ -68,7 +68,11 @@
   gcry_md_hash_buffer (GCRY_MD_SHA1, out, message, len)
 
 #define libssh2_md5_ctx gcry_md_hd_t
-#define libssh2_md5_init(ctx) gcry_md_open (ctx,  GCRY_MD_MD5, 0);
+
+/* returns 0 in case of failure */
+#define libssh2_md5_init(ctx) \
+  (GPG_ERR_NO_ERROR == gcry_md_open (ctx,  GCRY_MD_MD5, 0))
+
 #define libssh2_md5_update(ctx, data, len) gcry_md_write (ctx, data, len)
 #define libssh2_md5_final(ctx, out) \
   memcpy (out, gcry_md_read (ctx, 0), MD5_DIGEST_LENGTH), gcry_md_close (ctx)
diff --git a/src/libssh2_priv.h b/src/libssh2_priv.h
index 23fbc65..196864d 100644
--- a/src/libssh2_priv.h
+++ b/src/libssh2_priv.h
@@ -597,6 +597,7 @@ struct _LIBSSH2_SESSION
     uint32_t server_hostkey_len;
 #if LIBSSH2_MD5
     unsigned char server_hostkey_md5[MD5_DIGEST_LENGTH];
+    int server_hostkey_md5_valid;
 #endif                          /* ! LIBSSH2_MD5 */
     unsigned char server_hostkey_sha1[SHA_DIGEST_LENGTH];
 
diff --git a/src/openssl.h b/src/openssl.h
index 6d2aeed..4835ab6 100644
--- a/src/openssl.h
+++ b/src/openssl.h
@@ -113,7 +113,10 @@
 void libssh2_sha1(const unsigned char *message, unsigned long len, unsigned char *out);
 
 #define libssh2_md5_ctx EVP_MD_CTX
+
+/* returns 0 in case of failure */
 #define libssh2_md5_init(ctx) EVP_DigestInit(ctx, EVP_get_digestbyname("md5"))
+
 #define libssh2_md5_update(ctx, data, len) EVP_DigestUpdate(&(ctx), data, len)
 #define libssh2_md5_final(ctx, out) EVP_DigestFinal(&(ctx), out, NULL)
 void libssh2_md5(const unsigned char *message, unsigned long len, unsigned char *out);
-- 
1.7.1

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

From libssh2-devel-bounces@cool.haxx.se  Tue Sep 11 09:56:32 2012
Return-Path: <libssh2-devel-bounces@cool.haxx.se>
Received: from www.haxx.se (localhost.localdomain [127.0.0.1])
	by giant.haxx.se (8.14.4/8.14.4/Debian-2) with ESMTP id q8B7uVxC031717;
	Tue, 11 Sep 2012 09:56:32 +0200
Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28])
 by giant.haxx.se (8.14.4/8.14.4/Debian-2) with ESMTP id q8B7ttHJ031244
 for <libssh2-devel@cool.haxx.se>; Tue, 11 Sep 2012 09:55:55 +0200
Received: from int-mx09.intmail.prod.int.phx2.redhat.com
 (int-mx09.intmail.prod.int.phx2.redhat.com [10.5.11.22])
 by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id q8B7tted012266
 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK)
 for <libssh2-devel@cool.haxx.se>; Tue, 11 Sep 2012 03:55:55 -0400
Received: from kdudka.brq.redhat.com (kdudka.brq.redhat.com [10.34.4.67])
 by int-mx09.intmail.prod.int.phx2.redhat.com (8.14.4/8.14.4) with ESMTP id
 q8B7tptW029761; Tue, 11 Sep 2012 03:55:54 -0400
From: Kamil Dudka <kdudka@redhat.com>
To: libssh2-devel@cool.haxx.se
Subject: [PATCH 3/4] crypt: use hard-wired cipher block sizes consistently
Date: Tue, 11 Sep 2012 09:55:24 +0200
Message-Id: <1347350125-319-3-git-send-email-kdudka@redhat.com>
In-Reply-To: <1347350125-319-1-git-send-email-kdudka@redhat.com>
References: <1347350125-319-1-git-send-email-kdudka@redhat.com>
X-Scanned-By: MIMEDefang 2.68 on 10.5.11.22
X-BeenThere: libssh2-devel@cool.haxx.se
X-Mailman-Version: 2.1.15
Precedence: list
Reply-To: libssh2 development <libssh2-devel@cool.haxx.se>
List-Id: libssh2 development <libssh2-devel.cool.haxx.se>
List-Unsubscribe: <http://cool.haxx.se/cgi-bin/mailman/options/libssh2-devel>, 
 <mailto:libssh2-devel-request@cool.haxx.se?subject=unsubscribe>
List-Archive: <http://cool.haxx.se/pipermail/libssh2-devel/>
List-Post: <mailto:libssh2-devel@cool.haxx.se>
List-Help: <mailto:libssh2-devel-request@cool.haxx.se?subject=help>
List-Subscribe: <http://cool.haxx.se/cgi-bin/mailman/listinfo/libssh2-devel>, 
 <mailto:libssh2-devel-request@cool.haxx.se?subject=subscribe>
MIME-Version: 1.0
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Errors-To: libssh2-devel-bounces@cool.haxx.se
Sender: "libssh2-devel" <libssh2-devel-bounces@cool.haxx.se>

---
 src/crypt.c        |    8 +++++---
 src/crypto.h       |    2 +-
 src/libgcrypt.c    |    8 +-------
 src/libssh2_priv.h |    2 +-
 src/openssl.c      |    7 +------
 src/transport.c    |    3 ++-
 6 files changed, 11 insertions(+), 19 deletions(-)

diff --git a/src/crypt.c b/src/crypt.c
index 93d99c4..931ae8b 100644
--- a/src/crypt.c
+++ b/src/crypt.c
@@ -96,11 +96,12 @@ crypt_init(LIBSSH2_SESSION * session,
 
 static int
 crypt_encrypt(LIBSSH2_SESSION * session, unsigned char *block,
-                 void **abstract)
+              size_t blocksize, void **abstract)
 {
     struct crypt_ctx *cctx = *(struct crypt_ctx **) abstract;
     (void) session;
-    return _libssh2_cipher_crypt(&cctx->h, cctx->algo, cctx->encrypt, block);
+    return _libssh2_cipher_crypt(&cctx->h, cctx->algo, cctx->encrypt, block,
+                                 blocksize);
 }
 
 static int
@@ -248,7 +249,8 @@ crypt_init_arcfour128(LIBSSH2_SESSION * session,
         unsigned char block[8];
         size_t discard = 1536;
         for (; discard; discard -= 8)
-            _libssh2_cipher_crypt(&cctx->h, cctx->algo, cctx->encrypt, block);
+            _libssh2_cipher_crypt(&cctx->h, cctx->algo, cctx->encrypt, block,
+                                  method->blocksize);
     }
 
     return rc;
diff --git a/src/crypto.h b/src/crypto.h
index 8cf34f5..5dc5931 100644
--- a/src/crypto.h
+++ b/src/crypto.h
@@ -103,7 +103,7 @@ int _libssh2_cipher_init(_libssh2_cipher_ctx * h,
 
 int _libssh2_cipher_crypt(_libssh2_cipher_ctx * ctx,
                           _libssh2_cipher_type(algo),
-                          int encrypt, unsigned char *block);
+                          int encrypt, unsigned char *block, size_t blocksize);
 
 int _libssh2_pub_priv_keyfile(LIBSSH2_SESSION *session,
                               unsigned char **method,
diff --git a/src/libgcrypt.c b/src/libgcrypt.c
index 5c2787b..29770c7 100644
--- a/src/libgcrypt.c
+++ b/src/libgcrypt.c
@@ -553,17 +553,11 @@ _libssh2_cipher_init(_libssh2_cipher_ctx * h,
 int
 _libssh2_cipher_crypt(_libssh2_cipher_ctx * ctx,
                       _libssh2_cipher_type(algo),
-                      int encrypt, unsigned char *block)
+                      int encrypt, unsigned char *block, size_t blklen)
 {
     int cipher = _libssh2_gcry_cipher (algo);
-    size_t blklen = gcry_cipher_get_algo_blklen(cipher);
     int ret;
 
-    if (blklen == 1) {
-/* Hack for arcfour. */
-        blklen = 8;
-    }
-
     if (encrypt) {
         ret = gcry_cipher_encrypt(*ctx, block, blklen, block, blklen);
     } else {
diff --git a/src/libssh2_priv.h b/src/libssh2_priv.h
index 196864d..4ec9f73 100644
--- a/src/libssh2_priv.h
+++ b/src/libssh2_priv.h
@@ -883,7 +883,7 @@ struct _LIBSSH2_CRYPT_METHOD
                  int *free_iv, unsigned char *secret, int *free_secret,
                  int encrypt, void **abstract);
     int (*crypt) (LIBSSH2_SESSION * session, unsigned char *block,
-                  void **abstract);
+                  size_t blocksize, void **abstract);
     int (*dtor) (LIBSSH2_SESSION * session, void **abstract);
 
       _libssh2_cipher_type(algo);
diff --git a/src/openssl.c b/src/openssl.c
index c61cb0e..8643591 100644
--- a/src/openssl.c
+++ b/src/openssl.c
@@ -181,18 +181,13 @@ _libssh2_cipher_init(_libssh2_cipher_ctx * h,
 int
 _libssh2_cipher_crypt(_libssh2_cipher_ctx * ctx,
                       _libssh2_cipher_type(algo),
-                      int encrypt, unsigned char *block)
+                      int encrypt, unsigned char *block, size_t blocksize)
 {
-    int blocksize = ctx->cipher->block_size;
     unsigned char buf[EVP_MAX_BLOCK_LENGTH];
     int ret;
     (void) algo;
     (void) encrypt;
 
-    if (blocksize == 1) {
-/* Hack for arcfour. */
-        blocksize = 8;
-    }
     ret = EVP_Cipher(ctx, buf, block, blocksize);
     if (ret == 1) {
         memcpy(block, buf, blocksize);
diff --git a/src/transport.c b/src/transport.c
index 15425b9..b4ec037 100644
--- a/src/transport.c
+++ b/src/transport.c
@@ -139,7 +139,7 @@ decrypt(LIBSSH2_SESSION * session, unsigned char *source,
     assert((len % blocksize) == 0);
 
     while (len >= blocksize) {
-        if (session->remote.crypt->crypt(session, source,
+        if (session->remote.crypt->crypt(session, source, blocksize,
                                          &session->remote.crypt_abstract)) {
             LIBSSH2_FREE(session, p->payload);
             return LIBSSH2_ERROR_DECRYPT;
@@ -846,6 +846,7 @@ int _libssh2_transport_send(LIBSSH2_SESSION *session,
         for(i = 0; i < packet_length; i += session->local.crypt->blocksize) {
             unsigned char *ptr = &p->outbuf[i];
             if (session->local.crypt->crypt(session, ptr,
+                                            session->local.crypt->blocksize,
                                             &session->local.crypt_abstract))
                 return LIBSSH2_ERROR_ENCRYPT;     /* encryption failure */
         }
-- 
1.7.1

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

From libssh2-devel-bounces@cool.haxx.se  Tue Sep 11 09:56:32 2012
Return-Path: <libssh2-devel-bounces@cool.haxx.se>
Received: from www.haxx.se (localhost.localdomain [127.0.0.1])
	by giant.haxx.se (8.14.4/8.14.4/Debian-2) with ESMTP id q8B7uWud031753;
	Tue, 11 Sep 2012 09:56:32 +0200
Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28])
 by giant.haxx.se (8.14.4/8.14.4/Debian-2) with ESMTP id q8B7twgP031318
 for <libssh2-devel@cool.haxx.se>; Tue, 11 Sep 2012 09:55:58 +0200
Received: from int-mx09.intmail.prod.int.phx2.redhat.com
 (int-mx09.intmail.prod.int.phx2.redhat.com [10.5.11.22])
 by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id q8B7tw8s012272
 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK)
 for <libssh2-devel@cool.haxx.se>; Tue, 11 Sep 2012 03:55:58 -0400
Received: from kdudka.brq.redhat.com (kdudka.brq.redhat.com [10.34.4.67])
 by int-mx09.intmail.prod.int.phx2.redhat.com (8.14.4/8.14.4) with ESMTP id
 q8B7tptX029761; Tue, 11 Sep 2012 03:55:56 -0400
From: Kamil Dudka <kdudka@redhat.com>
To: libssh2-devel@cool.haxx.se
Subject: [PATCH 4/4] Revert "aes: the init function fails when OpenSSL has AES
 support"
Date: Tue, 11 Sep 2012 09:55:25 +0200
Message-Id: <1347350125-319-4-git-send-email-kdudka@redhat.com>
In-Reply-To: <1347350125-319-1-git-send-email-kdudka@redhat.com>
References: <1347350125-319-1-git-send-email-kdudka@redhat.com>
X-Scanned-By: MIMEDefang 2.68 on 10.5.11.22
X-BeenThere: libssh2-devel@cool.haxx.se
X-Mailman-Version: 2.1.15
Precedence: list
Reply-To: libssh2 development <libssh2-devel@cool.haxx.se>
List-Id: libssh2 development <libssh2-devel.cool.haxx.se>
List-Unsubscribe: <http://cool.haxx.se/cgi-bin/mailman/options/libssh2-devel>, 
 <mailto:libssh2-devel-request@cool.haxx.se?subject=unsubscribe>
List-Archive: <http://cool.haxx.se/pipermail/libssh2-devel/>
List-Post: <mailto:libssh2-devel@cool.haxx.se>
List-Help: <mailto:libssh2-devel-request@cool.haxx.se?subject=help>
List-Subscribe: <http://cool.haxx.se/cgi-bin/mailman/listinfo/libssh2-devel>, 
 <mailto:libssh2-devel-request@cool.haxx.se?subject=subscribe>
MIME-Version: 1.0
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Errors-To: libssh2-devel-bounces@cool.haxx.se
Sender: "libssh2-devel" <libssh2-devel-bounces@cool.haxx.se>

This partially reverts commit f4f2298ef3635acd031cc2ee0e71026cdcda5864.

We need to use the EVP_aes_???_ctr() functions in FIPS mode.
---
 src/openssl.h |    6 ++++++
 1 files changed, 6 insertions(+), 0 deletions(-)

diff --git a/src/openssl.h b/src/openssl.h
index 4835ab6..6f21a1a 100644
--- a/src/openssl.h
+++ b/src/openssl.h
@@ -151,9 +151,15 @@ void libssh2_md5(const unsigned char *message, unsigned long len, unsigned char
 #define _libssh2_cipher_aes256 EVP_aes_256_cbc
 #define _libssh2_cipher_aes192 EVP_aes_192_cbc
 #define _libssh2_cipher_aes128 EVP_aes_128_cbc
+#ifdef HAVE_EVP_AES_128_CTR
+#define _libssh2_cipher_aes128ctr EVP_aes_128_ctr
+#define _libssh2_cipher_aes192ctr EVP_aes_192_ctr
+#define _libssh2_cipher_aes256ctr EVP_aes_256_ctr
+#else
 #define _libssh2_cipher_aes128ctr _libssh2_EVP_aes_128_ctr
 #define _libssh2_cipher_aes192ctr _libssh2_EVP_aes_192_ctr
 #define _libssh2_cipher_aes256ctr _libssh2_EVP_aes_256_ctr
+#endif
 #define _libssh2_cipher_blowfish EVP_bf_cbc
 #define _libssh2_cipher_arcfour EVP_rc4
 #define _libssh2_cipher_cast5 EVP_cast5_cbc
-- 
1.7.1

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

From libssh2-devel-bounces@cool.haxx.se  Tue Sep 11 09:56:34 2012
Return-Path: <libssh2-devel-bounces@cool.haxx.se>
Received: from www.haxx.se (localhost.localdomain [127.0.0.1])
	by giant.haxx.se (8.14.4/8.14.4/Debian-2) with ESMTP id q8B7uWWk031790;
	Tue, 11 Sep 2012 09:56:33 +0200
Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28])
 by giant.haxx.se (8.14.4/8.14.4/Debian-2) with ESMTP id q8B7twIn031235
 for <libssh2-devel@cool.haxx.se>; Tue, 11 Sep 2012 09:55:59 +0200
Received: from int-mx09.intmail.prod.int.phx2.redhat.com
 (int-mx09.intmail.prod.int.phx2.redhat.com [10.5.11.22])
 by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id q8B7tsPb020781
 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK)
 for <libssh2-devel@cool.haxx.se>; Tue, 11 Sep 2012 03:55:54 -0400
Received: from kdudka.brq.redhat.com (kdudka.brq.redhat.com [10.34.4.67])
 by int-mx09.intmail.prod.int.phx2.redhat.com (8.14.4/8.14.4) with ESMTP id
 q8B7tptV029761; Tue, 11 Sep 2012 03:55:53 -0400
From: Kamil Dudka <kdudka@redhat.com>
To: libssh2-devel@cool.haxx.se
Subject: [PATCH 2/4] openssl: do not ignore failure of EVP_CipherInit()
Date: Tue, 11 Sep 2012 09:55:23 +0200
Message-Id: <1347350125-319-2-git-send-email-kdudka@redhat.com>
In-Reply-To: <1347350125-319-1-git-send-email-kdudka@redhat.com>
References: <1347350125-319-1-git-send-email-kdudka@redhat.com>
X-Scanned-By: MIMEDefang 2.68 on 10.5.11.22
X-BeenThere: libssh2-devel@cool.haxx.se
X-Mailman-Version: 2.1.15
Precedence: list
Reply-To: libssh2 development <libssh2-devel@cool.haxx.se>
List-Id: libssh2 development <libssh2-devel.cool.haxx.se>
List-Unsubscribe: <http://cool.haxx.se/cgi-bin/mailman/options/libssh2-devel>, 
 <mailto:libssh2-devel-request@cool.haxx.se?subject=unsubscribe>
List-Archive: <http://cool.haxx.se/pipermail/libssh2-devel/>
List-Post: <mailto:libssh2-devel@cool.haxx.se>
List-Help: <mailto:libssh2-devel-request@cool.haxx.se?subject=help>
List-Subscribe: <http://cool.haxx.se/cgi-bin/mailman/listinfo/libssh2-devel>, 
 <mailto:libssh2-devel-request@cool.haxx.se?subject=subscribe>
MIME-Version: 1.0
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Errors-To: libssh2-devel-bounces@cool.haxx.se
Sender: "libssh2-devel" <libssh2-devel-bounces@cool.haxx.se>

---
 src/openssl.c |    3 +--
 1 files changed, 1 insertions(+), 2 deletions(-)

diff --git a/src/openssl.c b/src/openssl.c
index 481982c..c61cb0e 100644
--- a/src/openssl.c
+++ b/src/openssl.c
@@ -175,8 +175,7 @@ _libssh2_cipher_init(_libssh2_cipher_ctx * h,
                      unsigned char *iv, unsigned char *secret, int encrypt)
 {
     EVP_CIPHER_CTX_init(h);
-    EVP_CipherInit(h, algo(), secret, iv, encrypt);
-    return 0;
+    return !EVP_CipherInit(h, algo(), secret, iv, encrypt);
 }
 
 int
-- 
1.7.1

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

From libssh2-devel-bounces@cool.haxx.se  Wed Sep 12 22:41:53 2012
Return-Path: <libssh2-devel-bounces@cool.haxx.se>
Received: from www.haxx.se (localhost.localdomain [127.0.0.1])
	by giant.haxx.se (8.14.4/8.14.4/Debian-2) with ESMTP id q8CKfQ3Y001987;
	Wed, 12 Sep 2012 22:41:45 +0200
Received: from giant.haxx.se (localhost.localdomain [127.0.0.1])
 by giant.haxx.se (8.14.4/8.14.4/Debian-2) with ESMTP id q8CKeK0K001080
 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NOT)
 for <libssh2-devel@cool.haxx.se>; Wed, 12 Sep 2012 22:40:20 +0200
Received: from localhost (dast@localhost)
 by giant.haxx.se (8.14.4/8.14.4/Submit) with ESMTP id q8CKeKja001076
 for <libssh2-devel@cool.haxx.se>; Wed, 12 Sep 2012 22:40:20 +0200
X-Authentication-Warning: giant.haxx.se: dast owned process doing -bs
Date: Wed, 12 Sep 2012 22:40:20 +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: [PATCH 1/4] kex: do not ignore failure of libssh2_md5_init()
In-Reply-To: <1347350125-319-1-git-send-email-kdudka@redhat.com>
Message-ID: <alpine.DEB.2.00.1209122240040.9624@tvnag.unkk.fr>
References: <1347350125-319-1-git-send-email-kdudka@redhat.com>
User-Agent: Alpine 2.00 (DEB 1167 2008-08-23)
X-fromdanielhimself: yes
MIME-Version: 1.0
X-BeenThere: libssh2-devel@cool.haxx.se
X-Mailman-Version: 2.1.15
Precedence: list
Reply-To: libssh2 development <libssh2-devel@cool.haxx.se>
List-Id: libssh2 development <libssh2-devel.cool.haxx.se>
List-Unsubscribe: <http://cool.haxx.se/cgi-bin/mailman/options/libssh2-devel>, 
 <mailto:libssh2-devel-request@cool.haxx.se?subject=unsubscribe>
List-Archive: <http://cool.haxx.se/pipermail/libssh2-devel/>
List-Post: <mailto:libssh2-devel@cool.haxx.se>
List-Help: <mailto:libssh2-devel-request@cool.haxx.se?subject=help>
List-Subscribe: <http://cool.haxx.se/cgi-bin/mailman/listinfo/libssh2-devel>, 
 <mailto:libssh2-devel-request@cool.haxx.se?subject=subscribe>
Content-Transfer-Encoding: 7bit
Content-Type: text/plain; charset="us-ascii"; Format="flowed"
Errors-To: libssh2-devel-bounces@cool.haxx.se
Sender: "libssh2-devel" <libssh2-devel-bounces@cool.haxx.se>

On Tue, 11 Sep 2012, Kamil Dudka wrote:

> The MD5 algorithm is disabled when running in FIPS mode.

Looks like a fine patch series to me!

-- 

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

From libssh2-devel-bounces@cool.haxx.se  Thu Sep 13 16:06:51 2012
Return-Path: <libssh2-devel-bounces@cool.haxx.se>
Received: from www.haxx.se (localhost.localdomain [127.0.0.1])
	by giant.haxx.se (8.14.4/8.14.4/Debian-2) with ESMTP id q8DE6M29004589;
	Thu, 13 Sep 2012 16:06:43 +0200
Received: from mail-iy0-f182.google.com (mail-iy0-f182.google.com
 [209.85.210.182])
 by giant.haxx.se (8.14.4/8.14.4/Debian-2) with ESMTP id q8DE6JMP004496
 (version=TLSv1/SSLv3 cipher=RC4-SHA bits=128 verify=NOT)
 for <libssh2-devel@cool.haxx.se>; Thu, 13 Sep 2012 16:06:20 +0200
Received: by iayy25 with SMTP id y25so2403344iay.41
 for <libssh2-devel@cool.haxx.se>; Thu, 13 Sep 2012 07:06:15 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113;
 h=mime-version:in-reply-to:references:date:message-id:subject:from:to
 :content-type; bh=99ggx5+zCfu2Hl2iMoVZDoty03nkxAPAvMTVSO91qVM=;
 b=pfXPrrw3pedi9u69778Kozcfbtk2wJTUT8JN8wV9yJaGbCSoK+GdoAMfLtESHwc+ys
 lNnqUA7U889mYNXgoMTZPZRjBplCwMEqGqai/eJN6Uye3Uzo18/oR0L76VwPKoIpLSb/
 OTazkvekfazIWLL9aKvspHIqqwFEm7LCkCQxuerH4qE1Vv8OtE7cXHwf1uWRAp7KxeLU
 GcYDaXC04JJGQSbmWQyUvuME7n+e77jpSG1V5E4e5CrU6US++oJ5TSy6NXMDLEa0HdvT
 n+WMO9mgPjZhoWgqNmplNwb502xIh+06PUATP2qnvnKDzr4r+tViIfgSN7QkCs4nj6fb
 UT+Q==
MIME-Version: 1.0
Received: by 10.50.186.131 with SMTP id fk3mr16364722igc.3.1347545174903; Thu,
 13 Sep 2012 07:06:14 -0700 (PDT)
Received: by 10.64.101.34 with HTTP; Thu, 13 Sep 2012 07:06:13 -0700 (PDT)
In-Reply-To: <CADyPeTPZfsAsPN9DgtkhOn-2DaJ6Fyjm4DeLy7gf0KTh91UC5A@mail.gmail.com>
References: <CAEKYpERrKN5tGV0aRWyE-ACaoP2boNicgJLq_uujiDGfdqD2GQ@mail.gmail.com>
 <CADyPeTPZfsAsPN9DgtkhOn-2DaJ6Fyjm4DeLy7gf0KTh91UC5A@mail.gmail.com>
Date: Thu, 13 Sep 2012 15:06:13 +0100
Message-ID: <CAOm78NqfTLMT6F+kxBWTVJ37Ac8rBukzhhckizsD_KYVF4iOzQ@mail.gmail.com>
Subject: Re: SSH timeout
From: Paulo Caetano <paulo.a.o.caetano@gmail.com>
To: libssh2 development <libssh2-devel@cool.haxx.se>
X-BeenThere: libssh2-devel@cool.haxx.se
X-Mailman-Version: 2.1.15
Precedence: list
Reply-To: libssh2 development <libssh2-devel@cool.haxx.se>
List-Id: libssh2 development <libssh2-devel.cool.haxx.se>
List-Unsubscribe: <http://cool.haxx.se/cgi-bin/mailman/options/libssh2-devel>, 
 <mailto:libssh2-devel-request@cool.haxx.se?subject=unsubscribe>
List-Archive: <http://cool.haxx.se/pipermail/libssh2-devel/>
List-Post: <mailto:libssh2-devel@cool.haxx.se>
List-Help: <mailto:libssh2-devel-request@cool.haxx.se?subject=help>
List-Subscribe: <http://cool.haxx.se/cgi-bin/mailman/listinfo/libssh2-devel>, 
 <mailto:libssh2-devel-request@cool.haxx.se?subject=subscribe>
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Errors-To: libssh2-devel-bounces@cool.haxx.se
Sender: "libssh2-devel" <libssh2-devel-bounces@cool.haxx.se>

On Tue, Sep 4, 2012 at 11:05 AM, Alexander Lamaison <swish@lammy.co.uk> wrote:
> On 4 September 2012 07:44, anirudh nair <anirudh.anu01@gmail.com> wrote:
>
>> Can I set the session not to timeout at all?
>
> No.  The server can do whatever it likes.  But, you can encourage most
> servers to hold the connection open by responding to its keepalive
> requests during idle time.

I've been running some tests (connecting to a Linux host running on a
VM), as I'm attempting to integrate libssh2 and boost::asio, and I'd
like to keep a pool of open sessions (thus, needing to keep idle
sessions/connections alive).

When using SSH's keepalive (defined by ClientAliveInterval and
ClientAliveCountMax in sshd_config), I've had coherent results - the
session was dropped when expected.

When using TCP keepalive's default values, results are also coherent -
if I don't enable asio tcp::socket' keepalive, the connection drops
after little more than 2 hours; if I enable asio tcp::socket's
keepalive, the connection goes on and on (I finally shut it down after
6 hours idle).

The last test I ran, however, was mystifying. I've set TCP's keepalive
to 3 mins, and its repeated probes to 3 every 30 secs. I didn't enable
the socket's keepalive. So, it should've died after +/- 4.5 mins. And
yet, the connection went on and on, hitting the same 6 hour mark,
until I shut it down. I'm still trying to figure out what happened
here.

Paulo Caetano
http://cidebycide.blogspot.pt/
_______________________________________________
libssh2-devel http://cool.haxx.se/cgi-bin/mailman/listinfo/libssh2-devel

From libssh2-devel-bounces@cool.haxx.se  Thu Sep 13 17:47:43 2012
Return-Path: <libssh2-devel-bounces@cool.haxx.se>
Received: from www.haxx.se (localhost.localdomain [127.0.0.1])
	by giant.haxx.se (8.14.4/8.14.4/Debian-2) with ESMTP id q8DFl6EP003383;
	Thu, 13 Sep 2012 17:47:20 +0200
Received: from mail-vb0-f43.google.com (mail-vb0-f43.google.com
 [209.85.212.43])
 by giant.haxx.se (8.14.4/8.14.4/Debian-2) with ESMTP id q8DFl4IO003128
 (version=TLSv1/SSLv3 cipher=RC4-SHA bits=128 verify=NOT)
 for <libssh2-devel@cool.haxx.se>; Thu, 13 Sep 2012 17:47:04 +0200
Received: by vbbfq11 with SMTP id fq11so767661vbb.16
 for <libssh2-devel@cool.haxx.se>; Thu, 13 Sep 2012 08:46:59 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113;
 h=mime-version:in-reply-to:references:date:message-id:subject:from:to
 :content-type; bh=QdZALCHqcG9Y/oiX37BACrVbT17/BwukI0tEIA0bJbA=;
 b=F0JT8HCg2SGhSpmVn9enoikLOFVEg24w+FphQY52xnb2uypoYOF/Cyi68gICsJQesC
 xDh3M2itdAV6LMdeel5vjErLULtLNR63s4i7y9p0oWyDsUvsMBiKoICRSM4Cnqs/YJI4
 SzpDKdtTN6oahsHCIftzBhIc+YI9IX2jTcvfDwStu8FiZAnmSt1acaE4QIGSyr3Y5jR0
 kgQEEoM/swDg+g/HXFTLIWdRYppsS03qarYp7u/6mhabOzS6DdXkQGzIhB+UdBvZQ5Zu
 L88Zs8TVnGdCorwyDZERfT2r+oKLygAVOkRyhaysXC1SZILF/wshWfoFolKGp50G5Rqi
 4VQA==
MIME-Version: 1.0
Received: by 10.52.26.7 with SMTP id h7mr1307620vdg.41.1347551219836; Thu, 13
 Sep 2012 08:46:59 -0700 (PDT)
Received: by 10.58.128.228 with HTTP; Thu, 13 Sep 2012 08:46:59 -0700 (PDT)
In-Reply-To: <CADyPeTPNPpCqTiaTthOqr4y-cnEkHAfQrLfhdHhWWcMXocULyw@mail.gmail.com>
References: <043.48c1af7833dd360b0e68e04fd78bedf2@libssh2.stuge.se>
 <058.9c12b5a7a3cfd02f0299f4c7f317223f@libssh2.stuge.se>
 <CAFnqFY2O4er-sZ5bs--te36PXq=L8gcCADs3up0Ar8sE9qyTmw@mail.gmail.com>
 <CADyPeTPNPpCqTiaTthOqr4y-cnEkHAfQrLfhdHhWWcMXocULyw@mail.gmail.com>
Date: Thu, 13 Sep 2012 11:46:59 -0400
Message-ID: <CAFnqFY3J3YhyQ4gcuuYQfjNAcLbQhMCKHxWRbBUnnhR3a3sByA@mail.gmail.com>
Subject: Re: [libssh2] #248: A small patch to handle private key in memory
From: Joe Turpin <joe.turpin@gmail.com>
To: libssh2 development <libssh2-devel@cool.haxx.se>
X-BeenThere: libssh2-devel@cool.haxx.se
X-Mailman-Version: 2.1.15
Precedence: list
Reply-To: libssh2 development <libssh2-devel@cool.haxx.se>
List-Id: libssh2 development <libssh2-devel.cool.haxx.se>
List-Unsubscribe: <http://cool.haxx.se/cgi-bin/mailman/options/libssh2-devel>, 
 <mailto:libssh2-devel-request@cool.haxx.se?subject=unsubscribe>
List-Archive: <http://cool.haxx.se/pipermail/libssh2-devel/>
List-Post: <mailto:libssh2-devel@cool.haxx.se>
List-Help: <mailto:libssh2-devel-request@cool.haxx.se?subject=help>
List-Subscribe: <http://cool.haxx.se/cgi-bin/mailman/listinfo/libssh2-devel>, 
 <mailto:libssh2-devel-request@cool.haxx.se?subject=subscribe>
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Errors-To: libssh2-devel-bounces@cool.haxx.se
Sender: "libssh2-devel" <libssh2-devel-bounces@cool.haxx.se>

On Mon, Sep 10, 2012 at 8:42 AM, Alexander Lamaison <swish@lammy.co.uk> wrote:
<snip>
> Indeed you did.  Did anyone review it or did it get lost in the list?

Yes, Daniel Stenberg had reviewed a couple of versions that I had submitted.

> If not already done, could someone else review this patch (Dan?
> Peter?) I've no time to read anything till October :(
>
> From a quick skim, it seems like it duplicates a lot of code, no?

I added new API calls instead of changing the existing. There will of
course be chunks that are similar, but I don't think in any
appreciable way. If you'd like another revision, let me know what the
problem areas are and I'll make the necessary changes to conform.

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

From libssh2-devel-bounces@cool.haxx.se  Thu Sep 13 19:36:29 2012
Return-Path: <libssh2-devel-bounces@cool.haxx.se>
Received: from www.haxx.se (localhost.localdomain [127.0.0.1])
	by giant.haxx.se (8.14.4/8.14.4/Debian-2) with ESMTP id q8DHa4eW014786;
	Thu, 13 Sep 2012 19:36:22 +0200
Received: from mail1.bemta3.messagelabs.com (mail1.bemta3.messagelabs.com
 [195.245.230.34])
 by giant.haxx.se (8.14.4/8.14.4/Debian-2) with ESMTP id q8DHa1Mm014641
 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NOT)
 for <libssh2-devel@cool.haxx.se>; Thu, 13 Sep 2012 19:36:02 +0200
Received: from [195.245.230.131:6939] by server-10.bemta-3.messagelabs.com id
 97/60-10411-38912505; Thu, 13 Sep 2012 17:36:03 +0000
X-Env-Sender: hiran.chaudhuri@amadeus.com
X-Msg-Ref: server-10.tower-78.messagelabs.com!1347557762!31496402!1
X-Originating-IP: [193.23.186.180]
X-StarScan-Received: 
X-StarScan-Version: 6.6.1.3; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 3384 invoked from network); 13 Sep 2012 17:36:02 -0000
Received: from mucsmtp2.amadeus.net (HELO mucsmtp2.amadeus.net)
 (193.23.186.180)
 by server-10.tower-78.messagelabs.com with RC4-SHA encrypted SMTP;
 13 Sep 2012 17:36:02 -0000
To: libssh2-devel@cool.haxx.se
MIME-Version: 1.0
Subject: Cannot build libssh2
X-KeepSent: FFF0C717:16303DDC-C1257A78:005FF116;
 type=4; name=$KeepSent
X-Mailer: Lotus Notes Release 8.5.1 FP2 March 18, 2010
From: Hiran Chaudhuri <hiran.chaudhuri@amadeus.com>
Message-ID: <OFFFF0C717.16303DDC-ONC1257A78.005FF116-C1257A78.0060ACA3@amadeus.com>
Date: Thu, 13 Sep 2012 19:35:56 +0200
X-MIMETrack: Serialize by Router on MUCSMTP2/MUC/AMAEXTMAIL(Release
 8.5.2FP3|July 10, 2011) at 09/13/2012 05:36:02 PM,
 Serialize complete at 09/13/2012 05:36:02 PM
X-BeenThere: libssh2-devel@cool.haxx.se
X-Mailman-Version: 2.1.15
Precedence: list
Reply-To: libssh2 development <libssh2-devel@cool.haxx.se>
List-Id: libssh2 development <libssh2-devel.cool.haxx.se>
List-Unsubscribe: <http://cool.haxx.se/cgi-bin/mailman/options/libssh2-devel>, 
 <mailto:libssh2-devel-request@cool.haxx.se?subject=unsubscribe>
List-Archive: <http://cool.haxx.se/pipermail/libssh2-devel/>
List-Post: <mailto:libssh2-devel@cool.haxx.se>
List-Help: <mailto:libssh2-devel-request@cool.haxx.se?subject=help>
List-Subscribe: <http://cool.haxx.se/cgi-bin/mailman/listinfo/libssh2-devel>, 
 <mailto:libssh2-devel-request@cool.haxx.se?subject=subscribe>
Content-Type: multipart/mixed; boundary="===============0736292306=="
Errors-To: libssh2-devel-bounces@cool.haxx.se
Sender: "libssh2-devel" <libssh2-devel-bounces@cool.haxx.se>

This is a multipart message in MIME format.
--===============0736292306==
Content-Type: multipart/related; boundary="=_related 0060588BC1257A78_="

This is a multipart message in MIME format.
--=_related 0060588BC1257A78_=
Content-Type: multipart/alternative; boundary="=_alternative 0060588CC1257A78_="


--=_alternative 0060588CC1257A78_=
Content-Type: text/plain; charset="ISO-8859-1"
Content-Transfer-Encoding: quoted-printable

Hello everybody.

While trying to compile libssh2 1.4.2 on Linux I am getting this error=20
message during configure:

checking for libssl... no
configure: error: cannot find OpenSSL or Libgcrypt,
try --with-libssl-prefix=3DPATH or --with-libgcrypt-prefix=3DPATH

While most hints and solutions on the internet mention that openssl-devel=20
should be installed I cannot since I built and installed openssl myself.=20
It resides in /ama/wh/bin/httpd-1447/openssl, and I inform the configure=20
script about it:
./configure --prefix=3D/ama/wh/bin/httpd-1447/libssh2 --with-openssl=20
--without-libgcrypt --with-libssl-prefix=3D/ama/wh/bin/httpd-1447/openssl

Still the error remains, and I am wondering what the script is actually=20
looking for. Could there be a bug as it might still try to find something=20
on the 'standard' path?

Thanks for any hint

Hiran



Hiran Chaudhuri
System Support Programmer / Analyst
IT Service Assurance
Hosting & Regional Services (IH)
Amadeus Data Processing GmbH
Berghamer Strasse 6
85435 Erding
T: +49-8122-43x3662
hiran.chaudhuri@amadeus.com
http://www.amadeus.com





IMPORTANT  -  CONFIDENTIALITY  NOTICE  - This e-mail is intended only for=20
the use of the individual or entity shown above as addressees. It may=20
contain information which is privileged, confidential or otherwise=20
protected from disclosure under applicable laws.  If the reader of this=20
transmission is not the intended recipient, you are hereby notified that=20
any dissemination, printing, distribution, copying, disclosure or the=20
taking of any action in reliance on the contents of this information is=20
strictly prohibited.  If you have received this transmission in error,=20
please immediately notify us by reply e-mail or using the address below=20
and delete the message and any attachments from your system.=20

Amadeus Data Processing GmbH=20
Gesch=E4ftsf=FChrer: Eberhard Haag=20
Sitz der Gesellschaft: Erding=20
HR M=FCnchen 48 199=20
Berghamer Strasse 6=20
85435 Erding=20
Germany
--=_alternative 0060588CC1257A78_=
Content-Type: text/html; charset="ISO-8859-1"
Content-Transfer-Encoding: quoted-printable

<font size=3D2 face=3D"sans-serif">Hello everybody.</font>
<br>
<br><font size=3D2 face=3D"sans-serif">While trying to compile libssh2 1.4.2
on Linux I am getting this error message during configure:</font>
<br>
<br><font size=3D2 face=3D"sans-serif">checking for libssl... no</font>
<br><font size=3D2 face=3D"sans-serif">configure: error: cannot find OpenSSL
or Libgcrypt,</font>
<br><font size=3D2 face=3D"sans-serif">try --with-libssl-prefix=3DPATH or -=
-with-libgcrypt-prefix=3DPATH</font>
<br>
<br><font size=3D2 face=3D"sans-serif">While most hints and solutions on the
internet mention that openssl-devel should be installed I cannot since
I built and installed openssl myself. It resides in /ama/wh/bin/httpd-1447/=
openssl,
and I inform the configure script about it:</font>
<br><font size=3D2 face=3D"sans-serif">./configure --prefix=3D/ama/wh/bin/h=
ttpd-1447/libssh2
--with-openssl --without-libgcrypt --with-libssl-prefix=3D/ama/wh/bin/httpd=
-1447/openssl</font>
<br>
<br><font size=3D2 face=3D"sans-serif">Still the error remains, and I am wo=
ndering
what the script is actually looking for. Could there be a bug as it might
still try to find something on the 'standard' path?</font>
<br>
<br><font size=3D2 face=3D"sans-serif">Thanks for any hint</font>
<br>
<br><font size=3D2 face=3D"sans-serif">Hiran</font>
<br>
<br>
<br><font size=3D2 face=3D"sans-serif"><br>
</font><font size=3D2 color=3D#0060a0 face=3D"Arial"><b>Hiran Chaudhuri</b>=
</font><font size=3D1 face=3D"Arial"><b><br>
System Support Programmer / Analyst</b></font><font size=3D1 color=3D#5f5f5=
f face=3D"Arial"><br>
IT Service Assurance<br>
Hosting &amp; Regional Services (IH)<br>
Amadeus Data Processing GmbH<br>
Berghamer Strasse 6<br>
85435 Erding<br>
T: +49-8122-43x3662<br>
hiran.chaudhuri@amadeus.com</font><font size=3D1 color=3Dblue face=3D"Arial=
"><u><br>
</u></font><a href=3Dhttp://www.amadeus.com/><font size=3D1 color=3Dblue fa=
ce=3D"Arial"><u>http://www.amadeus.com</u></font></a>
<p><img src=3Dcid:=5F2=5F06210BAC0620CF8800605889C1257A78 width=3D149 heigh=
t=3D48 alt=3D"Amadeus logo"><font size=3D2 face=3D"sans-serif"><br>
<br>
<br>
<br>
<br>
IMPORTANT &nbsp;- &nbsp;CONFIDENTIALITY &nbsp;NOTICE &nbsp;- This e-mail
is intended only for the use of the individual or entity shown above as
addressees. It may contain information which is privileged, confidential
or otherwise protected from disclosure under applicable laws. &nbsp;If
the reader of this transmission is not the intended recipient, you are
hereby notified that any dissemination, printing, distribution, copying,
disclosure or the taking of any action in reliance on the contents of this
information is strictly prohibited. &nbsp;If you have received this transmi=
ssion
in error, please immediately notify us by reply e-mail or using the address
below and delete the message and any attachments from your system. <br>
<br>
Amadeus Data Processing GmbH <br>
Gesch=E4ftsf=FChrer: Eberhard Haag <br>
Sitz der Gesellschaft: Erding <br>
HR M=FCnchen 48 199 <br>
Berghamer Strasse 6 <br>
85435 Erding <br>
Germany</font>
--=_alternative 0060588CC1257A78_=--
--=_related 0060588BC1257A78_=
Content-Type: image/jpeg
Content-ID: <_2_06210BAC0620CF8800605889C1257A78>
Content-Transfer-Encoding: base64

/9j/4ReeRXhpZgAATU0AKgAAAAgABwESAAMAAAABAAEAAAEaAAUAAAABAAAAYgEbAAUAAAABAAAA
agEoAAMAAAABAAIAAAExAAIAAAAeAAAAcgEyAAIAAAAUAAAAkIdpAAQAAAABAAAApAAAANAACvyA
AAAnEAAK/IAAACcQQWRvYmUgUGhvdG9zaG9wIENTNS4xIFdpbmRvd3MAMjAxMjowMToxNyAxMzox
ODoxOAAAA6ABAAMAAAABAAEAAKACAAQAAAABAAAAlqADAAQAAAABAAAAMAAAAAAAAAAGAQMAAwAA
AAEABgAAARoABQAAAAEAAAEeARsABQAAAAEAAAEmASgAAwAAAAEAAgAAAgEABAAAAAEAAAEuAgIA
BAAAAAEAABZoAAAAAAAAAEgAAAABAAAASAAAAAH/2P/iDFhJQ0NfUFJPRklMRQABAQAADEhMaW5v
AhAAAG1udHJSR0IgWFlaIAfOAAIACQAGADEAAGFjc3BNU0ZUAAAAAElFQyBzUkdCAAAAAAAAAAAA
AAAAAAD21gABAAAAANMtSFAgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAEWNwcnQAAAFQAAAAM2Rlc2MAAAGEAAAAbHd0cHQAAAHwAAAAFGJrcHQAAAIEAAAA
FHJYWVoAAAIYAAAAFGdYWVoAAAIsAAAAFGJYWVoAAAJAAAAAFGRtbmQAAAJUAAAAcGRtZGQAAALE
AAAAiHZ1ZWQAAANMAAAAhnZpZXcAAAPUAAAAJGx1bWkAAAP4AAAAFG1lYXMAAAQMAAAAJHRlY2gA
AAQwAAAADHJUUkMAAAQ8AAAIDGdUUkMAAAQ8AAAIDGJUUkMAAAQ8AAAIDHRleHQAAAAAQ29weXJp
Z2h0IChjKSAxOTk4IEhld2xldHQtUGFja2FyZCBDb21wYW55AABkZXNjAAAAAAAAABJzUkdCIElF
QzYxOTY2LTIuMQAAAAAAAAAAAAAAEnNSR0IgSUVDNjE5NjYtMi4xAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABYWVogAAAAAAAA81EAAQAAAAEWzFhZWiAA
AAAAAAAAAAAAAAAAAAAAWFlaIAAAAAAAAG+iAAA49QAAA5BYWVogAAAAAAAAYpkAALeFAAAY2lhZ
WiAAAAAAAAAkoAAAD4QAALbPZGVzYwAAAAAAAAAWSUVDIGh0dHA6Ly93d3cuaWVjLmNoAAAAAAAA
AAAAAAAWSUVDIGh0dHA6Ly93d3cuaWVjLmNoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAGRlc2MAAAAAAAAALklFQyA2MTk2Ni0yLjEgRGVmYXVsdCBSR0IgY29s
b3VyIHNwYWNlIC0gc1JHQgAAAAAAAAAAAAAALklFQyA2MTk2Ni0yLjEgRGVmYXVsdCBSR0IgY29s
b3VyIHNwYWNlIC0gc1JHQgAAAAAAAAAAAAAAAAAAAAAAAAAAAABkZXNjAAAAAAAAACxSZWZlcmVu
Y2UgVmlld2luZyBDb25kaXRpb24gaW4gSUVDNjE5NjYtMi4xAAAAAAAAAAAAAAAsUmVmZXJlbmNl
IFZpZXdpbmcgQ29uZGl0aW9uIGluIElFQzYxOTY2LTIuMQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAdmlldwAAAAAAE6T+ABRfLgAQzxQAA+3MAAQTCwADXJ4AAAABWFlaIAAAAAAATAlWAFAAAABX
H+dtZWFzAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAACjwAAAAJzaWcgAAAAAENSVCBjdXJ2AAAA
AAAABAAAAAAFAAoADwAUABkAHgAjACgALQAyADcAOwBAAEUASgBPAFQAWQBeAGMAaABtAHIAdwB8
AIEAhgCLAJAAlQCaAJ8ApACpAK4AsgC3ALwAwQDGAMsA0ADVANsA4ADlAOsA8AD2APsBAQEHAQ0B
EwEZAR8BJQErATIBOAE+AUUBTAFSAVkBYAFnAW4BdQF8AYMBiwGSAZoBoQGpAbEBuQHBAckB0QHZ
AeEB6QHyAfoCAwIMAhQCHQImAi8COAJBAksCVAJdAmcCcQJ6AoQCjgKYAqICrAK2AsECywLVAuAC
6wL1AwADCwMWAyEDLQM4A0MDTwNaA2YDcgN+A4oDlgOiA64DugPHA9MD4APsA/kEBgQTBCAELQQ7
BEgEVQRjBHEEfgSMBJoEqAS2BMQE0wThBPAE/gUNBRwFKwU6BUkFWAVnBXcFhgWWBaYFtQXFBdUF
5QX2BgYGFgYnBjcGSAZZBmoGewaMBp0GrwbABtEG4wb1BwcHGQcrBz0HTwdhB3QHhgeZB6wHvwfS
B+UH+AgLCB8IMghGCFoIbgiCCJYIqgi+CNII5wj7CRAJJQk6CU8JZAl5CY8JpAm6Cc8J5Qn7ChEK
Jwo9ClQKagqBCpgKrgrFCtwK8wsLCyILOQtRC2kLgAuYC7ALyAvhC/kMEgwqDEMMXAx1DI4MpwzA
DNkM8w0NDSYNQA1aDXQNjg2pDcMN3g34DhMOLg5JDmQOfw6bDrYO0g7uDwkPJQ9BD14Peg+WD7MP
zw/sEAkQJhBDEGEQfhCbELkQ1xD1ERMRMRFPEW0RjBGqEckR6BIHEiYSRRJkEoQSoxLDEuMTAxMj
E0MTYxODE6QTxRPlFAYUJxRJFGoUixStFM4U8BUSFTQVVhV4FZsVvRXgFgMWJhZJFmwWjxayFtYW
+hcdF0EXZReJF64X0hf3GBsYQBhlGIoYrxjVGPoZIBlFGWsZkRm3Gd0aBBoqGlEadxqeGsUa7BsU
GzsbYxuKG7Ib2hwCHCocUhx7HKMczBz1HR4dRx1wHZkdwx3sHhYeQB5qHpQevh7pHxMfPh9pH5Qf
vx/qIBUgQSBsIJggxCDwIRwhSCF1IaEhziH7IiciVSKCIq8i3SMKIzgjZiOUI8Ij8CQfJE0kfCSr
JNolCSU4JWgllyXHJfcmJyZXJocmtyboJxgnSSd6J6sn3CgNKD8ocSiiKNQpBik4KWspnSnQKgIq
NSpoKpsqzysCKzYraSudK9EsBSw5LG4soizXLQwtQS12Last4S4WLkwugi63Lu4vJC9aL5Evxy/+
MDUwbDCkMNsxEjFKMYIxujHyMioyYzKbMtQzDTNGM38zuDPxNCs0ZTSeNNg1EzVNNYc1wjX9Njc2
cjauNuk3JDdgN5w31zgUOFA4jDjIOQU5Qjl/Obw5+To2OnQ6sjrvOy07azuqO+g8JzxlPKQ84z0i
PWE9oT3gPiA+YD6gPuA/IT9hP6I/4kAjQGRApkDnQSlBakGsQe5CMEJyQrVC90M6Q31DwEQDREdE
ikTORRJFVUWaRd5GIkZnRqtG8Ec1R3tHwEgFSEtIkUjXSR1JY0mpSfBKN0p9SsRLDEtTS5pL4kwq
THJMuk0CTUpNk03cTiVObk63TwBPSU+TT91QJ1BxULtRBlFQUZtR5lIxUnxSx1MTU19TqlP2VEJU
j1TbVShVdVXCVg9WXFapVvdXRFeSV+BYL1h9WMtZGllpWbhaB1pWWqZa9VtFW5Vb5Vw1XIZc1l0n
XXhdyV4aXmxevV8PX2Ffs2AFYFdgqmD8YU9homH1YklinGLwY0Njl2PrZEBklGTpZT1lkmXnZj1m
kmboZz1nk2fpaD9olmjsaUNpmmnxakhqn2r3a09rp2v/bFdsr20IbWBtuW4SbmtuxG8eb3hv0XAr
cIZw4HE6cZVx8HJLcqZzAXNdc7h0FHRwdMx1KHWFdeF2Pnabdvh3VnezeBF4bnjMeSp5iXnnekZ6
pXsEe2N7wnwhfIF84X1BfaF+AX5ifsJ/I3+Ef+WAR4CogQqBa4HNgjCCkoL0g1eDuoQdhICE44VH
hauGDoZyhteHO4efiASIaYjOiTOJmYn+imSKyoswi5aL/IxjjMqNMY2Yjf+OZo7OjzaPnpAGkG6Q
1pE/kaiSEZJ6kuOTTZO2lCCUipT0lV+VyZY0lp+XCpd1l+CYTJi4mSSZkJn8mmia1ZtCm6+cHJyJ
nPedZJ3SnkCerp8dn4uf+qBpoNihR6G2oiailqMGo3aj5qRWpMelOKWpphqmi6b9p26n4KhSqMSp
N6mpqhyqj6sCq3Wr6axcrNCtRK24ri2uoa8Wr4uwALB1sOqxYLHWskuywrM4s660JbSctRO1irYB
tnm28Ldot+C4WbjRuUq5wro7urW7LrunvCG8m70VvY++Cr6Evv+/er/1wHDA7MFnwePCX8Lbw1jD
1MRRxM7FS8XIxkbGw8dBx7/IPci8yTrJuco4yrfLNsu2zDXMtc01zbXONs62zzfPuNA50LrRPNG+
0j/SwdNE08bUSdTL1U7V0dZV1tjXXNfg2GTY6Nls2fHadtr724DcBdyK3RDdlt4c3qLfKd+v4Dbg
veFE4cziU+Lb42Pj6+Rz5PzlhOYN5pbnH+ep6DLovOlG6dDqW+rl63Dr++yG7RHtnO4o7rTvQO/M
8Fjw5fFy8f/yjPMZ86f0NPTC9VD13vZt9vv3ivgZ+Kj5OPnH+lf65/t3/Af8mP0p/br+S/7c/23/
///tAAxBZG9iZV9DTQAB/+4ADkFkb2JlAGSAAAAAAf/bAIQADAgICAkIDAkJDBELCgsRFQ8MDA8V
GBMTFRMTGBEMDAwMDAwRDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAENCwsNDg0QDg4QFA4O
DhQUDg4ODhQRDAwMDAwREQwMDAwMDBEMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwM/8AAEQgA
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
O/R+purtS96etkHioGxHXh7q9qGmm2o1OlulX9Xq7Mxmb1LIs6hfTrS2wNbUw/vMorG3d/WQ+p/V
27P6lT1EZz6LMbTHaxjSG/vTu+nuQ+ofWDJxOqOw2ilwrFB9Ihxtt9Z7q7fQ2n/Atb6v0bEDB+sf
Uc+5lFDKhvsIFzmuj0/S+0M/RMsftu3ezY61AZZg3fSttK8le3Eiq63v183Uq6bnfbKcjKznZDKN
22kVtY0ucNu9+z6W1Az/AKuNu6h+1MHJfgZpG2x7AHNeP+Eqd9LhUMT6w9VdTRY5tOQ0V4zryxrm
vc+82seyv3OZW+l9Pv8A5f8Ao0Xp3Xuq5tmKz0qGtyLIe+S4taK33WVFldj9lzHN2fpdn/FJDJIG
wa0rYVX91JxxIojre+t+bLP+qdnUfRty+oW2ZVL97LdrQ0R+ayhv6NvuVzI6PlWZjOoU5zqcplIo
dDGureAXPJspd/Kd+bYtVJL3Z6a7XWg6o9uOum/iejmYnR3sz/2lnZBy8trTXUdorZW0/S9KoF3u
f++5600kk2UjLUrhEDZSSSSCVJJJJKf/0fVCAQQRM6FLa3TQaaBOkkpYgEQRI8E2xkEbRDjJ05Kk
kkpaB4JbWyDAkcH4p0klMXMY4EEcgtkaGD5hU6ui9MpsZbXTD67Dc1xe9x3lvpbzve7d+j/eV5JJ
SFuJjMybMtrAL7Wta9+skMnYP3fz0UNaOAAnSSUsGtHAA7pBrRMACTJ+KdJJSkkkklKSSSSUpJJJ
JSkkkklP/9n/7R7qUGhvdG9zaG9wIDMuMAA4QklNBCUAAAAAABAAAAAAAAAAAAAAAAAAAAAAOEJJ
TQQ6AAAAAACrAAAAEAAAAAEAAAAAAAtwcmludE91dHB1dAAAAAQAAAAAUHN0U2Jvb2wBAAAAAElu
dGVlbnVtAAAAAEludGUAAAAAQ2xybQAAAA9wcmludFNpeHRlZW5CaXRib29sAAAAAAtwcmludGVy
TmFtZVRFWFQAAAAbAFwAXABNAEEARABGAEwARQBYAFwARgBvAGwAbABvAHcALQBNAGUAIABDAG8A
bABvAHUAcgAAADhCSU0EOwAAAAABsgAAABAAAAABAAAAAAAScHJpbnRPdXRwdXRPcHRpb25zAAAA
EgAAAABDcHRuYm9vbAAAAAAAQ2xicmJvb2wAAAAAAFJnc01ib29sAAAAAABDcm5DYm9vbAAAAAAA
Q250Q2Jvb2wAAAAAAExibHNib29sAAAAAABOZ3R2Ym9vbAAAAAAARW1sRGJvb2wAAAAAAEludHJi
b29sAAAAAABCY2tnT2JqYwAAAAEAAAAAAABSR0JDAAAAAwAAAABSZCAgZG91YkBv4AAAAAAAAAAA
AEdybiBkb3ViQG/gAAAAAAAAAAAAQmwgIGRvdWJAb+AAAAAAAAAAAABCcmRUVW50RiNSbHQAAAAA
AAAAAAAAAABCbGQgVW50RiNSbHQAAAAAAAAAAAAAAABSc2x0VW50RiNQeGxAUgAAAAAAAAAAAAp2
ZWN0b3JEYXRhYm9vbAEAAAAAUGdQc2VudW0AAAAAUGdQcwAAAABQZ1BDAAAAAExlZnRVbnRGI1Js
dAAAAAAAAAAAAAAAAFRvcCBVbnRGI1JsdAAAAAAAAAAAAAAAAFNjbCBVbnRGI1ByY0BZAAAAAAAA
OEJJTQPtAAAAAAAQAEgAAAABAAIASAAAAAEAAjhCSU0EJgAAAAAADgAAAAAAAAAAAAA/gAAAOEJJ
TQQNAAAAAAAEAAAAeDhCSU0EGQAAAAAABAAAAB44QklNA/MAAAAAAAkAAAAAAAAAAAEAOEJJTScQ
AAAAAAAKAAEAAAAAAAAAAjhCSU0D9QAAAAAASAAvZmYAAQBsZmYABgAAAAAAAQAvZmYAAQChmZoA
BgAAAAAAAQAyAAAAAQBaAAAABgAAAAAAAQA1AAAAAQAtAAAABgAAAAAAAThCSU0D+AAAAAAAcAAA
/////////////////////////////wPoAAAAAP////////////////////////////8D6AAAAAD/
////////////////////////////A+gAAAAA/////////////////////////////wPoAAA4QklN
BAAAAAAAAAIAAjhCSU0EAgAAAAAABgAAAAAAADhCSU0EMAAAAAAAAwEBAQA4QklNBC0AAAAAAAYA
AQAAAAQ4QklNBAgAAAAAABAAAAABAAACQAAAAkAAAAAAOEJJTQQeAAAAAAAEAAAAADhCSU0EGgAA
AAADSQAAAAYAAAAAAAAAAAAAADAAAACWAAAACgBVAG4AdABpAHQAbABlAGQALQAyAAAAAQAAAAAA
AAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAACWAAAAMAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAA
AAAAAAAAAAAAABAAAAABAAAAAAAAbnVsbAAAAAIAAAAGYm91bmRzT2JqYwAAAAEAAAAAAABSY3Qx
AAAABAAAAABUb3AgbG9uZwAAAAAAAAAATGVmdGxvbmcAAAAAAAAAAEJ0b21sb25nAAAAMAAAAABS
Z2h0bG9uZwAAAJYAAAAGc2xpY2VzVmxMcwAAAAFPYmpjAAAAAQAAAAAABXNsaWNlAAAAEgAAAAdz
bGljZUlEbG9uZwAAAAAAAAAHZ3JvdXBJRGxvbmcAAAAAAAAABm9yaWdpbmVudW0AAAAMRVNsaWNl
T3JpZ2luAAAADWF1dG9HZW5lcmF0ZWQAAAAAVHlwZWVudW0AAAAKRVNsaWNlVHlwZQAAAABJbWcg
AAAABmJvdW5kc09iamMAAAABAAAAAAAAUmN0MQAAAAQAAAAAVG9wIGxvbmcAAAAAAAAAAExlZnRs
b25nAAAAAAAAAABCdG9tbG9uZwAAADAAAAAAUmdodGxvbmcAAACWAAAAA3VybFRFWFQAAAABAAAA
AAAAbnVsbFRFWFQAAAABAAAAAAAATXNnZVRFWFQAAAABAAAAAAAGYWx0VGFnVEVYVAAAAAEAAAAA
AA5jZWxsVGV4dElzSFRNTGJvb2wBAAAACGNlbGxUZXh0VEVYVAAAAAEAAAAAAAlob3J6QWxpZ25l
bnVtAAAAD0VTbGljZUhvcnpBbGlnbgAAAAdkZWZhdWx0AAAACXZlcnRBbGlnbmVudW0AAAAPRVNs
aWNlVmVydEFsaWduAAAAB2RlZmF1bHQAAAALYmdDb2xvclR5cGVlbnVtAAAAEUVTbGljZUJHQ29s
b3JUeXBlAAAAAE5vbmUAAAAJdG9wT3V0c2V0bG9uZwAAAAAAAAAKbGVmdE91dHNldGxvbmcAAAAA
AAAADGJvdHRvbU91dHNldGxvbmcAAAAAAAAAC3JpZ2h0T3V0c2V0bG9uZwAAAAAAOEJJTQQoAAAA
AAAMAAAAAj/wAAAAAAAAOEJJTQQUAAAAAAAEAAAABDhCSU0EDAAAAAAWhAAAAAEAAACWAAAAMAAA
AcQAAFTAAAAWaAAYAAH/2P/iDFhJQ0NfUFJPRklMRQABAQAADEhMaW5vAhAAAG1udHJSR0IgWFla
IAfOAAIACQAGADEAAGFjc3BNU0ZUAAAAAElFQyBzUkdCAAAAAAAAAAAAAAAAAAD21gABAAAAANMt
SFAgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEWNwcnQA
AAFQAAAAM2Rlc2MAAAGEAAAAbHd0cHQAAAHwAAAAFGJrcHQAAAIEAAAAFHJYWVoAAAIYAAAAFGdY
WVoAAAIsAAAAFGJYWVoAAAJAAAAAFGRtbmQAAAJUAAAAcGRtZGQAAALEAAAAiHZ1ZWQAAANMAAAA
hnZpZXcAAAPUAAAAJGx1bWkAAAP4AAAAFG1lYXMAAAQMAAAAJHRlY2gAAAQwAAAADHJUUkMAAAQ8
AAAIDGdUUkMAAAQ8AAAIDGJUUkMAAAQ8AAAIDHRleHQAAAAAQ29weXJpZ2h0IChjKSAxOTk4IEhl
d2xldHQtUGFja2FyZCBDb21wYW55AABkZXNjAAAAAAAAABJzUkdCIElFQzYxOTY2LTIuMQAAAAAA
AAAAAAAAEnNSR0IgSUVDNjE5NjYtMi4xAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAABYWVogAAAAAAAA81EAAQAAAAEWzFhZWiAAAAAAAAAAAAAAAAAAAAAA
WFlaIAAAAAAAAG+iAAA49QAAA5BYWVogAAAAAAAAYpkAALeFAAAY2lhZWiAAAAAAAAAkoAAAD4QA
ALbPZGVzYwAAAAAAAAAWSUVDIGh0dHA6Ly93d3cuaWVjLmNoAAAAAAAAAAAAAAAWSUVDIGh0dHA6
Ly93d3cuaWVjLmNoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AGRlc2MAAAAAAAAALklFQyA2MTk2Ni0yLjEgRGVmYXVsdCBSR0IgY29sb3VyIHNwYWNlIC0gc1JH
QgAAAAAAAAAAAAAALklFQyA2MTk2Ni0yLjEgRGVmYXVsdCBSR0IgY29sb3VyIHNwYWNlIC0gc1JH
QgAAAAAAAAAAAAAAAAAAAAAAAAAAAABkZXNjAAAAAAAAACxSZWZlcmVuY2UgVmlld2luZyBDb25k
aXRpb24gaW4gSUVDNjE5NjYtMi4xAAAAAAAAAAAAAAAsUmVmZXJlbmNlIFZpZXdpbmcgQ29uZGl0
aW9uIGluIElFQzYxOTY2LTIuMQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdmlldwAAAAAAE6T+
ABRfLgAQzxQAA+3MAAQTCwADXJ4AAAABWFlaIAAAAAAATAlWAFAAAABXH+dtZWFzAAAAAAAAAAEA
AAAAAAAAAAAAAAAAAAAAAAACjwAAAAJzaWcgAAAAAENSVCBjdXJ2AAAAAAAABAAAAAAFAAoADwAU
ABkAHgAjACgALQAyADcAOwBAAEUASgBPAFQAWQBeAGMAaABtAHIAdwB8AIEAhgCLAJAAlQCaAJ8A
pACpAK4AsgC3ALwAwQDGAMsA0ADVANsA4ADlAOsA8AD2APsBAQEHAQ0BEwEZAR8BJQErATIBOAE+
AUUBTAFSAVkBYAFnAW4BdQF8AYMBiwGSAZoBoQGpAbEBuQHBAckB0QHZAeEB6QHyAfoCAwIMAhQC
HQImAi8COAJBAksCVAJdAmcCcQJ6AoQCjgKYAqICrAK2AsECywLVAuAC6wL1AwADCwMWAyEDLQM4
A0MDTwNaA2YDcgN+A4oDlgOiA64DugPHA9MD4APsA/kEBgQTBCAELQQ7BEgEVQRjBHEEfgSMBJoE
qAS2BMQE0wThBPAE/gUNBRwFKwU6BUkFWAVnBXcFhgWWBaYFtQXFBdUF5QX2BgYGFgYnBjcGSAZZ
BmoGewaMBp0GrwbABtEG4wb1BwcHGQcrBz0HTwdhB3QHhgeZB6wHvwfSB+UH+AgLCB8IMghGCFoI
bgiCCJYIqgi+CNII5wj7CRAJJQk6CU8JZAl5CY8JpAm6Cc8J5Qn7ChEKJwo9ClQKagqBCpgKrgrF
CtwK8wsLCyILOQtRC2kLgAuYC7ALyAvhC/kMEgwqDEMMXAx1DI4MpwzADNkM8w0NDSYNQA1aDXQN
jg2pDcMN3g34DhMOLg5JDmQOfw6bDrYO0g7uDwkPJQ9BD14Peg+WD7MPzw/sEAkQJhBDEGEQfhCb
ELkQ1xD1ERMRMRFPEW0RjBGqEckR6BIHEiYSRRJkEoQSoxLDEuMTAxMjE0MTYxODE6QTxRPlFAYU
JxRJFGoUixStFM4U8BUSFTQVVhV4FZsVvRXgFgMWJhZJFmwWjxayFtYW+hcdF0EXZReJF64X0hf3
GBsYQBhlGIoYrxjVGPoZIBlFGWsZkRm3Gd0aBBoqGlEadxqeGsUa7BsUGzsbYxuKG7Ib2hwCHCoc
Uhx7HKMczBz1HR4dRx1wHZkdwx3sHhYeQB5qHpQevh7pHxMfPh9pH5Qfvx/qIBUgQSBsIJggxCDw
IRwhSCF1IaEhziH7IiciVSKCIq8i3SMKIzgjZiOUI8Ij8CQfJE0kfCSrJNolCSU4JWgllyXHJfcm
JyZXJocmtyboJxgnSSd6J6sn3CgNKD8ocSiiKNQpBik4KWspnSnQKgIqNSpoKpsqzysCKzYraSud
K9EsBSw5LG4soizXLQwtQS12Last4S4WLkwugi63Lu4vJC9aL5Evxy/+MDUwbDCkMNsxEjFKMYIx
ujHyMioyYzKbMtQzDTNGM38zuDPxNCs0ZTSeNNg1EzVNNYc1wjX9Njc2cjauNuk3JDdgN5w31zgU
OFA4jDjIOQU5Qjl/Obw5+To2OnQ6sjrvOy07azuqO+g8JzxlPKQ84z0iPWE9oT3gPiA+YD6gPuA/
IT9hP6I/4kAjQGRApkDnQSlBakGsQe5CMEJyQrVC90M6Q31DwEQDREdEikTORRJFVUWaRd5GIkZn
RqtG8Ec1R3tHwEgFSEtIkUjXSR1JY0mpSfBKN0p9SsRLDEtTS5pL4kwqTHJMuk0CTUpNk03cTiVO
bk63TwBPSU+TT91QJ1BxULtRBlFQUZtR5lIxUnxSx1MTU19TqlP2VEJUj1TbVShVdVXCVg9WXFap
VvdXRFeSV+BYL1h9WMtZGllpWbhaB1pWWqZa9VtFW5Vb5Vw1XIZc1l0nXXhdyV4aXmxevV8PX2Ff
s2AFYFdgqmD8YU9homH1YklinGLwY0Njl2PrZEBklGTpZT1lkmXnZj1mkmboZz1nk2fpaD9olmjs
aUNpmmnxakhqn2r3a09rp2v/bFdsr20IbWBtuW4SbmtuxG8eb3hv0XArcIZw4HE6cZVx8HJLcqZz
AXNdc7h0FHRwdMx1KHWFdeF2Pnabdvh3VnezeBF4bnjMeSp5iXnnekZ6pXsEe2N7wnwhfIF84X1B
faF+AX5ifsJ/I3+Ef+WAR4CogQqBa4HNgjCCkoL0g1eDuoQdhICE44VHhauGDoZyhteHO4efiASI
aYjOiTOJmYn+imSKyoswi5aL/IxjjMqNMY2Yjf+OZo7OjzaPnpAGkG6Q1pE/kaiSEZJ6kuOTTZO2
lCCUipT0lV+VyZY0lp+XCpd1l+CYTJi4mSSZkJn8mmia1ZtCm6+cHJyJnPedZJ3SnkCerp8dn4uf
+qBpoNihR6G2oiailqMGo3aj5qRWpMelOKWpphqmi6b9p26n4KhSqMSpN6mpqhyqj6sCq3Wr6axc
rNCtRK24ri2uoa8Wr4uwALB1sOqxYLHWskuywrM4s660JbSctRO1irYBtnm28Ldot+C4WbjRuUq5
wro7urW7LrunvCG8m70VvY++Cr6Evv+/er/1wHDA7MFnwePCX8Lbw1jD1MRRxM7FS8XIxkbGw8dB
x7/IPci8yTrJuco4yrfLNsu2zDXMtc01zbXONs62zzfPuNA50LrRPNG+0j/SwdNE08bUSdTL1U7V
0dZV1tjXXNfg2GTY6Nls2fHadtr724DcBdyK3RDdlt4c3qLfKd+v4DbgveFE4cziU+Lb42Pj6+Rz
5PzlhOYN5pbnH+ep6DLovOlG6dDqW+rl63Dr++yG7RHtnO4o7rTvQO/M8Fjw5fFy8f/yjPMZ86f0
NPTC9VD13vZt9vv3ivgZ+Kj5OPnH+lf65/t3/Af8mP0p/br+S/7c/23////tAAxBZG9iZV9DTQAB
/+4ADkFkb2JlAGSAAAAAAf/bAIQADAgICAkIDAkJDBELCgsRFQ8MDA8VGBMTFRMTGBEMDAwMDAwR
DAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAENCwsNDg0QDg4QFA4ODhQUDg4ODhQRDAwMDAwR
EQwMDAwMDBEMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwM/8AAEQgAMACWAwEiAAIRAQMRAf/d
AAQACv/EAT8AAAEFAQEBAQEBAAAAAAAAAAMAAQIEBQYHCAkKCwEAAQUBAQEBAQEAAAAAAAAAAQAC
AwQFBgcICQoLEAABBAEDAgQCBQcGCAUDDDMBAAIRAwQhEjEFQVFhEyJxgTIGFJGhsUIjJBVSwWIz
NHKC0UMHJZJT8OHxY3M1FqKygyZEk1RkRcKjdDYX0lXiZfKzhMPTdePzRieUpIW0lcTU5PSltcXV
5fVWZnaGlqa2xtbm9jdHV2d3h5ent8fX5/cRAAICAQIEBAMEBQYHBwYFNQEAAhEDITESBEFRYXEi
EwUygZEUobFCI8FS0fAzJGLhcoKSQ1MVY3M08SUGFqKygwcmNcLSRJNUoxdkRVU2dGXi8rOEw9N1
4/NGlKSFtJXE1OT0pbXF1eX1VmZ2hpamtsbW5vYnN0dXZ3eHl6e3x//aAAwDAQACEQMRAD8A77qH
Tur9RvcG5r+n4rNK20D9I8/nWWWT7G/uVtWf9XsvqmN1zL6Fn5BzG0sFtN7vpQdujv7L1br6tndT
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
SSSCVJJJJKf/0fVCAQQRM6FLa3TQaaBOkkpYgEQRI8E2xkEbRDjJ05KkkkpaB4JbWyDAkcH4p0kl
MXMY4EEcgtkaGD5hU6ui9MpsZbXTD67Dc1xe9x3lvpbzve7d+j/eV5JJSFuJjMybMtrAL7Wta9+s
kMnYP3fz0UNaOAAnSSUsGtHAA7pBrRMACTJ+KdJJSkkkklKSSSSUpJJJJSkkkklP/9k4QklNBCEA
AAAAAFkAAAABAQAAAA8AQQBkAG8AYgBlACAAUABoAG8AdABvAHMAaABvAHAAAAAVAEEAZABvAGIA
ZQAgAFAAaABvAHQAbwBzAGgAbwBwACAAQwBTADUALgAxAAAAAQA4QklNBAYAAAAAAAcACAAAAAEB
AP/hDl9odHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvADw/eHBhY2tldCBiZWdpbj0i77u/IiBp
ZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6
bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYxIDY0LjE0MDk0OSwgMjAx
MC8xMi8wNy0xMDo1NzowMSAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3
LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6
YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4
bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RFdnQ9Imh0dHA6
Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZUV2ZW50IyIgeG1sbnM6cGhvdG9z
aG9wPSJodHRwOi8vbnMuYWRvYmUuY29tL3Bob3Rvc2hvcC8xLjAvIiB4bWxuczpkYz0iaHR0cDov
L3B1cmwub3JnL2RjL2VsZW1lbnRzLzEuMS8iIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9z
aG9wIENTNS4xIFdpbmRvd3MiIHhtcDpDcmVhdGVEYXRlPSIyMDEyLTAxLTE3VDEzOjE4OjE4KzAx
OjAwIiB4bXA6TWV0YWRhdGFEYXRlPSIyMDEyLTAxLTE3VDEzOjE4OjE4KzAxOjAwIiB4bXA6TW9k
aWZ5RGF0ZT0iMjAxMi0wMS0xN1QxMzoxODoxOCswMTowMCIgeG1wTU06SW5zdGFuY2VJRD0ieG1w
LmlpZDowM0M5RDEwNzQ4NDBFMTExQTRBM0U4ODYxMDMxOEUyMSIgeG1wTU06RG9jdW1lbnRJRD0i
eG1wLmRpZDowMkM5RDEwNzQ4NDBFMTExQTRBM0U4ODYxMDMxOEUyMSIgeG1wTU06T3JpZ2luYWxE
b2N1bWVudElEPSJ4bXAuZGlkOjAyQzlEMTA3NDg0MEUxMTFBNEEzRTg4NjEwMzE4RTIxIiBwaG90
b3Nob3A6Q29sb3JNb2RlPSIzIiBwaG90b3Nob3A6SUNDUHJvZmlsZT0ic1JHQiBJRUM2MTk2Ni0y
LjEiIGRjOmZvcm1hdD0iaW1hZ2UvanBlZyI+IDx4bXBNTTpIaXN0b3J5PiA8cmRmOlNlcT4gPHJk
ZjpsaSBzdEV2dDphY3Rpb249ImNyZWF0ZWQiIHN0RXZ0Omluc3RhbmNlSUQ9InhtcC5paWQ6MDJD
OUQxMDc0ODQwRTExMUE0QTNFODg2MTAzMThFMjEiIHN0RXZ0OndoZW49IjIwMTItMDEtMTdUMTM6
MTg6MTgrMDE6MDAiIHN0RXZ0OnNvZnR3YXJlQWdlbnQ9IkFkb2JlIFBob3Rvc2hvcCBDUzUuMSBX
aW5kb3dzIi8+IDxyZGY6bGkgc3RFdnQ6YWN0aW9uPSJzYXZlZCIgc3RFdnQ6aW5zdGFuY2VJRD0i
eG1wLmlpZDowM0M5RDEwNzQ4NDBFMTExQTRBM0U4ODYxMDMxOEUyMSIgc3RFdnQ6d2hlbj0iMjAx
Mi0wMS0xN1QxMzoxODoxOCswMTowMCIgc3RFdnQ6c29mdHdhcmVBZ2VudD0iQWRvYmUgUGhvdG9z
aG9wIENTNS4xIFdpbmRvd3MiIHN0RXZ0OmNoYW5nZWQ9Ii8iLz4gPC9yZGY6U2VxPiA8L3htcE1N
Okhpc3Rvcnk+IDxwaG90b3Nob3A6RG9jdW1lbnRBbmNlc3RvcnM+IDxyZGY6QmFnPiA8cmRmOmxp
PnV1aWQ6MTg2RjYyNkQ4N0VEREIxMUE1RUZFREUxRjM0Mzg1OUM8L3JkZjpsaT4gPC9yZGY6QmFn
PiA8L3Bob3Rvc2hvcDpEb2N1bWVudEFuY2VzdG9ycz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRm
OlJERj4gPC94OnhtcG1ldGE+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgPD94cGFja2V0IGVuZD0idyI/Pv/iDFhJQ0NfUFJPRklMRQABAQAADEhM
aW5vAhAAAG1udHJSR0IgWFlaIAfOAAIACQAGADEAAGFjc3BNU0ZUAAAAAElFQyBzUkdCAAAAAAAA
AAAAAAABAAD21gABAAAAANMtSFAgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAEWNwcnQAAAFQAAAAM2Rlc2MAAAGEAAAAbHd0cHQAAAHwAAAAFGJrcHQAAAIE
AAAAFHJYWVoAAAIYAAAAFGdYWVoAAAIsAAAAFGJYWVoAAAJAAAAAFGRtbmQAAAJUAAAAcGRtZGQA
AALEAAAAiHZ1ZWQAAANMAAAAhnZpZXcAAAPUAAAAJGx1bWkAAAP4AAAAFG1lYXMAAAQMAAAAJHRl
Y2gAAAQwAAAADHJUUkMAAAQ8AAAIDGdUUkMAAAQ8AAAIDGJUUkMAAAQ8AAAIDHRleHQAAAAAQ29w
eXJpZ2h0IChjKSAxOTk4IEhld2xldHQtUGFja2FyZCBDb21wYW55AABkZXNjAAAAAAAAABJzUkdC
IElFQzYxOTY2LTIuMQAAAAAAAAAAAAAAEnNSR0IgSUVDNjE5NjYtMi4xAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABYWVogAAAAAAAA81EAAQAAAAEWzFhZ
WiAAAAAAAAAAAAAAAAAAAAAAWFlaIAAAAAAAAG+iAAA49QAAA5BYWVogAAAAAAAAYpkAALeFAAAY
2lhZWiAAAAAAAAAkoAAAD4QAALbPZGVzYwAAAAAAAAAWSUVDIGh0dHA6Ly93d3cuaWVjLmNoAAAA
AAAAAAAAAAAWSUVDIGh0dHA6Ly93d3cuaWVjLmNoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAGRlc2MAAAAAAAAALklFQyA2MTk2Ni0yLjEgRGVmYXVsdCBSR0Ig
Y29sb3VyIHNwYWNlIC0gc1JHQgAAAAAAAAAAAAAALklFQyA2MTk2Ni0yLjEgRGVmYXVsdCBSR0Ig
Y29sb3VyIHNwYWNlIC0gc1JHQgAAAAAAAAAAAAAAAAAAAAAAAAAAAABkZXNjAAAAAAAAACxSZWZl
cmVuY2UgVmlld2luZyBDb25kaXRpb24gaW4gSUVDNjE5NjYtMi4xAAAAAAAAAAAAAAAsUmVmZXJl
bmNlIFZpZXdpbmcgQ29uZGl0aW9uIGluIElFQzYxOTY2LTIuMQAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAdmlldwAAAAAAE6T+ABRfLgAQzxQAA+3MAAQTCwADXJ4AAAABWFlaIAAAAAAATAlWAFAA
AABXH+dtZWFzAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAACjwAAAAJzaWcgAAAAAENSVCBjdXJ2
AAAAAAAABAAAAAAFAAoADwAUABkAHgAjACgALQAyADcAOwBAAEUASgBPAFQAWQBeAGMAaABtAHIA
dwB8AIEAhgCLAJAAlQCaAJ8ApACpAK4AsgC3ALwAwQDGAMsA0ADVANsA4ADlAOsA8AD2APsBAQEH
AQ0BEwEZAR8BJQErATIBOAE+AUUBTAFSAVkBYAFnAW4BdQF8AYMBiwGSAZoBoQGpAbEBuQHBAckB
0QHZAeEB6QHyAfoCAwIMAhQCHQImAi8COAJBAksCVAJdAmcCcQJ6AoQCjgKYAqICrAK2AsECywLV
AuAC6wL1AwADCwMWAyEDLQM4A0MDTwNaA2YDcgN+A4oDlgOiA64DugPHA9MD4APsA/kEBgQTBCAE
LQQ7BEgEVQRjBHEEfgSMBJoEqAS2BMQE0wThBPAE/gUNBRwFKwU6BUkFWAVnBXcFhgWWBaYFtQXF
BdUF5QX2BgYGFgYnBjcGSAZZBmoGewaMBp0GrwbABtEG4wb1BwcHGQcrBz0HTwdhB3QHhgeZB6wH
vwfSB+UH+AgLCB8IMghGCFoIbgiCCJYIqgi+CNII5wj7CRAJJQk6CU8JZAl5CY8JpAm6Cc8J5Qn7
ChEKJwo9ClQKagqBCpgKrgrFCtwK8wsLCyILOQtRC2kLgAuYC7ALyAvhC/kMEgwqDEMMXAx1DI4M
pwzADNkM8w0NDSYNQA1aDXQNjg2pDcMN3g34DhMOLg5JDmQOfw6bDrYO0g7uDwkPJQ9BD14Peg+W
D7MPzw/sEAkQJhBDEGEQfhCbELkQ1xD1ERMRMRFPEW0RjBGqEckR6BIHEiYSRRJkEoQSoxLDEuMT
AxMjE0MTYxODE6QTxRPlFAYUJxRJFGoUixStFM4U8BUSFTQVVhV4FZsVvRXgFgMWJhZJFmwWjxay
FtYW+hcdF0EXZReJF64X0hf3GBsYQBhlGIoYrxjVGPoZIBlFGWsZkRm3Gd0aBBoqGlEadxqeGsUa
7BsUGzsbYxuKG7Ib2hwCHCocUhx7HKMczBz1HR4dRx1wHZkdwx3sHhYeQB5qHpQevh7pHxMfPh9p
H5Qfvx/qIBUgQSBsIJggxCDwIRwhSCF1IaEhziH7IiciVSKCIq8i3SMKIzgjZiOUI8Ij8CQfJE0k
fCSrJNolCSU4JWgllyXHJfcmJyZXJocmtyboJxgnSSd6J6sn3CgNKD8ocSiiKNQpBik4KWspnSnQ
KgIqNSpoKpsqzysCKzYraSudK9EsBSw5LG4soizXLQwtQS12Last4S4WLkwugi63Lu4vJC9aL5Ev
xy/+MDUwbDCkMNsxEjFKMYIxujHyMioyYzKbMtQzDTNGM38zuDPxNCs0ZTSeNNg1EzVNNYc1wjX9
Njc2cjauNuk3JDdgN5w31zgUOFA4jDjIOQU5Qjl/Obw5+To2OnQ6sjrvOy07azuqO+g8JzxlPKQ8
4z0iPWE9oT3gPiA+YD6gPuA/IT9hP6I/4kAjQGRApkDnQSlBakGsQe5CMEJyQrVC90M6Q31DwEQD
REdEikTORRJFVUWaRd5GIkZnRqtG8Ec1R3tHwEgFSEtIkUjXSR1JY0mpSfBKN0p9SsRLDEtTS5pL
4kwqTHJMuk0CTUpNk03cTiVObk63TwBPSU+TT91QJ1BxULtRBlFQUZtR5lIxUnxSx1MTU19TqlP2
VEJUj1TbVShVdVXCVg9WXFapVvdXRFeSV+BYL1h9WMtZGllpWbhaB1pWWqZa9VtFW5Vb5Vw1XIZc
1l0nXXhdyV4aXmxevV8PX2Ffs2AFYFdgqmD8YU9homH1YklinGLwY0Njl2PrZEBklGTpZT1lkmXn
Zj1mkmboZz1nk2fpaD9olmjsaUNpmmnxakhqn2r3a09rp2v/bFdsr20IbWBtuW4SbmtuxG8eb3hv
0XArcIZw4HE6cZVx8HJLcqZzAXNdc7h0FHRwdMx1KHWFdeF2Pnabdvh3VnezeBF4bnjMeSp5iXnn
ekZ6pXsEe2N7wnwhfIF84X1BfaF+AX5ifsJ/I3+Ef+WAR4CogQqBa4HNgjCCkoL0g1eDuoQdhICE
44VHhauGDoZyhteHO4efiASIaYjOiTOJmYn+imSKyoswi5aL/IxjjMqNMY2Yjf+OZo7OjzaPnpAG
kG6Q1pE/kaiSEZJ6kuOTTZO2lCCUipT0lV+VyZY0lp+XCpd1l+CYTJi4mSSZkJn8mmia1ZtCm6+c
HJyJnPedZJ3SnkCerp8dn4uf+qBpoNihR6G2oiailqMGo3aj5qRWpMelOKWpphqmi6b9p26n4KhS
qMSpN6mpqhyqj6sCq3Wr6axcrNCtRK24ri2uoa8Wr4uwALB1sOqxYLHWskuywrM4s660JbSctRO1
irYBtnm28Ldot+C4WbjRuUq5wro7urW7LrunvCG8m70VvY++Cr6Evv+/er/1wHDA7MFnwePCX8Lb
w1jD1MRRxM7FS8XIxkbGw8dBx7/IPci8yTrJuco4yrfLNsu2zDXMtc01zbXONs62zzfPuNA50LrR
PNG+0j/SwdNE08bUSdTL1U7V0dZV1tjXXNfg2GTY6Nls2fHadtr724DcBdyK3RDdlt4c3qLfKd+v
4DbgveFE4cziU+Lb42Pj6+Rz5PzlhOYN5pbnH+ep6DLovOlG6dDqW+rl63Dr++yG7RHtnO4o7rTv
QO/M8Fjw5fFy8f/yjPMZ86f0NPTC9VD13vZt9vv3ivgZ+Kj5OPnH+lf65/t3/Af8mP0p/br+S/7c
/23////uAA5BZG9iZQBkQAAAAAH/2wCEAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEB
AQEBAQEBAQEBAQECAgICAgICAgICAgMDAwMDAwMDAwMBAQEBAQEBAQEBAQICAQICAwMDAwMDAwMD
AwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDA//AABEIADAAlgMBEQACEQED
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
i3Bn4q+s3DX7N2riOo919jbx2LkdrbS7H3HWbd7M29msHSY2Crz0+LSqjq5HkxME1M0MvuvFQK9X
Oe/dN9e9+691737r3Xvfuvde9+691737r3Xvfuvdf//T38ZqWmqY54ainhniqoXpqmOWJJEqKeRW
R4JlZSJYXRyCrXBBP9ffuvdcPsqPXTv9pTa6OGSnpG8EWqlgmESywU503hikWBAyrYEIL/Qe/de6
5TUlLUQimnpoJqcNE4glhjkhDwSJNA4jZSgaGWNWU2urAEcj37r3UNsJhnhrKd8TjXgyNUtdXwtR
Uxira1JIpkq6tDHpqKlJoEYO4LBkBvcD37r3U/wQGxMMXpN1/bT0nWslxxwdahv9cA+/de6wtQUL
zU9S9HSvUUhqDSztTxGWmNWuiqMEhTXEalOJNJGsfW/v3Xuo1bhcVkIamGpo4v8AKsZV4eWenMlF
WrjK8AVVJT19G9PXUkcpUNeKRGV1DKQwBHuvdFv2n8LfjTsncG391be65li3FtjsHJ9q4jLZTe/Y
m4qtOwMtsxevqncte24925Zc1VwbQU0dJHWiogoQ7yU0cUzvI3ut6jw6F7GdS9d4bsvdfcOO2xSQ
dk73we2Nt7n3S1TkairyOE2aMyNt0KUlTWTYzHLjl3BWAvSwQyTiYiVpAqafdeqaU8ul5BRUdKoW
mpKanUSTTBYYIogJamWSaokARVs880rM5+rMxJ5Pv3WuvQ0NFTqyQUlNCjzPUOsUEUatPLNJUyTM
FUAyvUSu5b6l2J+pPv3XuuNPj6CkeeSloqSmkqqmStqXgp4onnq5lCS1UzIimSolUWZzdiPqffuv
dTPfuvde9+691737r3Xvfuvde9+691737r3Xvfuvdf/U3+Pfuvde9+691737r3Xvfuvde9+69173
7r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuv
df/Z
--=_related 0060588BC1257A78_=--

--===============0736292306==
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: inline

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

--===============0736292306==--

From libssh2-devel-bounces@cool.haxx.se  Fri Sep 14 20:46:09 2012
Return-Path: <libssh2-devel-bounces@cool.haxx.se>
Received: from www.haxx.se (localhost.localdomain [127.0.0.1])
	by giant.haxx.se (8.14.4/8.14.4/Debian-2) with ESMTP id q8EIjbkA023639;
	Fri, 14 Sep 2012 20:46:00 +0200
Received: from nm36-vm4.bullet.mail.bf1.yahoo.com
 (nm36-vm4.bullet.mail.bf1.yahoo.com [72.30.238.140])
 by giant.haxx.se (8.14.4/8.14.4/Debian-2) with SMTP id q8EIjYH2023478
 for <libssh2-devel@cool.haxx.se>; Fri, 14 Sep 2012 20:45:34 +0200
Received: from [98.139.215.143] by nm36.bullet.mail.bf1.yahoo.com with NNFMP;
 14 Sep 2012 18:45:30 -0000
Received: from [98.139.212.221] by tm14.bullet.mail.bf1.yahoo.com with NNFMP;
 14 Sep 2012 18:45:30 -0000
Received: from [127.0.0.1] by omp1030.mail.bf1.yahoo.com with NNFMP;
 14 Sep 2012 18:45:30 -0000
X-Yahoo-Newman-Property: ymail-3
X-Yahoo-Newman-Id: 434536.16573.bm@omp1030.mail.bf1.yahoo.com
Received: (qmail 61243 invoked by uid 60001); 14 Sep 2012 18:45:30 -0000
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=yahoo.com; s=s1024;
 t=1347648330; bh=LU6OpO4beo5l2wu2d3Q1x8WAojsxrkqAiOeBAPkZmhY=;
 h=X-YMail-OSG:Received:X-Mailer:Message-ID:Date:From:Reply-To:Subject:To:MIME-Version:Content-Type;
 b=B9MRAgLVYk4rRmVJGAyJtaz91QH14jZsl6+VtfqV8ErRZ33UlCRDFdhM0vCFIOEZPOf/n4+m5/mjGxAaT3H8IMyKGCilu9mXygd82mI3TLN5a2Z1Bjp1GmKO2N3zvQIJZxSClVSKk2khoOCiIKNIQNnEAMETKZZXonfNMSE426w=
DomainKey-Signature: a=rsa-sha1; q=dns; c=nofws; s=s1024; d=yahoo.com;
 h=X-YMail-OSG:Received:X-Mailer:Message-ID:Date:From:Reply-To:Subject:To:MIME-Version:Content-Type;
 b=LuFMCmMY++mNsHQYlX6Bav0jjbsNkW8cgrR4ctJIG3MS72mDaf82pyW2QTGzTk+km3uPNUpR5+NvI2zCpdcwC5cAipFyd8yxp4NmxlRsDaUODoNQhJccZs0wquNhRfzuRejH3oV7A7Mgx1sB06AP1DFhGHyeres48gjmmwgFUWE=;
X-YMail-OSG: JfmiTlQVM1lcq9RHqvuZjj2JAZurI1zBdZzvad1q5QxL__H
 FQ_._uYFqm8E7YUoI_pJGGJO7utTh1fIA7IyG6bZ8D.aPAV9zAqCquzyytfT
 7lHuZLPz724ybfPwVVwRFZdihZFe8h82ufi5xv8wbQOdQzwClpCWnlKcDVAo
 VQqNVYG5ji2VE0ggq9fL77LbBgSAqb3fjmJVk5_FRPhG6e7dsCbE4hzSChTV
 dp2LlCJkLk5lmVX5nm_Edo2mGotjAI7zekQDZoAxNrNhYhlTSp7vUAW8mkYL
 Dau4GvI.0HAgZNLvRrA_fS2Qd5tj_WFU1DdpVfDDH8_7o.Y_0CmZ9YcgcJwc
 65ACBFzRlj8cg1ft88Hyr28rZJtp1rIpiMGPoLIf9XFedPrs6_h1xe70tp0B
 7QBIz016phHEKDOeSafc2Pj3yAM.sQMeKGi0d
Received: from [160.147.17.11] by web142603.mail.bf1.yahoo.com via HTTP;
 Fri, 14 Sep 2012 11:45:30 PDT
X-Mailer: YahooMailWebService/0.8.121.416
Message-ID: <1347648330.50731.YahooMailNeo@web142603.mail.bf1.yahoo.com>
Date: Fri, 14 Sep 2012 11:45:30 -0700 (PDT)
From: J H <j.h224@yahoo.com>
Subject: Want to static compile libssh2 and libcrypto both?
To: "libssh2-devel@cool.haxx.se" <libssh2-devel@cool.haxx.se>
MIME-Version: 1.0
X-BeenThere: libssh2-devel@cool.haxx.se
X-Mailman-Version: 2.1.15
Precedence: list
Reply-To: J H <j.h224@yahoo.com>,
        libssh2 development <libssh2-devel@cool.haxx.se>
List-Id: libssh2 development <libssh2-devel.cool.haxx.se>
List-Unsubscribe: <http://cool.haxx.se/cgi-bin/mailman/options/libssh2-devel>, 
 <mailto:libssh2-devel-request@cool.haxx.se?subject=unsubscribe>
List-Archive: <http://cool.haxx.se/pipermail/libssh2-devel/>
List-Post: <mailto:libssh2-devel@cool.haxx.se>
List-Help: <mailto:libssh2-devel-request@cool.haxx.se?subject=help>
List-Subscribe: <http://cool.haxx.se/cgi-bin/mailman/listinfo/libssh2-devel>, 
 <mailto:libssh2-devel-request@cool.haxx.se?subject=subscribe>
Content-Type: multipart/mixed; boundary="===============1389050825=="
Errors-To: libssh2-devel-bounces@cool.haxx.se
Sender: "libssh2-devel" <libssh2-devel-bounces@cool.haxx.se>

--===============1389050825==
Content-Type: multipart/alternative; boundary="-908725958-723391215-1347648330=:50731"

---908725958-723391215-1347648330=:50731
Content-Type: text/plain; charset=iso-8859-1
Content-Transfer-Encoding: quoted-printable

In my project, I can statically link libssh2 or libcrypto, but not both?=A0=
=A0 When I try both, I get a bunch of undefined reference error from libssh=
2.a for openssl functions.=A0=A0 It seems like libcrypto is not statically =
linked in libssh2.a.=A0=A0 What is the right way to build libssh2.a where l=
ibcrypto is statically linked in? =A0 If I build my project with libcrytpo =
as shared or dynamic lib, everything is golden.=0A=0A=0Aone of the many err=
ors(sorry for any typos):=A0=A0=A0=0Aundefined reference 'EVP_get_digestbyn=
ame' in function 'hostkey_method_ssh_dss_dtor'=0Afile not found: /usr/local=
/lib/libssh2.a(hostkey.o)=0A
---908725958-723391215-1347648330=:50731
Content-Type: text/html; charset=iso-8859-1
Content-Transfer-Encoding: quoted-printable

<html><body><div style=3D"color:#000; background-color:#fff; font-family:ti=
mes new roman, new york, times, serif;font-size:12pt"><div>In my project, I=
 can statically link libssh2 or libcrypto, but not both?&nbsp;&nbsp; When I=
 try both, I get a bunch of undefined reference error from libssh2.a for op=
enssl functions.&nbsp;&nbsp; It seems like libcrypto is not statically link=
ed in libssh2.a.&nbsp;&nbsp; What is the right way to build libssh2.a where=
 libcrypto is statically linked in? &nbsp; If I build my project with libcr=
ytpo as shared or dynamic lib, everything is golden.<br></div><div><br></di=
v><div style=3D"color: rgb(0, 0, 0); font-size: 16px; font-family: times ne=
w roman,new york,times,serif; background-color: transparent; font-style: no=
rmal;">one of the many errors(sorry for any typos):&nbsp;&nbsp;&nbsp;</div>=
<div style=3D"color: rgb(0, 0, 0); font-size: 16px; font-family: times new =
roman,new york,times,serif; background-color: transparent; font-style:
 normal;">undefined reference 'EVP_get_digestbyname' in function 'hostkey_m=
ethod_ssh_dss_dtor'</div><div style=3D"color: rgb(0, 0, 0); font-size: 16px=
; font-family: times new roman,new york,times,serif; background-color: tran=
sparent; font-style: normal;">file not found: /usr/local/lib/libssh2.a(host=
key.o)</div><div style=3D"color: rgb(0, 0, 0); font-size: 16px; font-family=
: times new roman,new york,times,serif; background-color: transparent; font=
-style: normal;"><br></div></div></body></html>
---908725958-723391215-1347648330=:50731--

--===============1389050825==
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: inline

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

--===============1389050825==--

From libssh2-devel-bounces@cool.haxx.se  Sat Sep 15 12:52:48 2012
Return-Path: <libssh2-devel-bounces@cool.haxx.se>
Received: from www.haxx.se (localhost.localdomain [127.0.0.1])
	by giant.haxx.se (8.14.4/8.14.4/Debian-2) with ESMTP id q8FApwdt006653;
	Sat, 15 Sep 2012 12:52:21 +0200
Received: from foo.stuge.se (qmailr@foo.stuge.se [212.116.89.98])
 by giant.haxx.se (8.14.4/8.14.4/Debian-2) with SMTP id q8FApuuC006632
 for <libssh2-devel@cool.haxx.se>; Sat, 15 Sep 2012 12:51:56 +0200
Received: (qmail 21325 invoked by uid 501); 15 Sep 2012 10:51:55 -0000
Message-ID: <20120915105155.21324.qmail@stuge.se>
Date: Sat, 15 Sep 2012 12:51:55 +0200
From: Peter Stuge <peter@stuge.se>
To: libssh2-devel@cool.haxx.se
Subject: Re: Want to static compile libssh2 and libcrypto both?
Mail-Followup-To: libssh2-devel@cool.haxx.se
References: <1347648330.50731.YahooMailNeo@web142603.mail.bf1.yahoo.com>
MIME-Version: 1.0
Content-Disposition: inline
In-Reply-To: <1347648330.50731.YahooMailNeo@web142603.mail.bf1.yahoo.com>
X-BeenThere: libssh2-devel@cool.haxx.se
X-Mailman-Version: 2.1.15
Precedence: list
Reply-To: libssh2 development <libssh2-devel@cool.haxx.se>
List-Id: libssh2 development <libssh2-devel.cool.haxx.se>
List-Unsubscribe: <http://cool.haxx.se/cgi-bin/mailman/options/libssh2-devel>, 
 <mailto:libssh2-devel-request@cool.haxx.se?subject=unsubscribe>
List-Archive: <http://cool.haxx.se/pipermail/libssh2-devel/>
List-Post: <mailto:libssh2-devel@cool.haxx.se>
List-Help: <mailto:libssh2-devel-request@cool.haxx.se?subject=help>
List-Subscribe: <http://cool.haxx.se/cgi-bin/mailman/listinfo/libssh2-devel>, 
 <mailto:libssh2-devel-request@cool.haxx.se?subject=subscribe>
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Errors-To: libssh2-devel-bounces@cool.haxx.se
Sender: "libssh2-devel" <libssh2-devel-bounces@cool.haxx.se>

J H wrote:
> What is the right way to build libssh2.a where libcrypto is
> statically linked in?

You never do that. You link your application with both libssh2.a and
libcrypto.a.


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

From libssh2-devel-bounces@cool.haxx.se  Sun Sep 16 23:58:05 2012
Return-Path: <libssh2-devel-bounces@cool.haxx.se>
Received: from www.haxx.se (localhost.localdomain [127.0.0.1])
	by giant.haxx.se (8.14.4/8.14.4/Debian-2) with ESMTP id q8GLsuD8019214;
	Sun, 16 Sep 2012 23:56:40 +0200
Received: from giant.haxx.se (localhost.localdomain [127.0.0.1])
 by giant.haxx.se (8.14.4/8.14.4/Debian-2) with ESMTP id q8GLst9h019209
 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NOT)
 for <libssh2-devel@cool.haxx.se>; Sun, 16 Sep 2012 23:54:55 +0200
Received: from localhost (dast@localhost)
 by giant.haxx.se (8.14.4/8.14.4/Submit) with ESMTP id q8GLssQQ019205
 for <libssh2-devel@cool.haxx.se>; Sun, 16 Sep 2012 23:54:54 +0200
X-Authentication-Warning: giant.haxx.se: dast owned process doing -bs
Date: Sun, 16 Sep 2012 23:54:54 +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: Cannot build libssh2
In-Reply-To: <OFFFF0C717.16303DDC-ONC1257A78.005FF116-C1257A78.0060ACA3@amadeus.com>
Message-ID: <alpine.DEB.2.00.1209162354060.2839@tvnag.unkk.fr>
References: <OFFFF0C717.16303DDC-ONC1257A78.005FF116-C1257A78.0060ACA3@amadeus.com>
User-Agent: Alpine 2.00 (DEB 1167 2008-08-23)
X-fromdanielhimself: yes
MIME-Version: 1.0
X-BeenThere: libssh2-devel@cool.haxx.se
X-Mailman-Version: 2.1.15
Precedence: list
Reply-To: libssh2 development <libssh2-devel@cool.haxx.se>
List-Id: libssh2 development <libssh2-devel.cool.haxx.se>
List-Unsubscribe: <http://cool.haxx.se/cgi-bin/mailman/options/libssh2-devel>, 
 <mailto:libssh2-devel-request@cool.haxx.se?subject=unsubscribe>
List-Archive: <http://cool.haxx.se/pipermail/libssh2-devel/>
List-Post: <mailto:libssh2-devel@cool.haxx.se>
List-Help: <mailto:libssh2-devel-request@cool.haxx.se?subject=help>
List-Subscribe: <http://cool.haxx.se/cgi-bin/mailman/listinfo/libssh2-devel>, 
 <mailto:libssh2-devel-request@cool.haxx.se?subject=subscribe>
Content-Transfer-Encoding: 7bit
Content-Type: text/plain; charset="us-ascii"; Format="flowed"
Errors-To: libssh2-devel-bounces@cool.haxx.se
Sender: "libssh2-devel" <libssh2-devel-bounces@cool.haxx.se>

On Thu, 13 Sep 2012, Hiran Chaudhuri wrote:

> Still the error remains, and I am wondering what the script is actually 
> looking for. Could there be a bug as it might still try to find something on 
> the 'standard' path?

Dig into the config.log file after the failure and see the details of what 
failed.

-- 

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

From libssh2-devel-bounces@cool.haxx.se  Mon Sep 17 09:39:08 2012
Return-Path: <libssh2-devel-bounces@cool.haxx.se>
Received: from www.haxx.se (localhost.localdomain [127.0.0.1])
	by giant.haxx.se (8.14.4/8.14.4/Debian-2) with ESMTP id q8H7ceBo013369;
	Mon, 17 Sep 2012 09:39:01 +0200
Received: from mail1.bemta3.messagelabs.com (mail1.bemta3.messagelabs.com
 [195.245.230.34])
 by giant.haxx.se (8.14.4/8.14.4/Debian-2) with ESMTP id q8H7cc3N013333
 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NOT)
 for <libssh2-devel@cool.haxx.se>; Mon, 17 Sep 2012 09:38:38 +0200
Received: from [195.245.230.131:43270] by server-3.bemta-3.messagelabs.com id
 E8/1A-21322-D73D6505; Mon, 17 Sep 2012 07:38:37 +0000
X-Env-Sender: hiran.chaudhuri@amadeus.com
X-Msg-Ref: server-3.tower-78.messagelabs.com!1347867516!28105760!1
X-Originating-IP: [193.23.186.180]
X-StarScan-Received: 
X-StarScan-Version: 6.6.1.3; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 27895 invoked from network); 17 Sep 2012 07:38:36 -0000
Received: from mucsmtp2.amadeus.net (HELO mucsmtp2.amadeus.net)
 (193.23.186.180)
 by server-3.tower-78.messagelabs.com with RC4-SHA encrypted SMTP;
 17 Sep 2012 07:38:36 -0000
In-Reply-To: <alpine.DEB.2.00.1209162354060.2839@tvnag.unkk.fr>
References: <OFFFF0C717.16303DDC-ONC1257A78.005FF116-C1257A78.0060ACA3@amadeus.com>
 <alpine.DEB.2.00.1209162354060.2839@tvnag.unkk.fr>
To: libssh2 development <libssh2-devel@cool.haxx.se>
Cc: libssh2 development <libssh2-devel@cool.haxx.se>,
        "libssh2-devel" <libssh2-devel-bounces@cool.haxx.se>
MIME-Version: 1.0
Subject: Re: Cannot build libssh2
X-KeepSent: 0CEA6C25:635CE0B9-00257A7C:00284B9C;
 type=4; name=$KeepSent
X-Mailer: Lotus Notes Release 8.5.1 FP2 March 18, 2010
Message-ID: <OF0CEA6C25.635CE0B9-ON00257A7C.00284B9C-C1257A7C.0029FB08@amadeus.com>
From: Hiran Chaudhuri <hiran.chaudhuri@amadeus.com>
Date: Mon, 17 Sep 2012 09:38:31 +0200
X-MIMETrack: Serialize by Router on MUCSMTP2/MUC/AMAEXTMAIL(Release
 8.5.2FP3|July 10, 2011) at 09/17/2012 07:38:36 AM,
 Serialize complete at 09/17/2012 07:38:36 AM
X-BeenThere: libssh2-devel@cool.haxx.se
X-Mailman-Version: 2.1.15
Precedence: list
Reply-To: libssh2 development <libssh2-devel@cool.haxx.se>
List-Id: libssh2 development <libssh2-devel.cool.haxx.se>
List-Unsubscribe: <http://cool.haxx.se/cgi-bin/mailman/options/libssh2-devel>, 
 <mailto:libssh2-devel-request@cool.haxx.se?subject=unsubscribe>
List-Archive: <http://cool.haxx.se/pipermail/libssh2-devel/>
List-Post: <mailto:libssh2-devel@cool.haxx.se>
List-Help: <mailto:libssh2-devel-request@cool.haxx.se?subject=help>
List-Subscribe: <http://cool.haxx.se/cgi-bin/mailman/listinfo/libssh2-devel>, 
 <mailto:libssh2-devel-request@cool.haxx.se?subject=subscribe>
Content-Type: multipart/mixed; boundary="===============0633673170=="
Errors-To: libssh2-devel-bounces@cool.haxx.se
Sender: "libssh2-devel" <libssh2-devel-bounces@cool.haxx.se>

This is a multipart message in MIME format.
--===============0633673170==
Content-Type: multipart/related; boundary="=_related 0029FB02C1257A7C_="

This is a multipart message in MIME format.
--=_related 0029FB02C1257A7C_=
Content-Type: multipart/alternative; boundary="=_alternative 0029FB07C1257A7C_="


--=_alternative 0029FB07C1257A7C_=
Content-Type: text/plain; charset="ISO-8859-1"
Content-Transfer-Encoding: quoted-printable

On Sun, 16 Sep 2012, Daniel Stenberg wrote:
>On Thu, 13 Sep 2012, Hiran Chaudhuri wrote:
>
>> Still the error remains, and I am wondering what the script is actually =


>> looking for. Could there be a bug as it might still try to find=20
something on=20
>> the 'standard' path?
>
>Dig into the config.log file after the failure and see the details of=20
what=20
>failed.

So this is the snippet I think shows most. However it does not mention any =

paths, but the openssl/ssl.h file was not found. However it definitely=20
resides in the path that I specified.
So the file /ama/wh/bin/httpd-1447/openssl/include/openssl/ssl.h exists,=20
and /ama/wh/bin/httpd-1447/openssl is the path I specified.

configure:13252: checking for shared library run path origin
configure:13265: result: done
configure:13770: checking for libssl
configure:13789: gcc -o conftest -g -O2   conftest.c  -lssl -lcrypto >&5
conftest.c:24:25: error: openssl/ssl.h: No such file or directory
configure:13789: $? =3D 1
configure: failed program was:
| /* confdefs.h */
| #define PACKAGE=5FNAME "libssh2"
| #define PACKAGE=5FTARNAME "libssh2"
| #define PACKAGE=5FVERSION "-"
| #define PACKAGE=5FSTRING "libssh2 -"
| #define PACKAGE=5FBUGREPORT "libssh2-devel@cool.haxx.se"
| #define PACKAGE=5FURL ""
| #define PACKAGE "libssh2"
| #define VERSION "-"
| #define STDC=5FHEADERS 1
| #define HAVE=5FSYS=5FTYPES=5FH 1
| #define HAVE=5FSYS=5FSTAT=5FH 1
| #define HAVE=5FSTDLIB=5FH 1
| #define HAVE=5FSTRING=5FH 1
| #define HAVE=5FMEMORY=5FH 1
| #define HAVE=5FSTRINGS=5FH 1
| #define HAVE=5FINTTYPES=5FH 1
| #define HAVE=5FSTDINT=5FH 1
| #define HAVE=5FUNISTD=5FH 1
| #define HAVE=5FLONGLONG 1
| #define HAVE=5FDLFCN=5FH 1
| #define LT=5FOBJDIR ".libs/"
| /* end confdefs.h.  */
| #include <openssl/ssl.h>
| int
| main ()
| {
|=20
|   ;
|   return 0;
| }
configure:13799: result: no
configure:14357: error: cannot find OpenSSL or Libgcrypt,
try --with-libssl-prefix=3DPATH or --with-libgcrypt-prefix=3DPATH

Hiran Chaudhuri
System Support Programmer / Analyst
IT Service Assurance
Hosting & Regional Services (IH)
Amadeus Data Processing GmbH
Berghamer Strasse 6
85435 Erding
T: +49-8122-43x3662
hiran.chaudhuri@amadeus.com
http://www.amadeus.com





IMPORTANT  -  CONFIDENTIALITY  NOTICE  - This e-mail is intended only for=20
the use of the individual or entity shown above as addressees. It may=20
contain information which is privileged, confidential or otherwise=20
protected from disclosure under applicable laws.  If the reader of this=20
transmission is not the intended recipient, you are hereby notified that=20
any dissemination, printing, distribution, copying, disclosure or the=20
taking of any action in reliance on the contents of this information is=20
strictly prohibited.  If you have received this transmission in error,=20
please immediately notify us by reply e-mail or using the address below=20
and delete the message and any attachments from your system.=20

Amadeus Data Processing GmbH=20
Gesch=E4ftsf=FChrer: Eberhard Haag=20
Sitz der Gesellschaft: Erding=20
HR M=FCnchen 48 199=20
Berghamer Strasse 6=20
85435 Erding=20
Germany
--=_alternative 0029FB07C1257A7C_=
Content-Type: text/html; charset="ISO-8859-1"
Content-Transfer-Encoding: quoted-printable

<tt><font size=3D2>On </font></tt><tt><font size=3D1>Sun, 16 Sep 2012, Dani=
el
Stenberg wrote:</font></tt>
<br><tt><font size=3D2>&gt;On Thu, 13 Sep 2012, Hiran Chaudhuri wrote:<br>
&gt;<br>
&gt;&gt; Still the error remains, and I am wondering what the script is
actually <br>
&gt;&gt; looking for. Could there be a bug as it might still try to find
something on <br>
&gt;&gt; the 'standard' path?<br>
&gt;<br>
&gt;Dig into the config.log file after the failure and see the details
of what <br>
&gt;failed.<br>
</font></tt>
<br><tt><font size=3D2>So this is the snippet I think shows most. However
it does not mention any paths, but the openssl/ssl.h file was not found.
However it definitely resides in the path that I specified.</font></tt>
<br><tt><font size=3D2>So the file </font></tt><tt><font size=3D3>/ama/wh/b=
in/httpd-1447/openssl/include/openssl/ssl.h
exists, and /ama/wh/bin/httpd-1447/openssl is the path I specified.</font><=
/tt>
<br>
<br><tt><font size=3D2>configure:13252: checking for shared library run path
origin</font></tt>
<br><tt><font size=3D2>configure:13265: result: done</font></tt>
<br><tt><font size=3D2>configure:13770: checking for libssl</font></tt>
<br><tt><font size=3D2>configure:13789: gcc -o conftest -g -O2 &nbsp; conft=
est.c
&nbsp;-lssl -lcrypto &gt;&amp;5</font></tt>
<br><tt><font size=3D2>conftest.c:24:25: error: openssl/ssl.h: No such file
or directory</font></tt>
<br><tt><font size=3D2>configure:13789: $? =3D 1</font></tt>
<br><tt><font size=3D2>configure: failed program was:</font></tt>
<br><tt><font size=3D2>| /* confdefs.h */</font></tt>
<br><tt><font size=3D2>| #define PACKAGE=5FNAME &quot;libssh2&quot;</font><=
/tt>
<br><tt><font size=3D2>| #define PACKAGE=5FTARNAME &quot;libssh2&quot;</fon=
t></tt>
<br><tt><font size=3D2>| #define PACKAGE=5FVERSION &quot;-&quot;</font></tt>
<br><tt><font size=3D2>| #define PACKAGE=5FSTRING &quot;libssh2 -&quot;</fo=
nt></tt>
<br><tt><font size=3D2>| #define PACKAGE=5FBUGREPORT &quot;libssh2-devel@co=
ol.haxx.se&quot;</font></tt>
<br><tt><font size=3D2>| #define PACKAGE=5FURL &quot;&quot;</font></tt>
<br><tt><font size=3D2>| #define PACKAGE &quot;libssh2&quot;</font></tt>
<br><tt><font size=3D2>| #define VERSION &quot;-&quot;</font></tt>
<br><tt><font size=3D2>| #define STDC=5FHEADERS 1</font></tt>
<br><tt><font size=3D2>| #define HAVE=5FSYS=5FTYPES=5FH 1</font></tt>
<br><tt><font size=3D2>| #define HAVE=5FSYS=5FSTAT=5FH 1</font></tt>
<br><tt><font size=3D2>| #define HAVE=5FSTDLIB=5FH 1</font></tt>
<br><tt><font size=3D2>| #define HAVE=5FSTRING=5FH 1</font></tt>
<br><tt><font size=3D2>| #define HAVE=5FMEMORY=5FH 1</font></tt>
<br><tt><font size=3D2>| #define HAVE=5FSTRINGS=5FH 1</font></tt>
<br><tt><font size=3D2>| #define HAVE=5FINTTYPES=5FH 1</font></tt>
<br><tt><font size=3D2>| #define HAVE=5FSTDINT=5FH 1</font></tt>
<br><tt><font size=3D2>| #define HAVE=5FUNISTD=5FH 1</font></tt>
<br><tt><font size=3D2>| #define HAVE=5FLONGLONG 1</font></tt>
<br><tt><font size=3D2>| #define HAVE=5FDLFCN=5FH 1</font></tt>
<br><tt><font size=3D2>| #define LT=5FOBJDIR &quot;.libs/&quot;</font></tt>
<br><tt><font size=3D2>| /* end confdefs.h. &nbsp;*/</font></tt>
<br><tt><font size=3D2>| #include &lt;openssl/ssl.h&gt;</font></tt>
<br><tt><font size=3D2>| int</font></tt>
<br><tt><font size=3D2>| main ()</font></tt>
<br><tt><font size=3D2>| {</font></tt>
<br><tt><font size=3D2>| </font></tt>
<br><tt><font size=3D2>| &nbsp; ;</font></tt>
<br><tt><font size=3D2>| &nbsp; return 0;</font></tt>
<br><tt><font size=3D2>| }</font></tt>
<br><tt><font size=3D2>configure:13799: result: no</font></tt>
<br><tt><font size=3D2>configure:14357: error: cannot find OpenSSL or Libgc=
rypt,</font></tt>
<br><tt><font size=3D2>try --with-libssl-prefix=3DPATH or --with-libgcrypt-=
prefix=3DPATH</font></tt>
<br><tt><font size=3D2><br>
</font></tt><tt><font size=3D2 color=3D#0060a0><b>Hiran Chaudhuri</b></font=
></tt><tt><font size=3D1><b><br>
System Support Programmer / Analyst</b></font></tt><tt><font size=3D1 color=
=3D#5f5f5f><br>
IT Service Assurance<br>
Hosting &amp; Regional Services (IH)<br>
Amadeus Data Processing GmbH<br>
Berghamer Strasse 6<br>
85435 Erding<br>
T: +49-8122-43x3662<br>
hiran.chaudhuri@amadeus.com</font></tt><tt><font size=3D1 color=3Dblue><u><=
br>
</u></font></tt><a href=3Dhttp://www.amadeus.com/><tt><font size=3D1 color=
=3Dblue><u>http://www.amadeus.com</u></font></tt></a>
<p><img src=3Dcid:=5F2=5F02DD56A402DD52540029FAFAC1257A7C width=3D149 heigh=
t=3D48 alt=3D"Amadeus logo"><tt><font size=3D2><br>
<br>
<br>
<br>
<br>
IMPORTANT &nbsp;- &nbsp;CONFIDENTIALITY &nbsp;NOTICE &nbsp;- This e-mail
is intended only for the use of the individual or entity shown above as
addressees. It may contain information which is privileged, confidential
or otherwise protected from disclosure under applicable laws. &nbsp;If
the reader of this transmission is not the intended recipient, you are
hereby notified that any dissemination, printing, distribution, copying,
disclosure or the taking of any action in reliance on the contents of this
information is strictly prohibited. &nbsp;If you have received this transmi=
ssion
in error, please immediately notify us by reply e-mail or using the address
below and delete the message and any attachments from your system. <br>
<br>
Amadeus Data Processing GmbH <br>
Gesch=E4ftsf=FChrer: Eberhard Haag <br>
Sitz der Gesellschaft: Erding <br>
HR M=FCnchen 48 199 <br>
Berghamer Strasse 6 <br>
85435 Erding <br>
Germany</font></tt>
--=_alternative 0029FB07C1257A7C_=--
--=_related 0029FB02C1257A7C_=
Content-Type: image/jpeg
Content-ID: <_2_02DD56A402DD52540029FAFAC1257A7C>
Content-Transfer-Encoding: base64

/9j/4ReeRXhpZgAATU0AKgAAAAgABwESAAMAAAABAAEAAAEaAAUAAAABAAAAYgEbAAUAAAABAAAA
agEoAAMAAAABAAIAAAExAAIAAAAeAAAAcgEyAAIAAAAUAAAAkIdpAAQAAAABAAAApAAAANAACvyA
AAAnEAAK/IAAACcQQWRvYmUgUGhvdG9zaG9wIENTNS4xIFdpbmRvd3MAMjAxMjowMToxNyAxMzox
ODoxOAAAA6ABAAMAAAABAAEAAKACAAQAAAABAAAAlqADAAQAAAABAAAAMAAAAAAAAAAGAQMAAwAA
AAEABgAAARoABQAAAAEAAAEeARsABQAAAAEAAAEmASgAAwAAAAEAAgAAAgEABAAAAAEAAAEuAgIA
BAAAAAEAABZoAAAAAAAAAEgAAAABAAAASAAAAAH/2P/iDFhJQ0NfUFJPRklMRQABAQAADEhMaW5v
AhAAAG1udHJSR0IgWFlaIAfOAAIACQAGADEAAGFjc3BNU0ZUAAAAAElFQyBzUkdCAAAAAAAAAAAA
AAAAAAD21gABAAAAANMtSFAgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAEWNwcnQAAAFQAAAAM2Rlc2MAAAGEAAAAbHd0cHQAAAHwAAAAFGJrcHQAAAIEAAAA
FHJYWVoAAAIYAAAAFGdYWVoAAAIsAAAAFGJYWVoAAAJAAAAAFGRtbmQAAAJUAAAAcGRtZGQAAALE
AAAAiHZ1ZWQAAANMAAAAhnZpZXcAAAPUAAAAJGx1bWkAAAP4AAAAFG1lYXMAAAQMAAAAJHRlY2gA
AAQwAAAADHJUUkMAAAQ8AAAIDGdUUkMAAAQ8AAAIDGJUUkMAAAQ8AAAIDHRleHQAAAAAQ29weXJp
Z2h0IChjKSAxOTk4IEhld2xldHQtUGFja2FyZCBDb21wYW55AABkZXNjAAAAAAAAABJzUkdCIElF
QzYxOTY2LTIuMQAAAAAAAAAAAAAAEnNSR0IgSUVDNjE5NjYtMi4xAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABYWVogAAAAAAAA81EAAQAAAAEWzFhZWiAA
AAAAAAAAAAAAAAAAAAAAWFlaIAAAAAAAAG+iAAA49QAAA5BYWVogAAAAAAAAYpkAALeFAAAY2lhZ
WiAAAAAAAAAkoAAAD4QAALbPZGVzYwAAAAAAAAAWSUVDIGh0dHA6Ly93d3cuaWVjLmNoAAAAAAAA
AAAAAAAWSUVDIGh0dHA6Ly93d3cuaWVjLmNoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAGRlc2MAAAAAAAAALklFQyA2MTk2Ni0yLjEgRGVmYXVsdCBSR0IgY29s
b3VyIHNwYWNlIC0gc1JHQgAAAAAAAAAAAAAALklFQyA2MTk2Ni0yLjEgRGVmYXVsdCBSR0IgY29s
b3VyIHNwYWNlIC0gc1JHQgAAAAAAAAAAAAAAAAAAAAAAAAAAAABkZXNjAAAAAAAAACxSZWZlcmVu
Y2UgVmlld2luZyBDb25kaXRpb24gaW4gSUVDNjE5NjYtMi4xAAAAAAAAAAAAAAAsUmVmZXJlbmNl
IFZpZXdpbmcgQ29uZGl0aW9uIGluIElFQzYxOTY2LTIuMQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAdmlldwAAAAAAE6T+ABRfLgAQzxQAA+3MAAQTCwADXJ4AAAABWFlaIAAAAAAATAlWAFAAAABX
H+dtZWFzAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAACjwAAAAJzaWcgAAAAAENSVCBjdXJ2AAAA
AAAABAAAAAAFAAoADwAUABkAHgAjACgALQAyADcAOwBAAEUASgBPAFQAWQBeAGMAaABtAHIAdwB8
AIEAhgCLAJAAlQCaAJ8ApACpAK4AsgC3ALwAwQDGAMsA0ADVANsA4ADlAOsA8AD2APsBAQEHAQ0B
EwEZAR8BJQErATIBOAE+AUUBTAFSAVkBYAFnAW4BdQF8AYMBiwGSAZoBoQGpAbEBuQHBAckB0QHZ
AeEB6QHyAfoCAwIMAhQCHQImAi8COAJBAksCVAJdAmcCcQJ6AoQCjgKYAqICrAK2AsECywLVAuAC
6wL1AwADCwMWAyEDLQM4A0MDTwNaA2YDcgN+A4oDlgOiA64DugPHA9MD4APsA/kEBgQTBCAELQQ7
BEgEVQRjBHEEfgSMBJoEqAS2BMQE0wThBPAE/gUNBRwFKwU6BUkFWAVnBXcFhgWWBaYFtQXFBdUF
5QX2BgYGFgYnBjcGSAZZBmoGewaMBp0GrwbABtEG4wb1BwcHGQcrBz0HTwdhB3QHhgeZB6wHvwfS
B+UH+AgLCB8IMghGCFoIbgiCCJYIqgi+CNII5wj7CRAJJQk6CU8JZAl5CY8JpAm6Cc8J5Qn7ChEK
Jwo9ClQKagqBCpgKrgrFCtwK8wsLCyILOQtRC2kLgAuYC7ALyAvhC/kMEgwqDEMMXAx1DI4MpwzA
DNkM8w0NDSYNQA1aDXQNjg2pDcMN3g34DhMOLg5JDmQOfw6bDrYO0g7uDwkPJQ9BD14Peg+WD7MP
zw/sEAkQJhBDEGEQfhCbELkQ1xD1ERMRMRFPEW0RjBGqEckR6BIHEiYSRRJkEoQSoxLDEuMTAxMj
E0MTYxODE6QTxRPlFAYUJxRJFGoUixStFM4U8BUSFTQVVhV4FZsVvRXgFgMWJhZJFmwWjxayFtYW
+hcdF0EXZReJF64X0hf3GBsYQBhlGIoYrxjVGPoZIBlFGWsZkRm3Gd0aBBoqGlEadxqeGsUa7BsU
GzsbYxuKG7Ib2hwCHCocUhx7HKMczBz1HR4dRx1wHZkdwx3sHhYeQB5qHpQevh7pHxMfPh9pH5Qf
vx/qIBUgQSBsIJggxCDwIRwhSCF1IaEhziH7IiciVSKCIq8i3SMKIzgjZiOUI8Ij8CQfJE0kfCSr
JNolCSU4JWgllyXHJfcmJyZXJocmtyboJxgnSSd6J6sn3CgNKD8ocSiiKNQpBik4KWspnSnQKgIq
NSpoKpsqzysCKzYraSudK9EsBSw5LG4soizXLQwtQS12Last4S4WLkwugi63Lu4vJC9aL5Evxy/+
MDUwbDCkMNsxEjFKMYIxujHyMioyYzKbMtQzDTNGM38zuDPxNCs0ZTSeNNg1EzVNNYc1wjX9Njc2
cjauNuk3JDdgN5w31zgUOFA4jDjIOQU5Qjl/Obw5+To2OnQ6sjrvOy07azuqO+g8JzxlPKQ84z0i
PWE9oT3gPiA+YD6gPuA/IT9hP6I/4kAjQGRApkDnQSlBakGsQe5CMEJyQrVC90M6Q31DwEQDREdE
ikTORRJFVUWaRd5GIkZnRqtG8Ec1R3tHwEgFSEtIkUjXSR1JY0mpSfBKN0p9SsRLDEtTS5pL4kwq
THJMuk0CTUpNk03cTiVObk63TwBPSU+TT91QJ1BxULtRBlFQUZtR5lIxUnxSx1MTU19TqlP2VEJU
j1TbVShVdVXCVg9WXFapVvdXRFeSV+BYL1h9WMtZGllpWbhaB1pWWqZa9VtFW5Vb5Vw1XIZc1l0n
XXhdyV4aXmxevV8PX2Ffs2AFYFdgqmD8YU9homH1YklinGLwY0Njl2PrZEBklGTpZT1lkmXnZj1m
kmboZz1nk2fpaD9olmjsaUNpmmnxakhqn2r3a09rp2v/bFdsr20IbWBtuW4SbmtuxG8eb3hv0XAr
cIZw4HE6cZVx8HJLcqZzAXNdc7h0FHRwdMx1KHWFdeF2Pnabdvh3VnezeBF4bnjMeSp5iXnnekZ6
pXsEe2N7wnwhfIF84X1BfaF+AX5ifsJ/I3+Ef+WAR4CogQqBa4HNgjCCkoL0g1eDuoQdhICE44VH
hauGDoZyhteHO4efiASIaYjOiTOJmYn+imSKyoswi5aL/IxjjMqNMY2Yjf+OZo7OjzaPnpAGkG6Q
1pE/kaiSEZJ6kuOTTZO2lCCUipT0lV+VyZY0lp+XCpd1l+CYTJi4mSSZkJn8mmia1ZtCm6+cHJyJ
nPedZJ3SnkCerp8dn4uf+qBpoNihR6G2oiailqMGo3aj5qRWpMelOKWpphqmi6b9p26n4KhSqMSp
N6mpqhyqj6sCq3Wr6axcrNCtRK24ri2uoa8Wr4uwALB1sOqxYLHWskuywrM4s660JbSctRO1irYB
tnm28Ldot+C4WbjRuUq5wro7urW7LrunvCG8m70VvY++Cr6Evv+/er/1wHDA7MFnwePCX8Lbw1jD
1MRRxM7FS8XIxkbGw8dBx7/IPci8yTrJuco4yrfLNsu2zDXMtc01zbXONs62zzfPuNA50LrRPNG+
0j/SwdNE08bUSdTL1U7V0dZV1tjXXNfg2GTY6Nls2fHadtr724DcBdyK3RDdlt4c3qLfKd+v4Dbg
veFE4cziU+Lb42Pj6+Rz5PzlhOYN5pbnH+ep6DLovOlG6dDqW+rl63Dr++yG7RHtnO4o7rTvQO/M
8Fjw5fFy8f/yjPMZ86f0NPTC9VD13vZt9vv3ivgZ+Kj5OPnH+lf65/t3/Af8mP0p/br+S/7c/23/
///tAAxBZG9iZV9DTQAB/+4ADkFkb2JlAGSAAAAAAf/bAIQADAgICAkIDAkJDBELCgsRFQ8MDA8V
GBMTFRMTGBEMDAwMDAwRDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAENCwsNDg0QDg4QFA4O
DhQUDg4ODhQRDAwMDAwREQwMDAwMDBEMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwM/8AAEQgA
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
O/R+purtS96etkHioGxHXh7q9qGmm2o1OlulX9Xq7Mxmb1LIs6hfTrS2wNbUw/vMorG3d/WQ+p/V
27P6lT1EZz6LMbTHaxjSG/vTu+nuQ+ofWDJxOqOw2ilwrFB9Ihxtt9Z7q7fQ2n/Atb6v0bEDB+sf
Uc+5lFDKhvsIFzmuj0/S+0M/RMsftu3ezY61AZZg3fSttK8le3Eiq63v183Uq6bnfbKcjKznZDKN
22kVtY0ucNu9+z6W1Az/AKuNu6h+1MHJfgZpG2x7AHNeP+Eqd9LhUMT6w9VdTRY5tOQ0V4zryxrm
vc+82seyv3OZW+l9Pv8A5f8Ao0Xp3Xuq5tmKz0qGtyLIe+S4taK33WVFldj9lzHN2fpdn/FJDJIG
wa0rYVX91JxxIojre+t+bLP+qdnUfRty+oW2ZVL97LdrQ0R+ayhv6NvuVzI6PlWZjOoU5zqcplIo
dDGureAXPJspd/Kd+bYtVJL3Z6a7XWg6o9uOum/iejmYnR3sz/2lnZBy8trTXUdorZW0/S9KoF3u
f++5600kk2UjLUrhEDZSSSSCVJJJJKf/0fVCAQQRM6FLa3TQaaBOkkpYgEQRI8E2xkEbRDjJ05Kk
kkpaB4JbWyDAkcH4p0klMXMY4EEcgtkaGD5hU6ui9MpsZbXTD67Dc1xe9x3lvpbzve7d+j/eV5JJ
SFuJjMybMtrAL7Wta9+skMnYP3fz0UNaOAAnSSUsGtHAA7pBrRMACTJ+KdJJSkkkklKSSSSUpJJJ
JSkkkklP/9n/7R7qUGhvdG9zaG9wIDMuMAA4QklNBCUAAAAAABAAAAAAAAAAAAAAAAAAAAAAOEJJ
TQQ6AAAAAACrAAAAEAAAAAEAAAAAAAtwcmludE91dHB1dAAAAAQAAAAAUHN0U2Jvb2wBAAAAAElu
dGVlbnVtAAAAAEludGUAAAAAQ2xybQAAAA9wcmludFNpeHRlZW5CaXRib29sAAAAAAtwcmludGVy
TmFtZVRFWFQAAAAbAFwAXABNAEEARABGAEwARQBYAFwARgBvAGwAbABvAHcALQBNAGUAIABDAG8A
bABvAHUAcgAAADhCSU0EOwAAAAABsgAAABAAAAABAAAAAAAScHJpbnRPdXRwdXRPcHRpb25zAAAA
EgAAAABDcHRuYm9vbAAAAAAAQ2xicmJvb2wAAAAAAFJnc01ib29sAAAAAABDcm5DYm9vbAAAAAAA
Q250Q2Jvb2wAAAAAAExibHNib29sAAAAAABOZ3R2Ym9vbAAAAAAARW1sRGJvb2wAAAAAAEludHJi
b29sAAAAAABCY2tnT2JqYwAAAAEAAAAAAABSR0JDAAAAAwAAAABSZCAgZG91YkBv4AAAAAAAAAAA
AEdybiBkb3ViQG/gAAAAAAAAAAAAQmwgIGRvdWJAb+AAAAAAAAAAAABCcmRUVW50RiNSbHQAAAAA
AAAAAAAAAABCbGQgVW50RiNSbHQAAAAAAAAAAAAAAABSc2x0VW50RiNQeGxAUgAAAAAAAAAAAAp2
ZWN0b3JEYXRhYm9vbAEAAAAAUGdQc2VudW0AAAAAUGdQcwAAAABQZ1BDAAAAAExlZnRVbnRGI1Js
dAAAAAAAAAAAAAAAAFRvcCBVbnRGI1JsdAAAAAAAAAAAAAAAAFNjbCBVbnRGI1ByY0BZAAAAAAAA
OEJJTQPtAAAAAAAQAEgAAAABAAIASAAAAAEAAjhCSU0EJgAAAAAADgAAAAAAAAAAAAA/gAAAOEJJ
TQQNAAAAAAAEAAAAeDhCSU0EGQAAAAAABAAAAB44QklNA/MAAAAAAAkAAAAAAAAAAAEAOEJJTScQ
AAAAAAAKAAEAAAAAAAAAAjhCSU0D9QAAAAAASAAvZmYAAQBsZmYABgAAAAAAAQAvZmYAAQChmZoA
BgAAAAAAAQAyAAAAAQBaAAAABgAAAAAAAQA1AAAAAQAtAAAABgAAAAAAAThCSU0D+AAAAAAAcAAA
/////////////////////////////wPoAAAAAP////////////////////////////8D6AAAAAD/
////////////////////////////A+gAAAAA/////////////////////////////wPoAAA4QklN
BAAAAAAAAAIAAjhCSU0EAgAAAAAABgAAAAAAADhCSU0EMAAAAAAAAwEBAQA4QklNBC0AAAAAAAYA
AQAAAAQ4QklNBAgAAAAAABAAAAABAAACQAAAAkAAAAAAOEJJTQQeAAAAAAAEAAAAADhCSU0EGgAA
AAADSQAAAAYAAAAAAAAAAAAAADAAAACWAAAACgBVAG4AdABpAHQAbABlAGQALQAyAAAAAQAAAAAA
AAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAACWAAAAMAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAA
AAAAAAAAAAAAABAAAAABAAAAAAAAbnVsbAAAAAIAAAAGYm91bmRzT2JqYwAAAAEAAAAAAABSY3Qx
AAAABAAAAABUb3AgbG9uZwAAAAAAAAAATGVmdGxvbmcAAAAAAAAAAEJ0b21sb25nAAAAMAAAAABS
Z2h0bG9uZwAAAJYAAAAGc2xpY2VzVmxMcwAAAAFPYmpjAAAAAQAAAAAABXNsaWNlAAAAEgAAAAdz
bGljZUlEbG9uZwAAAAAAAAAHZ3JvdXBJRGxvbmcAAAAAAAAABm9yaWdpbmVudW0AAAAMRVNsaWNl
T3JpZ2luAAAADWF1dG9HZW5lcmF0ZWQAAAAAVHlwZWVudW0AAAAKRVNsaWNlVHlwZQAAAABJbWcg
AAAABmJvdW5kc09iamMAAAABAAAAAAAAUmN0MQAAAAQAAAAAVG9wIGxvbmcAAAAAAAAAAExlZnRs
b25nAAAAAAAAAABCdG9tbG9uZwAAADAAAAAAUmdodGxvbmcAAACWAAAAA3VybFRFWFQAAAABAAAA
AAAAbnVsbFRFWFQAAAABAAAAAAAATXNnZVRFWFQAAAABAAAAAAAGYWx0VGFnVEVYVAAAAAEAAAAA
AA5jZWxsVGV4dElzSFRNTGJvb2wBAAAACGNlbGxUZXh0VEVYVAAAAAEAAAAAAAlob3J6QWxpZ25l
bnVtAAAAD0VTbGljZUhvcnpBbGlnbgAAAAdkZWZhdWx0AAAACXZlcnRBbGlnbmVudW0AAAAPRVNs
aWNlVmVydEFsaWduAAAAB2RlZmF1bHQAAAALYmdDb2xvclR5cGVlbnVtAAAAEUVTbGljZUJHQ29s
b3JUeXBlAAAAAE5vbmUAAAAJdG9wT3V0c2V0bG9uZwAAAAAAAAAKbGVmdE91dHNldGxvbmcAAAAA
AAAADGJvdHRvbU91dHNldGxvbmcAAAAAAAAAC3JpZ2h0T3V0c2V0bG9uZwAAAAAAOEJJTQQoAAAA
AAAMAAAAAj/wAAAAAAAAOEJJTQQUAAAAAAAEAAAABDhCSU0EDAAAAAAWhAAAAAEAAACWAAAAMAAA
AcQAAFTAAAAWaAAYAAH/2P/iDFhJQ0NfUFJPRklMRQABAQAADEhMaW5vAhAAAG1udHJSR0IgWFla
IAfOAAIACQAGADEAAGFjc3BNU0ZUAAAAAElFQyBzUkdCAAAAAAAAAAAAAAAAAAD21gABAAAAANMt
SFAgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEWNwcnQA
AAFQAAAAM2Rlc2MAAAGEAAAAbHd0cHQAAAHwAAAAFGJrcHQAAAIEAAAAFHJYWVoAAAIYAAAAFGdY
WVoAAAIsAAAAFGJYWVoAAAJAAAAAFGRtbmQAAAJUAAAAcGRtZGQAAALEAAAAiHZ1ZWQAAANMAAAA
hnZpZXcAAAPUAAAAJGx1bWkAAAP4AAAAFG1lYXMAAAQMAAAAJHRlY2gAAAQwAAAADHJUUkMAAAQ8
AAAIDGdUUkMAAAQ8AAAIDGJUUkMAAAQ8AAAIDHRleHQAAAAAQ29weXJpZ2h0IChjKSAxOTk4IEhl
d2xldHQtUGFja2FyZCBDb21wYW55AABkZXNjAAAAAAAAABJzUkdCIElFQzYxOTY2LTIuMQAAAAAA
AAAAAAAAEnNSR0IgSUVDNjE5NjYtMi4xAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAABYWVogAAAAAAAA81EAAQAAAAEWzFhZWiAAAAAAAAAAAAAAAAAAAAAA
WFlaIAAAAAAAAG+iAAA49QAAA5BYWVogAAAAAAAAYpkAALeFAAAY2lhZWiAAAAAAAAAkoAAAD4QA
ALbPZGVzYwAAAAAAAAAWSUVDIGh0dHA6Ly93d3cuaWVjLmNoAAAAAAAAAAAAAAAWSUVDIGh0dHA6
Ly93d3cuaWVjLmNoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AGRlc2MAAAAAAAAALklFQyA2MTk2Ni0yLjEgRGVmYXVsdCBSR0IgY29sb3VyIHNwYWNlIC0gc1JH
QgAAAAAAAAAAAAAALklFQyA2MTk2Ni0yLjEgRGVmYXVsdCBSR0IgY29sb3VyIHNwYWNlIC0gc1JH
QgAAAAAAAAAAAAAAAAAAAAAAAAAAAABkZXNjAAAAAAAAACxSZWZlcmVuY2UgVmlld2luZyBDb25k
aXRpb24gaW4gSUVDNjE5NjYtMi4xAAAAAAAAAAAAAAAsUmVmZXJlbmNlIFZpZXdpbmcgQ29uZGl0
aW9uIGluIElFQzYxOTY2LTIuMQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdmlldwAAAAAAE6T+
ABRfLgAQzxQAA+3MAAQTCwADXJ4AAAABWFlaIAAAAAAATAlWAFAAAABXH+dtZWFzAAAAAAAAAAEA
AAAAAAAAAAAAAAAAAAAAAAACjwAAAAJzaWcgAAAAAENSVCBjdXJ2AAAAAAAABAAAAAAFAAoADwAU
ABkAHgAjACgALQAyADcAOwBAAEUASgBPAFQAWQBeAGMAaABtAHIAdwB8AIEAhgCLAJAAlQCaAJ8A
pACpAK4AsgC3ALwAwQDGAMsA0ADVANsA4ADlAOsA8AD2APsBAQEHAQ0BEwEZAR8BJQErATIBOAE+
AUUBTAFSAVkBYAFnAW4BdQF8AYMBiwGSAZoBoQGpAbEBuQHBAckB0QHZAeEB6QHyAfoCAwIMAhQC
HQImAi8COAJBAksCVAJdAmcCcQJ6AoQCjgKYAqICrAK2AsECywLVAuAC6wL1AwADCwMWAyEDLQM4
A0MDTwNaA2YDcgN+A4oDlgOiA64DugPHA9MD4APsA/kEBgQTBCAELQQ7BEgEVQRjBHEEfgSMBJoE
qAS2BMQE0wThBPAE/gUNBRwFKwU6BUkFWAVnBXcFhgWWBaYFtQXFBdUF5QX2BgYGFgYnBjcGSAZZ
BmoGewaMBp0GrwbABtEG4wb1BwcHGQcrBz0HTwdhB3QHhgeZB6wHvwfSB+UH+AgLCB8IMghGCFoI
bgiCCJYIqgi+CNII5wj7CRAJJQk6CU8JZAl5CY8JpAm6Cc8J5Qn7ChEKJwo9ClQKagqBCpgKrgrF
CtwK8wsLCyILOQtRC2kLgAuYC7ALyAvhC/kMEgwqDEMMXAx1DI4MpwzADNkM8w0NDSYNQA1aDXQN
jg2pDcMN3g34DhMOLg5JDmQOfw6bDrYO0g7uDwkPJQ9BD14Peg+WD7MPzw/sEAkQJhBDEGEQfhCb
ELkQ1xD1ERMRMRFPEW0RjBGqEckR6BIHEiYSRRJkEoQSoxLDEuMTAxMjE0MTYxODE6QTxRPlFAYU
JxRJFGoUixStFM4U8BUSFTQVVhV4FZsVvRXgFgMWJhZJFmwWjxayFtYW+hcdF0EXZReJF64X0hf3
GBsYQBhlGIoYrxjVGPoZIBlFGWsZkRm3Gd0aBBoqGlEadxqeGsUa7BsUGzsbYxuKG7Ib2hwCHCoc
Uhx7HKMczBz1HR4dRx1wHZkdwx3sHhYeQB5qHpQevh7pHxMfPh9pH5Qfvx/qIBUgQSBsIJggxCDw
IRwhSCF1IaEhziH7IiciVSKCIq8i3SMKIzgjZiOUI8Ij8CQfJE0kfCSrJNolCSU4JWgllyXHJfcm
JyZXJocmtyboJxgnSSd6J6sn3CgNKD8ocSiiKNQpBik4KWspnSnQKgIqNSpoKpsqzysCKzYraSud
K9EsBSw5LG4soizXLQwtQS12Last4S4WLkwugi63Lu4vJC9aL5Evxy/+MDUwbDCkMNsxEjFKMYIx
ujHyMioyYzKbMtQzDTNGM38zuDPxNCs0ZTSeNNg1EzVNNYc1wjX9Njc2cjauNuk3JDdgN5w31zgU
OFA4jDjIOQU5Qjl/Obw5+To2OnQ6sjrvOy07azuqO+g8JzxlPKQ84z0iPWE9oT3gPiA+YD6gPuA/
IT9hP6I/4kAjQGRApkDnQSlBakGsQe5CMEJyQrVC90M6Q31DwEQDREdEikTORRJFVUWaRd5GIkZn
RqtG8Ec1R3tHwEgFSEtIkUjXSR1JY0mpSfBKN0p9SsRLDEtTS5pL4kwqTHJMuk0CTUpNk03cTiVO
bk63TwBPSU+TT91QJ1BxULtRBlFQUZtR5lIxUnxSx1MTU19TqlP2VEJUj1TbVShVdVXCVg9WXFap
VvdXRFeSV+BYL1h9WMtZGllpWbhaB1pWWqZa9VtFW5Vb5Vw1XIZc1l0nXXhdyV4aXmxevV8PX2Ff
s2AFYFdgqmD8YU9homH1YklinGLwY0Njl2PrZEBklGTpZT1lkmXnZj1mkmboZz1nk2fpaD9olmjs
aUNpmmnxakhqn2r3a09rp2v/bFdsr20IbWBtuW4SbmtuxG8eb3hv0XArcIZw4HE6cZVx8HJLcqZz
AXNdc7h0FHRwdMx1KHWFdeF2Pnabdvh3VnezeBF4bnjMeSp5iXnnekZ6pXsEe2N7wnwhfIF84X1B
faF+AX5ifsJ/I3+Ef+WAR4CogQqBa4HNgjCCkoL0g1eDuoQdhICE44VHhauGDoZyhteHO4efiASI
aYjOiTOJmYn+imSKyoswi5aL/IxjjMqNMY2Yjf+OZo7OjzaPnpAGkG6Q1pE/kaiSEZJ6kuOTTZO2
lCCUipT0lV+VyZY0lp+XCpd1l+CYTJi4mSSZkJn8mmia1ZtCm6+cHJyJnPedZJ3SnkCerp8dn4uf
+qBpoNihR6G2oiailqMGo3aj5qRWpMelOKWpphqmi6b9p26n4KhSqMSpN6mpqhyqj6sCq3Wr6axc
rNCtRK24ri2uoa8Wr4uwALB1sOqxYLHWskuywrM4s660JbSctRO1irYBtnm28Ldot+C4WbjRuUq5
wro7urW7LrunvCG8m70VvY++Cr6Evv+/er/1wHDA7MFnwePCX8Lbw1jD1MRRxM7FS8XIxkbGw8dB
x7/IPci8yTrJuco4yrfLNsu2zDXMtc01zbXONs62zzfPuNA50LrRPNG+0j/SwdNE08bUSdTL1U7V
0dZV1tjXXNfg2GTY6Nls2fHadtr724DcBdyK3RDdlt4c3qLfKd+v4DbgveFE4cziU+Lb42Pj6+Rz
5PzlhOYN5pbnH+ep6DLovOlG6dDqW+rl63Dr++yG7RHtnO4o7rTvQO/M8Fjw5fFy8f/yjPMZ86f0
NPTC9VD13vZt9vv3ivgZ+Kj5OPnH+lf65/t3/Af8mP0p/br+S/7c/23////tAAxBZG9iZV9DTQAB
/+4ADkFkb2JlAGSAAAAAAf/bAIQADAgICAkIDAkJDBELCgsRFQ8MDA8VGBMTFRMTGBEMDAwMDAwR
DAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAENCwsNDg0QDg4QFA4ODhQUDg4ODhQRDAwMDAwR
EQwMDAwMDBEMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwM/8AAEQgAMACWAwEiAAIRAQMRAf/d
AAQACv/EAT8AAAEFAQEBAQEBAAAAAAAAAAMAAQIEBQYHCAkKCwEAAQUBAQEBAQEAAAAAAAAAAQAC
AwQFBgcICQoLEAABBAEDAgQCBQcGCAUDDDMBAAIRAwQhEjEFQVFhEyJxgTIGFJGhsUIjJBVSwWIz
NHKC0UMHJZJT8OHxY3M1FqKygyZEk1RkRcKjdDYX0lXiZfKzhMPTdePzRieUpIW0lcTU5PSltcXV
5fVWZnaGlqa2xtbm9jdHV2d3h5ent8fX5/cRAAICAQIEBAMEBQYHBwYFNQEAAhEDITESBEFRYXEi
EwUygZEUobFCI8FS0fAzJGLhcoKSQ1MVY3M08SUGFqKygwcmNcLSRJNUoxdkRVU2dGXi8rOEw9N1
4/NGlKSFtJXE1OT0pbXF1eX1VmZ2hpamtsbW5vYnN0dXZ3eHl6e3x//aAAwDAQACEQMRAD8A77qH
Tur9RvcG5r+n4rNK20D9I8/nWWWT7G/uVtWf9XsvqmN1zL6Fn5BzG0sFtN7vpQdujv7L1br6tndT
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
SSSCVJJJJKf/0fVCAQQRM6FLa3TQaaBOkkpYgEQRI8E2xkEbRDjJ05KkkkpaB4JbWyDAkcH4p0kl
MXMY4EEcgtkaGD5hU6ui9MpsZbXTD67Dc1xe9x3lvpbzve7d+j/eV5JJSFuJjMybMtrAL7Wta9+s
kMnYP3fz0UNaOAAnSSUsGtHAA7pBrRMACTJ+KdJJSkkkklKSSSSUpJJJJSkkkklP/9k4QklNBCEA
AAAAAFkAAAABAQAAAA8AQQBkAG8AYgBlACAAUABoAG8AdABvAHMAaABvAHAAAAAVAEEAZABvAGIA
ZQAgAFAAaABvAHQAbwBzAGgAbwBwACAAQwBTADUALgAxAAAAAQA4QklNBAYAAAAAAAcACAAAAAEB
AP/hDl9odHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvADw/eHBhY2tldCBiZWdpbj0i77u/IiBp
ZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6
bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYxIDY0LjE0MDk0OSwgMjAx
MC8xMi8wNy0xMDo1NzowMSAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3
LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6
YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4
bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RFdnQ9Imh0dHA6
Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZUV2ZW50IyIgeG1sbnM6cGhvdG9z
aG9wPSJodHRwOi8vbnMuYWRvYmUuY29tL3Bob3Rvc2hvcC8xLjAvIiB4bWxuczpkYz0iaHR0cDov
L3B1cmwub3JnL2RjL2VsZW1lbnRzLzEuMS8iIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9z
aG9wIENTNS4xIFdpbmRvd3MiIHhtcDpDcmVhdGVEYXRlPSIyMDEyLTAxLTE3VDEzOjE4OjE4KzAx
OjAwIiB4bXA6TWV0YWRhdGFEYXRlPSIyMDEyLTAxLTE3VDEzOjE4OjE4KzAxOjAwIiB4bXA6TW9k
aWZ5RGF0ZT0iMjAxMi0wMS0xN1QxMzoxODoxOCswMTowMCIgeG1wTU06SW5zdGFuY2VJRD0ieG1w
LmlpZDowM0M5RDEwNzQ4NDBFMTExQTRBM0U4ODYxMDMxOEUyMSIgeG1wTU06RG9jdW1lbnRJRD0i
eG1wLmRpZDowMkM5RDEwNzQ4NDBFMTExQTRBM0U4ODYxMDMxOEUyMSIgeG1wTU06T3JpZ2luYWxE
b2N1bWVudElEPSJ4bXAuZGlkOjAyQzlEMTA3NDg0MEUxMTFBNEEzRTg4NjEwMzE4RTIxIiBwaG90
b3Nob3A6Q29sb3JNb2RlPSIzIiBwaG90b3Nob3A6SUNDUHJvZmlsZT0ic1JHQiBJRUM2MTk2Ni0y
LjEiIGRjOmZvcm1hdD0iaW1hZ2UvanBlZyI+IDx4bXBNTTpIaXN0b3J5PiA8cmRmOlNlcT4gPHJk
ZjpsaSBzdEV2dDphY3Rpb249ImNyZWF0ZWQiIHN0RXZ0Omluc3RhbmNlSUQ9InhtcC5paWQ6MDJD
OUQxMDc0ODQwRTExMUE0QTNFODg2MTAzMThFMjEiIHN0RXZ0OndoZW49IjIwMTItMDEtMTdUMTM6
MTg6MTgrMDE6MDAiIHN0RXZ0OnNvZnR3YXJlQWdlbnQ9IkFkb2JlIFBob3Rvc2hvcCBDUzUuMSBX
aW5kb3dzIi8+IDxyZGY6bGkgc3RFdnQ6YWN0aW9uPSJzYXZlZCIgc3RFdnQ6aW5zdGFuY2VJRD0i
eG1wLmlpZDowM0M5RDEwNzQ4NDBFMTExQTRBM0U4ODYxMDMxOEUyMSIgc3RFdnQ6d2hlbj0iMjAx
Mi0wMS0xN1QxMzoxODoxOCswMTowMCIgc3RFdnQ6c29mdHdhcmVBZ2VudD0iQWRvYmUgUGhvdG9z
aG9wIENTNS4xIFdpbmRvd3MiIHN0RXZ0OmNoYW5nZWQ9Ii8iLz4gPC9yZGY6U2VxPiA8L3htcE1N
Okhpc3Rvcnk+IDxwaG90b3Nob3A6RG9jdW1lbnRBbmNlc3RvcnM+IDxyZGY6QmFnPiA8cmRmOmxp
PnV1aWQ6MTg2RjYyNkQ4N0VEREIxMUE1RUZFREUxRjM0Mzg1OUM8L3JkZjpsaT4gPC9yZGY6QmFn
PiA8L3Bob3Rvc2hvcDpEb2N1bWVudEFuY2VzdG9ycz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRm
OlJERj4gPC94OnhtcG1ldGE+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgPD94cGFja2V0IGVuZD0idyI/Pv/iDFhJQ0NfUFJPRklMRQABAQAADEhM
aW5vAhAAAG1udHJSR0IgWFlaIAfOAAIACQAGADEAAGFjc3BNU0ZUAAAAAElFQyBzUkdCAAAAAAAA
AAAAAAABAAD21gABAAAAANMtSFAgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAEWNwcnQAAAFQAAAAM2Rlc2MAAAGEAAAAbHd0cHQAAAHwAAAAFGJrcHQAAAIE
AAAAFHJYWVoAAAIYAAAAFGdYWVoAAAIsAAAAFGJYWVoAAAJAAAAAFGRtbmQAAAJUAAAAcGRtZGQA
AALEAAAAiHZ1ZWQAAANMAAAAhnZpZXcAAAPUAAAAJGx1bWkAAAP4AAAAFG1lYXMAAAQMAAAAJHRl
Y2gAAAQwAAAADHJUUkMAAAQ8AAAIDGdUUkMAAAQ8AAAIDGJUUkMAAAQ8AAAIDHRleHQAAAAAQ29w
eXJpZ2h0IChjKSAxOTk4IEhld2xldHQtUGFja2FyZCBDb21wYW55AABkZXNjAAAAAAAAABJzUkdC
IElFQzYxOTY2LTIuMQAAAAAAAAAAAAAAEnNSR0IgSUVDNjE5NjYtMi4xAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABYWVogAAAAAAAA81EAAQAAAAEWzFhZ
WiAAAAAAAAAAAAAAAAAAAAAAWFlaIAAAAAAAAG+iAAA49QAAA5BYWVogAAAAAAAAYpkAALeFAAAY
2lhZWiAAAAAAAAAkoAAAD4QAALbPZGVzYwAAAAAAAAAWSUVDIGh0dHA6Ly93d3cuaWVjLmNoAAAA
AAAAAAAAAAAWSUVDIGh0dHA6Ly93d3cuaWVjLmNoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAGRlc2MAAAAAAAAALklFQyA2MTk2Ni0yLjEgRGVmYXVsdCBSR0Ig
Y29sb3VyIHNwYWNlIC0gc1JHQgAAAAAAAAAAAAAALklFQyA2MTk2Ni0yLjEgRGVmYXVsdCBSR0Ig
Y29sb3VyIHNwYWNlIC0gc1JHQgAAAAAAAAAAAAAAAAAAAAAAAAAAAABkZXNjAAAAAAAAACxSZWZl
cmVuY2UgVmlld2luZyBDb25kaXRpb24gaW4gSUVDNjE5NjYtMi4xAAAAAAAAAAAAAAAsUmVmZXJl
bmNlIFZpZXdpbmcgQ29uZGl0aW9uIGluIElFQzYxOTY2LTIuMQAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAdmlldwAAAAAAE6T+ABRfLgAQzxQAA+3MAAQTCwADXJ4AAAABWFlaIAAAAAAATAlWAFAA
AABXH+dtZWFzAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAACjwAAAAJzaWcgAAAAAENSVCBjdXJ2
AAAAAAAABAAAAAAFAAoADwAUABkAHgAjACgALQAyADcAOwBAAEUASgBPAFQAWQBeAGMAaABtAHIA
dwB8AIEAhgCLAJAAlQCaAJ8ApACpAK4AsgC3ALwAwQDGAMsA0ADVANsA4ADlAOsA8AD2APsBAQEH
AQ0BEwEZAR8BJQErATIBOAE+AUUBTAFSAVkBYAFnAW4BdQF8AYMBiwGSAZoBoQGpAbEBuQHBAckB
0QHZAeEB6QHyAfoCAwIMAhQCHQImAi8COAJBAksCVAJdAmcCcQJ6AoQCjgKYAqICrAK2AsECywLV
AuAC6wL1AwADCwMWAyEDLQM4A0MDTwNaA2YDcgN+A4oDlgOiA64DugPHA9MD4APsA/kEBgQTBCAE
LQQ7BEgEVQRjBHEEfgSMBJoEqAS2BMQE0wThBPAE/gUNBRwFKwU6BUkFWAVnBXcFhgWWBaYFtQXF
BdUF5QX2BgYGFgYnBjcGSAZZBmoGewaMBp0GrwbABtEG4wb1BwcHGQcrBz0HTwdhB3QHhgeZB6wH
vwfSB+UH+AgLCB8IMghGCFoIbgiCCJYIqgi+CNII5wj7CRAJJQk6CU8JZAl5CY8JpAm6Cc8J5Qn7
ChEKJwo9ClQKagqBCpgKrgrFCtwK8wsLCyILOQtRC2kLgAuYC7ALyAvhC/kMEgwqDEMMXAx1DI4M
pwzADNkM8w0NDSYNQA1aDXQNjg2pDcMN3g34DhMOLg5JDmQOfw6bDrYO0g7uDwkPJQ9BD14Peg+W
D7MPzw/sEAkQJhBDEGEQfhCbELkQ1xD1ERMRMRFPEW0RjBGqEckR6BIHEiYSRRJkEoQSoxLDEuMT
AxMjE0MTYxODE6QTxRPlFAYUJxRJFGoUixStFM4U8BUSFTQVVhV4FZsVvRXgFgMWJhZJFmwWjxay
FtYW+hcdF0EXZReJF64X0hf3GBsYQBhlGIoYrxjVGPoZIBlFGWsZkRm3Gd0aBBoqGlEadxqeGsUa
7BsUGzsbYxuKG7Ib2hwCHCocUhx7HKMczBz1HR4dRx1wHZkdwx3sHhYeQB5qHpQevh7pHxMfPh9p
H5Qfvx/qIBUgQSBsIJggxCDwIRwhSCF1IaEhziH7IiciVSKCIq8i3SMKIzgjZiOUI8Ij8CQfJE0k
fCSrJNolCSU4JWgllyXHJfcmJyZXJocmtyboJxgnSSd6J6sn3CgNKD8ocSiiKNQpBik4KWspnSnQ
KgIqNSpoKpsqzysCKzYraSudK9EsBSw5LG4soizXLQwtQS12Last4S4WLkwugi63Lu4vJC9aL5Ev
xy/+MDUwbDCkMNsxEjFKMYIxujHyMioyYzKbMtQzDTNGM38zuDPxNCs0ZTSeNNg1EzVNNYc1wjX9
Njc2cjauNuk3JDdgN5w31zgUOFA4jDjIOQU5Qjl/Obw5+To2OnQ6sjrvOy07azuqO+g8JzxlPKQ8
4z0iPWE9oT3gPiA+YD6gPuA/IT9hP6I/4kAjQGRApkDnQSlBakGsQe5CMEJyQrVC90M6Q31DwEQD
REdEikTORRJFVUWaRd5GIkZnRqtG8Ec1R3tHwEgFSEtIkUjXSR1JY0mpSfBKN0p9SsRLDEtTS5pL
4kwqTHJMuk0CTUpNk03cTiVObk63TwBPSU+TT91QJ1BxULtRBlFQUZtR5lIxUnxSx1MTU19TqlP2
VEJUj1TbVShVdVXCVg9WXFapVvdXRFeSV+BYL1h9WMtZGllpWbhaB1pWWqZa9VtFW5Vb5Vw1XIZc
1l0nXXhdyV4aXmxevV8PX2Ffs2AFYFdgqmD8YU9homH1YklinGLwY0Njl2PrZEBklGTpZT1lkmXn
Zj1mkmboZz1nk2fpaD9olmjsaUNpmmnxakhqn2r3a09rp2v/bFdsr20IbWBtuW4SbmtuxG8eb3hv
0XArcIZw4HE6cZVx8HJLcqZzAXNdc7h0FHRwdMx1KHWFdeF2Pnabdvh3VnezeBF4bnjMeSp5iXnn
ekZ6pXsEe2N7wnwhfIF84X1BfaF+AX5ifsJ/I3+Ef+WAR4CogQqBa4HNgjCCkoL0g1eDuoQdhICE
44VHhauGDoZyhteHO4efiASIaYjOiTOJmYn+imSKyoswi5aL/IxjjMqNMY2Yjf+OZo7OjzaPnpAG
kG6Q1pE/kaiSEZJ6kuOTTZO2lCCUipT0lV+VyZY0lp+XCpd1l+CYTJi4mSSZkJn8mmia1ZtCm6+c
HJyJnPedZJ3SnkCerp8dn4uf+qBpoNihR6G2oiailqMGo3aj5qRWpMelOKWpphqmi6b9p26n4KhS
qMSpN6mpqhyqj6sCq3Wr6axcrNCtRK24ri2uoa8Wr4uwALB1sOqxYLHWskuywrM4s660JbSctRO1
irYBtnm28Ldot+C4WbjRuUq5wro7urW7LrunvCG8m70VvY++Cr6Evv+/er/1wHDA7MFnwePCX8Lb
w1jD1MRRxM7FS8XIxkbGw8dBx7/IPci8yTrJuco4yrfLNsu2zDXMtc01zbXONs62zzfPuNA50LrR
PNG+0j/SwdNE08bUSdTL1U7V0dZV1tjXXNfg2GTY6Nls2fHadtr724DcBdyK3RDdlt4c3qLfKd+v
4DbgveFE4cziU+Lb42Pj6+Rz5PzlhOYN5pbnH+ep6DLovOlG6dDqW+rl63Dr++yG7RHtnO4o7rTv
QO/M8Fjw5fFy8f/yjPMZ86f0NPTC9VD13vZt9vv3ivgZ+Kj5OPnH+lf65/t3/Af8mP0p/br+S/7c
/23////uAA5BZG9iZQBkQAAAAAH/2wCEAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEB
AQEBAQEBAQEBAQECAgICAgICAgICAgMDAwMDAwMDAwMBAQEBAQEBAQEBAQICAQICAwMDAwMDAwMD
AwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDA//AABEIADAAlgMBEQACEQED
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
i3Bn4q+s3DX7N2riOo919jbx2LkdrbS7H3HWbd7M29msHSY2Crz0+LSqjq5HkxME1M0MvuvFQK9X
Oe/dN9e9+691737r3Xvfuvde9+691737r3Xvfuvdf//T38ZqWmqY54ainhniqoXpqmOWJJEqKeRW
R4JlZSJYXRyCrXBBP9ffuvdcPsqPXTv9pTa6OGSnpG8EWqlgmESywU503hikWBAyrYEIL/Qe/de6
5TUlLUQimnpoJqcNE4glhjkhDwSJNA4jZSgaGWNWU2urAEcj37r3UNsJhnhrKd8TjXgyNUtdXwtR
Uxira1JIpkq6tDHpqKlJoEYO4LBkBvcD37r3U/wQGxMMXpN1/bT0nWslxxwdahv9cA+/de6wtQUL
zU9S9HSvUUhqDSztTxGWmNWuiqMEhTXEalOJNJGsfW/v3Xuo1bhcVkIamGpo4v8AKsZV4eWenMlF
WrjK8AVVJT19G9PXUkcpUNeKRGV1DKQwBHuvdFv2n8LfjTsncG391be65li3FtjsHJ9q4jLZTe/Y
m4qtOwMtsxevqncte24925Zc1VwbQU0dJHWiogoQ7yU0cUzvI3ut6jw6F7GdS9d4bsvdfcOO2xSQ
dk73we2Nt7n3S1TkairyOE2aMyNt0KUlTWTYzHLjl3BWAvSwQyTiYiVpAqafdeqaU8ul5BRUdKoW
mpKanUSTTBYYIogJamWSaokARVs880rM5+rMxJ5Pv3WuvQ0NFTqyQUlNCjzPUOsUEUatPLNJUyTM
FUAyvUSu5b6l2J+pPv3XuuNPj6CkeeSloqSmkqqmStqXgp4onnq5lCS1UzIimSolUWZzdiPqffuv
dTPfuvde9+691737r3Xvfuvde9+691737r3Xvfuvdf/U3+Pfuvde9+691737r3Xvfuvde9+69173
7r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuv
df/Z
--=_related 0029FB02C1257A7C_=--

--===============0633673170==
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: inline

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

--===============0633673170==--

From libssh2-devel-bounces@cool.haxx.se  Mon Sep 17 10:59:39 2012
Return-Path: <libssh2-devel-bounces@cool.haxx.se>
Received: from www.haxx.se (localhost.localdomain [127.0.0.1])
	by giant.haxx.se (8.14.4/8.14.4/Debian-2) with ESMTP id q8H8xOmb028890;
	Mon, 17 Sep 2012 10:59:37 +0200
Received: from foo.stuge.se (qmailr@foo.stuge.se [212.116.89.98])
 by giant.haxx.se (8.14.4/8.14.4/Debian-2) with SMTP id q8H8xNOu028873
 for <libssh2-devel@cool.haxx.se>; Mon, 17 Sep 2012 10:59:23 +0200
Received: (qmail 11595 invoked by uid 501); 17 Sep 2012 08:59:22 -0000
Message-ID: <20120917085922.11594.qmail@stuge.se>
Date: Mon, 17 Sep 2012 10:59:22 +0200
From: Peter Stuge <peter@stuge.se>
To: libssh2-devel@cool.haxx.se
Subject: Re: Cannot build libssh2
Mail-Followup-To: libssh2-devel@cool.haxx.se
References: <OFFFF0C717.16303DDC-ONC1257A78.005FF116-C1257A78.0060ACA3@amadeus.com>
 <alpine.DEB.2.00.1209162354060.2839@tvnag.unkk.fr>
 <OF0CEA6C25.635CE0B9-ON00257A7C.00284B9C-C1257A7C.0029FB08@amadeus.com>
MIME-Version: 1.0
Content-Disposition: inline
In-Reply-To: <OF0CEA6C25.635CE0B9-ON00257A7C.00284B9C-C1257A7C.0029FB08@amadeus.com>
X-BeenThere: libssh2-devel@cool.haxx.se
X-Mailman-Version: 2.1.15
Precedence: list
Reply-To: libssh2 development <libssh2-devel@cool.haxx.se>
List-Id: libssh2 development <libssh2-devel.cool.haxx.se>
List-Unsubscribe: <http://cool.haxx.se/cgi-bin/mailman/options/libssh2-devel>, 
 <mailto:libssh2-devel-request@cool.haxx.se?subject=unsubscribe>
List-Archive: <http://cool.haxx.se/pipermail/libssh2-devel/>
List-Post: <mailto:libssh2-devel@cool.haxx.se>
List-Help: <mailto:libssh2-devel-request@cool.haxx.se?subject=help>
List-Subscribe: <http://cool.haxx.se/cgi-bin/mailman/listinfo/libssh2-devel>, 
 <mailto:libssh2-devel-request@cool.haxx.se?subject=subscribe>
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Errors-To: libssh2-devel-bounces@cool.haxx.se
Sender: "libssh2-devel" <libssh2-devel-bounces@cool.haxx.se>

Hiran,

Hiran Chaudhuri wrote:
> IMPORTANT  -  CONFIDENTIALITY  NOTICE  - This e-mail is intended only for 
> the use of the individual or entity shown above as addressees. It may 
> contain information which is privileged, confidential or otherwise 
> protected from disclosure under applicable laws.
..
> Amadeus Data Processing GmbH

It is ridiculous and embarrassing for your employer that you send
claims of confidentiality to a public mailing list.

If you want to participate in open source projects then you
need to discuss this stupidity with your management and their
management all the way to the top of the food chain and the CIO
at Amadeus.

What little I know about Amadeus tells me that it will be completely
impossible for you to accomplish anything whatsoever with regard to
openness there, so you are basically out of luck, and you can not get
the help from me in this matter that I would have offered you.

Please note that this confidentiality bullshit is no unique problem
in libssh2 - the company Huawei have for example set up a separate
internal email server in order for their engineers to be able to
participate in the Linux kernel project.

Fix your email, by then perhaps my fix for this problem is already
finished.


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

From libssh2-devel-bounces@cool.haxx.se  Mon Sep 17 11:32:37 2012
Return-Path: <libssh2-devel-bounces@cool.haxx.se>
Received: from www.haxx.se (localhost.localdomain [127.0.0.1])
	by giant.haxx.se (8.14.4/8.14.4/Debian-2) with ESMTP id q8H9WRS3027171;
	Mon, 17 Sep 2012 11:32:35 +0200
Received: from co1outboundpool.messaging.microsoft.com
 (co1ehsobe002.messaging.microsoft.com [216.32.180.185])
 by giant.haxx.se (8.14.4/8.14.4/Debian-2) with ESMTP id q8H9WOCr027097
 (version=TLSv1/SSLv3 cipher=AES128-SHA bits=128 verify=NOT)
 for <libssh2-devel@cool.haxx.se>; Mon, 17 Sep 2012 11:32:25 +0200
Received: from mail98-co1-R.bigfish.com (10.243.78.251) by
 CO1EHSOBE005.bigfish.com (10.243.66.68) with Microsoft SMTP Server id
 14.1.225.23; Mon, 17 Sep 2012 09:32:18 +0000
Received: from mail98-co1 (localhost [127.0.0.1])	by mail98-co1-R.bigfish.com
 (Postfix) with ESMTP id 30E03500167	for <libssh2-devel@cool.haxx.se>; Mon, 17
 Sep 2012 09:32:18 +0000 (UTC)
X-Forefront-Antispam-Report: CIP:157.56.249.149; KIP:(null); UIP:(null);
 IPV:NLI; H:AM2PRD0311HT005.eurprd03.prod.outlook.com; RD:none; EFVD:NLI
X-SpamScore: -3
X-BigFish: PS-3(zzc85fh1443I1a09Jzz1202h1d1ah1d2ahzz17326ah8275bh8275dhz31h2a8h668h839hd25hf0ah107ah1288h12a5h12bdh1155h)
Received-SPF: softfail (mail98-co1: transitioning domain of certivox.com does
 not designate 157.56.249.149 as permitted sender) client-ip=157.56.249.149;
 envelope-from=nick.pateman@certivox.com;
 helo=AM2PRD0311HT005.eurprd03.prod.outlook.com ; .outlook.com ; 
Received: from mail98-co1 (localhost.localdomain [127.0.0.1]) by mail98-co1
 (MessageSwitch) id 1347874335979323_24988; Mon, 17 Sep 2012 09:32:15 +0000
 (UTC)
Received: from CO1EHSMHS032.bigfish.com (unknown [10.243.78.246])	by
 mail98-co1.bigfish.com (Postfix) with ESMTP id E0891C00049	for
 <libssh2-devel@cool.haxx.se>; Mon, 17 Sep 2012 09:32:15 +0000 (UTC)
Received: from AM2PRD0311HT005.eurprd03.prod.outlook.com (157.56.249.149) by
 CO1EHSMHS032.bigfish.com (10.243.66.42) with Microsoft SMTP Server (TLS) id
 14.1.225.23; Mon, 17 Sep 2012 09:32:14 +0000
Received: from AM2PRD0311MB423.eurprd03.prod.outlook.com ([169.254.10.207]) by
 AM2PRD0311HT005.eurprd03.prod.outlook.com ([10.255.162.40]) with
 mapi id 14.16.0190.008; Mon, 17 Sep 2012 09:32:04 +0000
From: Nick Pateman <nick.pateman@certivox.com>
To: "libssh2-devel@cool.haxx.se" <libssh2-devel@cool.haxx.se>
Subject: Compiling libssh2 under x64 with Visual Studio 2010
Thread-Topic: Compiling libssh2 under x64 with Visual Studio 2010
Thread-Index: Ac2UtstcM0cSNgIsRn6wukA07ctZHQ==
Date: Mon, 17 Sep 2012 09:32:04 +0000
Message-ID: <F3E9C1826A037A4A84F4D58424D54D7B1266BC89@AM2PRD0311MB423.eurprd03.prod.outlook.com>
Accept-Language: en-GB, en-US
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
x-originating-ip: [93.97.161.124]
MIME-Version: 1.0
X-OriginatorOrg: certivox.com
X-BeenThere: libssh2-devel@cool.haxx.se
X-Mailman-Version: 2.1.15
Precedence: list
Reply-To: libssh2 development <libssh2-devel@cool.haxx.se>
List-Id: libssh2 development <libssh2-devel.cool.haxx.se>
List-Unsubscribe: <http://cool.haxx.se/cgi-bin/mailman/options/libssh2-devel>, 
 <mailto:libssh2-devel-request@cool.haxx.se?subject=unsubscribe>
List-Archive: <http://cool.haxx.se/pipermail/libssh2-devel/>
List-Post: <mailto:libssh2-devel@cool.haxx.se>
List-Help: <mailto:libssh2-devel-request@cool.haxx.se?subject=help>
List-Subscribe: <http://cool.haxx.se/cgi-bin/mailman/listinfo/libssh2-devel>, 
 <mailto:libssh2-devel-request@cool.haxx.se?subject=subscribe>
Content-Type: multipart/mixed; boundary="===============0235728127=="
Errors-To: libssh2-devel-bounces@cool.haxx.se
Sender: "libssh2-devel" <libssh2-devel-bounces@cool.haxx.se>

--===============0235728127==
Content-Language: en-US
Content-Type: multipart/alternative;
	boundary="_000_F3E9C1826A037A4A84F4D58424D54D7B1266BC89AM2PRD0311MB423_"

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

Hi there,

I'm trying to compile libssh2 under x64 on Visual Studio 2010 but am not ha=
ving much luck at the moment.

I added the curl include path to the configuration which eliminates the mis=
sing curl.h references.  Then unfortunately I get 2229 errors.

Many thanks in advance for any help.  I've put an excerpt of some of the er=
rors below...

Error      201         error C2081: 'key_exchange_state_t' : name in formal=
 parameter list illegal          c:\pop\libcurl_x64\libssh2-1.4.2\libssh2-1=
.4.2\src\libssh2_priv.h      1010       1              libssh2
Error      864         error C2143: syntax error : missing ')' before '*'  =
c:\ pop \libcurl_x64\libssh2-1.4.2\libssh2-1.4.2\src\crypto.h              =
  99           1              libssh2
Error      870         error C2143: syntax error : missing ')' before '*'  =
c:\ pop \libcurl_x64\libssh2-1.4.2\libssh2-1.4.2\src\crypto.h              =
  104         1              libssh2
Error      901         error C2143: syntax error : missing ')' before '*'  =
c:\ pop \libcurl_x64\libssh2-1.4.2\libssh2-1.4.2\src\libssh2_priv.h 842    =
     1              libssh2
Error      910         error C2143: syntax error : missing ')' before '*'  =
c:\ pop \libcurl_x64\libssh2-1.4.2\libssh2-1.4.2\src\libssh2_priv.h 1010   =
    1              libssh2
Error      930         error C2143: syntax error : missing ')' before '*'  =
c:\ pop \libcurl_x64\libssh2-1.4.2\libssh2-1.4.2\src\crypto.h              =
  47           1              libssh2
Error      934         error C2143: syntax error : missing ')' before '*'  =
c:\ pop \libcurl_x64\libssh2-1.4.2\libssh2-1.4.2\src\crypto.h              =
  63           1              libssh2
Error      940         error C2143: syntax error : missing ')' before '*'  =
c:\ pop \libcurl_x64\libssh2-1.4.2\libssh2-1.4.2\src\crypto.h              =
  67           1              libssh2

Nick.

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

<html xmlns:v=3D"urn:schemas-microsoft-com:vml" xmlns:o=3D"urn:schemas-micr=
osoft-com:office:office" xmlns:w=3D"urn:schemas-microsoft-com:office:word" =
xmlns:m=3D"http://schemas.microsoft.com/office/2004/12/omml" xmlns=3D"http:=
//www.w3.org/TR/REC-html40">
<head>
<meta http-equiv=3D"Content-Type" content=3D"text/html; charset=3Dus-ascii"=
>
<meta name=3D"Generator" content=3D"Microsoft Word 14 (filtered medium)">
<style><!--
/* Font Definitions */
@font-face
	{font-family:Calibri;
	panose-1:2 15 5 2 2 2 4 3 2 4;}
@font-face
	{font-family:Tahoma;
	panose-1:2 11 6 4 3 5 4 4 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
	{margin:0cm;
	margin-bottom:.0001pt;
	font-size:11.0pt;
	font-family:"Calibri","sans-serif";
	mso-fareast-language:EN-US;}
a:link, span.MsoHyperlink
	{mso-style-priority:99;
	color:blue;
	text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
	{mso-style-priority:99;
	color:purple;
	text-decoration:underline;}
p.MsoAcetate, li.MsoAcetate, div.MsoAcetate
	{mso-style-priority:99;
	mso-style-link:"Balloon Text Char";
	margin:0cm;
	margin-bottom:.0001pt;
	font-size:8.0pt;
	font-family:"Tahoma","sans-serif";
	mso-fareast-language:EN-US;}
span.EmailStyle17
	{mso-style-type:personal-compose;
	font-family:"Calibri","sans-serif";
	color:windowtext;}
span.BalloonTextChar
	{mso-style-name:"Balloon Text Char";
	mso-style-priority:99;
	mso-style-link:"Balloon Text";
	font-family:"Tahoma","sans-serif";}
.MsoChpDefault
	{mso-style-type:export-only;
	font-family:"Calibri","sans-serif";
	mso-fareast-language:EN-US;}
@page WordSection1
	{size:612.0pt 792.0pt;
	margin:72.0pt 72.0pt 72.0pt 72.0pt;}
div.WordSection1
	{page:WordSection1;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext=3D"edit" spidmax=3D"1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext=3D"edit">
<o:idmap v:ext=3D"edit" data=3D"1" />
</o:shapelayout></xml><![endif]-->
</head>
<body lang=3D"EN-GB" link=3D"blue" vlink=3D"purple">
<div class=3D"WordSection1">
<p class=3D"MsoNormal">Hi there,<o:p></o:p></p>
<p class=3D"MsoNormal"><o:p>&nbsp;</o:p></p>
<p class=3D"MsoNormal">I&#8217;m trying to compile libssh2 under x64 on Vis=
ual Studio 2010 but am not having much luck at the moment.<o:p></o:p></p>
<p class=3D"MsoNormal"><o:p>&nbsp;</o:p></p>
<p class=3D"MsoNormal">I added the curl include path to the configuration w=
hich eliminates the missing curl.h references.&nbsp; Then unfortunately I g=
et 2229 errors.<o:p></o:p></p>
<p class=3D"MsoNormal"><o:p>&nbsp;</o:p></p>
<p class=3D"MsoNormal">Many thanks in advance for any help.&nbsp; I&#8217;v=
e put an excerpt of some of the errors below&#8230;<o:p></o:p></p>
<p class=3D"MsoNormal"><o:p>&nbsp;</o:p></p>
<p class=3D"MsoNormal">Error&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 201&nbsp;&nbsp;&=
nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; error C2081: 'key_exchange_state_t' : n=
ame in formal parameter list illegal&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nb=
sp;&nbsp;&nbsp; c:\pop\libcurl_x64\libssh2-1.4.2\libssh2-1.4.2\src\libssh2_=
priv.h&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1010&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbs=
p; 1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp=
;&nbsp; libssh2<o:p></o:p></p>
<p class=3D"MsoNormal">Error&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 864&nbsp;&nbsp;&=
nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; error C2143: syntax error : missing ')'=
 before '*'&nbsp; c:\ pop \libcurl_x64\libssh2-1.4.2\libssh2-1.4.2\src\cryp=
to.h&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp=
;&nbsp;&nbsp;&nbsp; 99&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp=
;&nbsp; 1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=
&nbsp;&nbsp; libssh2<o:p></o:p></p>
<p class=3D"MsoNormal">Error&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 870&nbsp;&nbsp;&=
nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; error C2143: syntax error : missing ')'=
 before '*'&nbsp; c:\ pop \libcurl_x64\libssh2-1.4.2\libssh2-1.4.2\src\cryp=
to.h&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp=
;&nbsp;&nbsp;&nbsp; 104&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1&n=
bsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp=
; libssh2<o:p></o:p></p>
<p class=3D"MsoNormal">Error&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 901&nbsp;&nbsp;&=
nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; error C2143: syntax error : missing ')'=
 before '*'&nbsp; c:\ pop \libcurl_x64\libssh2-1.4.2\libssh2-1.4.2\src\libs=
sh2_priv.h 842&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1&nbsp;&nbsp=
;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; libssh2=
<o:p></o:p></p>
<p class=3D"MsoNormal">Error&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 910&nbsp;&nbsp;&=
nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; error C2143: syntax error : missing ')'=
 before '*'&nbsp; c:\ pop \libcurl_x64\libssh2-1.4.2\libssh2-1.4.2\src\libs=
sh2_priv.h 1010&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1&nbsp;&nbsp;&nbsp;&nbs=
p;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; libssh2<o:p></o:p>=
</p>
<p class=3D"MsoNormal">Error&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 930&nbsp;&nbsp;&=
nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; error C2143: syntax error : missing ')'=
 before '*'&nbsp; c:\ pop \libcurl_x64\libssh2-1.4.2\libssh2-1.4.2\src\cryp=
to.h&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp=
;&nbsp;&nbsp;&nbsp; 47&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp=
;&nbsp; 1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=
&nbsp;&nbsp; libssh2<o:p></o:p></p>
<p class=3D"MsoNormal">Error&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 934&nbsp;&nbsp;&=
nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; error C2143: syntax error : missing ')'=
 before '*'&nbsp; c:\ pop \libcurl_x64\libssh2-1.4.2\libssh2-1.4.2\src\cryp=
to.h&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp=
;&nbsp;&nbsp;&nbsp; 63&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp=
;&nbsp; 1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=
&nbsp;&nbsp; libssh2<o:p></o:p></p>
<p class=3D"MsoNormal">Error&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 940&nbsp;&nbsp;&=
nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; error C2143: syntax error : missing ')'=
 before '*'&nbsp; c:\ pop \libcurl_x64\libssh2-1.4.2\libssh2-1.4.2\src\cryp=
to.h&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp=
;&nbsp;&nbsp;&nbsp; 67&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp=
;&nbsp; 1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=
&nbsp;&nbsp; libssh2<o:p></o:p></p>
<p class=3D"MsoNormal"><o:p>&nbsp;</o:p></p>
<p class=3D"MsoNormal">Nick.<o:p></o:p></p>
</div>
</body>
</html>

--_000_F3E9C1826A037A4A84F4D58424D54D7B1266BC89AM2PRD0311MB423_--

--===============0235728127==
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: inline

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

--===============0235728127==--

From libssh2-devel-bounces@cool.haxx.se  Mon Sep 17 11:55:15 2012
Return-Path: <libssh2-devel-bounces@cool.haxx.se>
Received: from www.haxx.se (localhost.localdomain [127.0.0.1])
	by giant.haxx.se (8.14.4/8.14.4/Debian-2) with ESMTP id q8H9t6ig014078;
	Mon, 17 Sep 2012 11:55:12 +0200
Received: from mail-qc0-f182.google.com (mail-qc0-f182.google.com
 [209.85.216.182])
 by giant.haxx.se (8.14.4/8.14.4/Debian-2) with ESMTP id q8H9t4gq013427
 (version=TLSv1/SSLv3 cipher=RC4-SHA bits=128 verify=NOT)
 for <libssh2-devel@cool.haxx.se>; Mon, 17 Sep 2012 11:55:05 +0200
Received: by qcsg15 with SMTP id g15so4638889qcs.41
 for <libssh2-devel@cool.haxx.se>; Mon, 17 Sep 2012 02:54:59 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113;
 h=mime-version:sender:in-reply-to:references:date
 :x-google-sender-auth:message-id:subject:from:to:content-type
 :content-transfer-encoding;
 bh=mtuZd7OzvJx32b95WtU/7BeMwwxzjuDhdTIofouJ31s=;
 b=LuMcDTk0TFkLFyhuxpSXBatrDPlq9FPTz4SejTbJUoWlUU9DlezxW5E/idZki3yPCk
 dp7A3bPHA0jlAN39KTAMlJtTu4RRsJi6M6rhWjcYP0gTSbwFBiBLSn+Yoe7o/ERSqaAC
 wKUHVfeOd22byC2m7n9BNAlIsgsN6OsqnyMyQ3VTI4gmNCdXvsChxUda+pwyhksKr/al
 8nTaKWwq3kNzrS6roXQhRS0xCRWx2RiruD5v91DB0N6VVcXMdLGCyjgC+0Zn9Ji7wjpb
 sAyl+Jp/gBf5BMRBV2DTDHyfBlbs2LQK+mls5aH8Je/mcTPagyEuLQA7tuBa2TjoY+AW
 CCOg==
MIME-Version: 1.0
Received: by 10.229.137.17 with SMTP id u17mr6949220qct.132.1347875699655;
 Mon, 17 Sep 2012 02:54:59 -0700 (PDT)
Received: by 10.229.181.130 with HTTP; Mon, 17 Sep 2012 02:54:59 -0700 (PDT)
In-Reply-To: <F3E9C1826A037A4A84F4D58424D54D7B1266BC89@AM2PRD0311MB423.eurprd03.prod.outlook.com>
References: <F3E9C1826A037A4A84F4D58424D54D7B1266BC89@AM2PRD0311MB423.eurprd03.prod.outlook.com>
Date: Mon, 17 Sep 2012 10:54:59 +0100
X-Google-Sender-Auth: XqDArQuQm9O5A_wpKbDjAxPYSgE
Message-ID: <CADyPeTPRnc59Th6GnyM_egq2W-qnEudCTqPrT=ZoyQYL1jH4oQ@mail.gmail.com>
Subject: Re: Compiling libssh2 under x64 with Visual Studio 2010
From: Alexander Lamaison <swish@lammy.co.uk>
To: libssh2 development <libssh2-devel@cool.haxx.se>
X-MIME-Autoconverted: from quoted-printable to 8bit by giant.haxx.se id
 q8H9t4gq013427
X-BeenThere: libssh2-devel@cool.haxx.se
X-Mailman-Version: 2.1.15
Precedence: list
Reply-To: libssh2 development <libssh2-devel@cool.haxx.se>
List-Id: libssh2 development <libssh2-devel.cool.haxx.se>
List-Unsubscribe: <http://cool.haxx.se/cgi-bin/mailman/options/libssh2-devel>, 
 <mailto:libssh2-devel-request@cool.haxx.se?subject=unsubscribe>
List-Archive: <http://cool.haxx.se/pipermail/libssh2-devel/>
List-Post: <mailto:libssh2-devel@cool.haxx.se>
List-Help: <mailto:libssh2-devel-request@cool.haxx.se?subject=help>
List-Subscribe: <http://cool.haxx.se/cgi-bin/mailman/listinfo/libssh2-devel>, 
 <mailto:libssh2-devel-request@cool.haxx.se?subject=subscribe>
Content-Type: text/plain; charset="windows-1252"
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 quoted-printable to 8bit by giant.haxx.se id q8H9t6ig014078

On 17 September 2012 10:32, Nick Pateman <nick.pateman@certivox.com> wrote:
> Hi there,
> Im trying to compile libssh2 under x64 on Visual Studio 2010 but am not
> having much luck at the moment.
>
> I added the curl include path to the configuration which eliminates the
> missing curl.h references.  Then unfortunately I get 2229 errors.

Are you sure you're trying to compile libssh2? Or are you maybe trying
to compile libcurl?  libssh2 doesn't depend on curl.h so there won't
be any references to it to eliminate.

> Many thanks in advance for any help.  Ive put an excerpt of some of the
> errors below
>
> Error      201         error C2081: 'key_exchange_state_t' : name in formal
> parameter list illegal
> c:\pop\libcurl_x64\libssh2-1.4.2\libssh2-1.4.2\src\libssh2_priv.h      1010
> 1              libssh2

I've no idea why it would object to key_exchange_state_t as it's
defined in the same file.  Something in your build is very broken.
Have you got the correct libssh2_config.h in you include path?  The
one from the win32 directory?

Alex

-- 
Swish - Easy SFTP for Windows Explorer (http://www.swish-sftp.org)

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

From libssh2-devel-bounces@cool.haxx.se  Mon Sep 17 12:15:36 2012
Return-Path: <libssh2-devel-bounces@cool.haxx.se>
Received: from www.haxx.se (localhost.localdomain [127.0.0.1])
	by giant.haxx.se (8.14.4/8.14.4/Debian-2) with ESMTP id q8HAFNFx001682;
	Mon, 17 Sep 2012 12:15:34 +0200
Received: from db3outboundpool.messaging.microsoft.com
 (db3ehsobe006.messaging.microsoft.com [213.199.154.144])
 by giant.haxx.se (8.14.4/8.14.4/Debian-2) with ESMTP id q8HAFLe4001623
 (version=TLSv1/SSLv3 cipher=AES128-SHA bits=128 verify=NOT)
 for <libssh2-devel@cool.haxx.se>; Mon, 17 Sep 2012 12:15:22 +0200
Received: from mail46-db3-R.bigfish.com (10.3.81.240) by
 DB3EHSOBE001.bigfish.com (10.3.84.21) with Microsoft SMTP Server id
 14.1.225.23; Mon, 17 Sep 2012 10:15:15 +0000
Received: from mail46-db3 (localhost [127.0.0.1])	by mail46-db3-R.bigfish.com
 (Postfix) with ESMTP id D2614220161	for <libssh2-devel@cool.haxx.se>; Mon, 17
 Sep 2012 10:15:15 +0000 (UTC)
X-Forefront-Antispam-Report: CIP:157.56.249.149; KIP:(null); UIP:(null);
 IPV:NLI; H:AM2PRD0311HT002.eurprd03.prod.outlook.com; RD:none; EFVD:NLI
X-SpamScore: -3
X-BigFish: PS-3(zz98dI1443I1432I1a09Jd6f1izz1202h1d1ah1d2ahzz172d07h17326ah8275bh17598diz31h2a8h668h839h944hd25hf0ah107ah1220h1288h12a5h12a9h12bdh1155h)
Received-SPF: softfail (mail46-db3: transitioning domain of certivox.com does
 not designate 157.56.249.149 as permitted sender) client-ip=157.56.249.149;
 envelope-from=nick.pateman@certivox.com;
 helo=AM2PRD0311HT002.eurprd03.prod.outlook.com ; .outlook.com ; 
Received: from mail46-db3 (localhost.localdomain [127.0.0.1]) by mail46-db3
 (MessageSwitch) id 1347876911663870_4547; Mon, 17 Sep 2012 10:15:11 +0000
 (UTC)
Received: from DB3EHSMHS011.bigfish.com (unknown [10.3.81.247])	by
 mail46-db3.bigfish.com (Postfix) with ESMTP id 95D9D200274	for
 <libssh2-devel@cool.haxx.se>; Mon, 17 Sep 2012 10:15:11 +0000 (UTC)
Received: from AM2PRD0311HT002.eurprd03.prod.outlook.com (157.56.249.149) by
 DB3EHSMHS011.bigfish.com (10.3.87.111) with Microsoft SMTP Server (TLS) id
 14.1.225.23; Mon, 17 Sep 2012 10:15:08 +0000
Received: from AM2PRD0311MB423.eurprd03.prod.outlook.com ([169.254.10.207]) by
 AM2PRD0311HT002.eurprd03.prod.outlook.com ([10.255.162.37]) with
 mapi id 14.16.0190.008; Mon, 17 Sep 2012 10:15:07 +0000
From: Nick Pateman <nick.pateman@certivox.com>
To: "libssh2-devel@cool.haxx.se" <libssh2-devel@cool.haxx.se>
Subject: RE: Compiling libssh2 under x64 with Visual Studio 2010
Thread-Topic: Compiling libssh2 under x64 with Visual Studio 2010
Thread-Index: Ac2UvN/aDnF1nsMpT/qNQzynHM6oXw==
Date: Mon, 17 Sep 2012 10:15:07 +0000
Message-ID: <F3E9C1826A037A4A84F4D58424D54D7B1266BE33@AM2PRD0311MB423.eurprd03.prod.outlook.com>
Accept-Language: en-GB, en-US
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
x-originating-ip: [93.97.161.124]
MIME-Version: 1.0
X-OriginatorOrg: certivox.com
X-MIME-Autoconverted: from quoted-printable to 8bit by giant.haxx.se id
 q8HAFLe4001623
X-BeenThere: libssh2-devel@cool.haxx.se
X-Mailman-Version: 2.1.15
Precedence: list
Reply-To: libssh2 development <libssh2-devel@cool.haxx.se>
List-Id: libssh2 development <libssh2-devel.cool.haxx.se>
List-Unsubscribe: <http://cool.haxx.se/cgi-bin/mailman/options/libssh2-devel>, 
 <mailto:libssh2-devel-request@cool.haxx.se?subject=unsubscribe>
List-Archive: <http://cool.haxx.se/pipermail/libssh2-devel/>
List-Post: <mailto:libssh2-devel@cool.haxx.se>
List-Help: <mailto:libssh2-devel-request@cool.haxx.se?subject=help>
List-Subscribe: <http://cool.haxx.se/cgi-bin/mailman/listinfo/libssh2-devel>, 
 <mailto:libssh2-devel-request@cool.haxx.se?subject=subscribe>
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Errors-To: libssh2-devel-bounces@cool.haxx.se
Sender: "libssh2-devel" <libssh2-devel-bounces@cool.haxx.se>

Hi Alex,

What I'm trying to do is compile libCurl for x64 via the following instructions...

http://curl.haxx.se/mail/lib-2010-06/0232.html

It says I need to compile OpenSSL, zLib and libSSH2.  I've got the other 2 compiling just fine but this one I'm stuck on.

I basically just opened with VC6 project that was in the source folder and updated it to VS2010 format via the wizard.  I've downloaded the source a few times to make sure I haven't done anything wrong but get the same thing every time.  I'm trying 32bit to start with, and I get the same problem with that build.  I created an x64 configuration based on the 32bit one but the problem persists so I'm not quite sure what I've done wrong.

Nick.

------------------------------

Message: 3
Date: Mon, 17 Sep 2012 10:54:59 +0100
From: Alexander Lamaison <swish@lammy.co.uk>
To: libssh2 development <libssh2-devel@cool.haxx.se>
Subject: Re: Compiling libssh2 under x64 with Visual Studio 2010
Message-ID:
	<CADyPeTPRnc59Th6GnyM_egq2W-qnEudCTqPrT=ZoyQYL1jH4oQ@mail.gmail.com>
Content-Type: text/plain; charset=windows-1252

On 17 September 2012 10:32, Nick Pateman <nick.pateman@certivox.com> wrote:
> Hi there,
> I?m trying to compile libssh2 under x64 on Visual Studio 2010 but am 
> not having much luck at the moment.
>
> I added the curl include path to the configuration which eliminates 
> the missing curl.h references.  Then unfortunately I get 2229 errors.

Are you sure you're trying to compile libssh2? Or are you maybe trying to compile libcurl?  libssh2 doesn't depend on curl.h so there won't be any references to it to eliminate.

> Many thanks in advance for any help.  I?ve put an excerpt of some of 
> the errors below?
>
> Error      201         error C2081: 'key_exchange_state_t' : name in formal
> parameter list illegal
> c:\pop\libcurl_x64\libssh2-1.4.2\libssh2-1.4.2\src\libssh2_priv.h      1010
> 1              libssh2

I've no idea why it would object to key_exchange_state_t as it's defined in the same file.  Something in your build is very broken.
Have you got the correct libssh2_config.h in you include path?  The one from the win32 directory?

Alex

--
Swish - Easy SFTP for Windows Explorer (http://www.swish-sftp.org)



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

From libssh2-devel-bounces@cool.haxx.se  Mon Sep 17 12:18:58 2012
Return-Path: <libssh2-devel-bounces@cool.haxx.se>
Received: from www.haxx.se (localhost.localdomain [127.0.0.1])
	by giant.haxx.se (8.14.4/8.14.4/Debian-2) with ESMTP id q8HAIuk5004009;
	Mon, 17 Sep 2012 12:18:57 +0200
Received: from foo.stuge.se (qmailr@foo.stuge.se [212.116.89.98])
 by giant.haxx.se (8.14.4/8.14.4/Debian-2) with SMTP id q8HAItcm003993
 for <libssh2-devel@cool.haxx.se>; Mon, 17 Sep 2012 12:18:55 +0200
Received: (qmail 18561 invoked by uid 501); 17 Sep 2012 10:18:55 -0000
Message-ID: <20120917101855.18560.qmail@stuge.se>
Date: Mon, 17 Sep 2012 12:18:55 +0200
From: Peter Stuge <peter@stuge.se>
To: libssh2-devel@cool.haxx.se
Subject: Re: Compiling libssh2 under x64 with Visual Studio 2010
Mail-Followup-To: libssh2-devel@cool.haxx.se
References: <F3E9C1826A037A4A84F4D58424D54D7B1266BE33@AM2PRD0311MB423.eurprd03.prod.outlook.com>
MIME-Version: 1.0
Content-Disposition: inline
In-Reply-To: <F3E9C1826A037A4A84F4D58424D54D7B1266BE33@AM2PRD0311MB423.eurprd03.prod.outlook.com>
X-BeenThere: libssh2-devel@cool.haxx.se
X-Mailman-Version: 2.1.15
Precedence: list
Reply-To: libssh2 development <libssh2-devel@cool.haxx.se>
List-Id: libssh2 development <libssh2-devel.cool.haxx.se>
List-Unsubscribe: <http://cool.haxx.se/cgi-bin/mailman/options/libssh2-devel>, 
 <mailto:libssh2-devel-request@cool.haxx.se?subject=unsubscribe>
List-Archive: <http://cool.haxx.se/pipermail/libssh2-devel/>
List-Post: <mailto:libssh2-devel@cool.haxx.se>
List-Help: <mailto:libssh2-devel-request@cool.haxx.se?subject=help>
List-Subscribe: <http://cool.haxx.se/cgi-bin/mailman/listinfo/libssh2-devel>, 
 <mailto:libssh2-devel-request@cool.haxx.se?subject=subscribe>
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Errors-To: libssh2-devel-bounces@cool.haxx.se
Sender: "libssh2-devel" <libssh2-devel-bounces@cool.haxx.se>

Nick Pateman wrote:
> It says I need to compile OpenSSL, zLib and libSSH2.
> I've got the other 2 compiling just fine but this one I'm stuck on.

And you're using separate projects for each package?


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

From libssh2-devel-bounces@cool.haxx.se  Mon Sep 17 12:24:19 2012
Return-Path: <libssh2-devel-bounces@cool.haxx.se>
Received: from www.haxx.se (localhost.localdomain [127.0.0.1])
	by giant.haxx.se (8.14.4/8.14.4/Debian-2) with ESMTP id q8HAOHJa008843;
	Mon, 17 Sep 2012 12:24:18 +0200
Received: from mail-qc0-f182.google.com (mail-qc0-f182.google.com
 [209.85.216.182])
 by giant.haxx.se (8.14.4/8.14.4/Debian-2) with ESMTP id q8HAOFs5008771
 (version=TLSv1/SSLv3 cipher=RC4-SHA bits=128 verify=NOT)
 for <libssh2-devel@cool.haxx.se>; Mon, 17 Sep 2012 12:24:16 +0200
Received: by qcsg15 with SMTP id g15so4654795qcs.41
 for <libssh2-devel@cool.haxx.se>; Mon, 17 Sep 2012 03:24:10 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113;
 h=mime-version:sender:in-reply-to:references:date
 :x-google-sender-auth:message-id:subject:from:to:content-type;
 bh=JpLY4S9rUwpCUGYPQu0dxNzeFl7EJys8GdphvFryBm0=;
 b=bQ17PRkb0+P6wlJx/4QCX/8o6SgTx35ncYX7E2+y/FtN1nbz/s9dZjpUsEpCPEtge/
 uuHpPLFPINh/1t9QujCbquKgkfU/mFv0+oguyFE4hH2wNEV9p1bIVF8pZ23JEsATAens
 6wJFaojcveT78KTSgWKhYGDd/FhVTFBuxX6XlFzw40sWquUlw6l8SxX8bhkSf9b7DLty
 U6S73aPXDdqpgFvwNyHdrQh/qHpwdBxABQq7mDffcKc+2deg5KEd7KavF4o81Lmk/202
 7YeoomKdNbt4H1vVxR9PeKKPCzSnddy5Vc9xmpomn9EBhphotOdPjvZjoq3yMutWrwqa
 K1Dw==
MIME-Version: 1.0
Received: by 10.224.186.130 with SMTP id cs2mr26552653qab.22.1347877450660;
 Mon, 17 Sep 2012 03:24:10 -0700 (PDT)
Received: by 10.229.181.130 with HTTP; Mon, 17 Sep 2012 03:24:10 -0700 (PDT)
In-Reply-To: <F3E9C1826A037A4A84F4D58424D54D7B1266BE33@AM2PRD0311MB423.eurprd03.prod.outlook.com>
References: <F3E9C1826A037A4A84F4D58424D54D7B1266BE33@AM2PRD0311MB423.eurprd03.prod.outlook.com>
Date: Mon, 17 Sep 2012 11:24:10 +0100
X-Google-Sender-Auth: Qodc4iVMHn2QZbnO2Zdai5JR2os
Message-ID: <CADyPeTOd9xs9w=aO5m+9Yduaa9N=Uj5FzZe0uCvT5Si2M0mbHQ@mail.gmail.com>
Subject: Re: Compiling libssh2 under x64 with Visual Studio 2010
From: Alexander Lamaison <swish@lammy.co.uk>
To: libssh2 development <libssh2-devel@cool.haxx.se>
X-BeenThere: libssh2-devel@cool.haxx.se
X-Mailman-Version: 2.1.15
Precedence: list
Reply-To: libssh2 development <libssh2-devel@cool.haxx.se>
List-Id: libssh2 development <libssh2-devel.cool.haxx.se>
List-Unsubscribe: <http://cool.haxx.se/cgi-bin/mailman/options/libssh2-devel>, 
 <mailto:libssh2-devel-request@cool.haxx.se?subject=unsubscribe>
List-Archive: <http://cool.haxx.se/pipermail/libssh2-devel/>
List-Post: <mailto:libssh2-devel@cool.haxx.se>
List-Help: <mailto:libssh2-devel-request@cool.haxx.se?subject=help>
List-Subscribe: <http://cool.haxx.se/cgi-bin/mailman/listinfo/libssh2-devel>, 
 <mailto:libssh2-devel-request@cool.haxx.se?subject=subscribe>
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Errors-To: libssh2-devel-bounces@cool.haxx.se
Sender: "libssh2-devel" <libssh2-devel-bounces@cool.haxx.se>

On 17 September 2012 11:15, Nick Pateman <nick.pateman@certivox.com> wrote:
>
> What I'm trying to do is compile libCurl for x64 via the following instructions...
>
> http://curl.haxx.se/mail/lib-2010-06/0232.html
>
> It says I need to compile OpenSSL, zLib and libSSH2.  I've got the other 2 compiling just fine but this one I'm stuck on.

Ok, that's fine but why are you getting curl.h errors when compiling
libssh2?  Curl uses libssh2, not the other way round.

> I basically just opened with VC6 project that was in the source folder and updated it to VS2010 format via the wizard.

My advice is to ignore the included VC projects and make your own
because it's really easy on Windows.  Here's the guide I've sent
around this list a few times now:

Using Visual Studio:
- Shove all the .c files in libssh2/src into an empty Win32 C++ (DLL
or Static Library) project except libgcrypt.c/openssl.c of which you
only pick the one appropriate to your crypto library.
- Add your OpenSSL or libgcrypt include directory to the project include path
- Add libssh2/include to the project include path
- Add libssh2/win32 to the project include path
- Add the appropriate crypto libraries to the project Additonal Libraries list
- Build
- Job done

Using MinGW:
I'm not confident enough to list the exact steps for this but its
basically a matter of adding the same .c files to a Makefile source
list and instructing gcc to make a DLL or static library from them.
Use Google to find the flags you need to add for those two
alternatives.

Alternatively, Guenter advised:

there's a NMakefile available too which should work with all MSVC
versions; edit .\win32\config.mk and setup the paths to OpenSSL and
Zlib, then in the root: nmake

Or use the included mingw makefile:

set OPENSSL_PATH=...
if you want Zlib support:
set WITH_ZLIB=1
set ZLIB_PATH=...
in ./win32 folder: mingw32-make

HTH

Alex

-- 
Swish - Easy SFTP for Windows Explorer (http://www.swish-sftp.org)
_______________________________________________
libssh2-devel http://cool.haxx.se/cgi-bin/mailman/listinfo/libssh2-devel

From libssh2-devel-bounces@cool.haxx.se  Mon Sep 17 13:18:32 2012
Return-Path: <libssh2-devel-bounces@cool.haxx.se>
Received: from www.haxx.se (localhost.localdomain [127.0.0.1])
	by giant.haxx.se (8.14.4/8.14.4/Debian-2) with ESMTP id q8HBI41N023811;
	Mon, 17 Sep 2012 13:18:27 +0200
Received: from foo.stuge.se (qmailr@foo.stuge.se [212.116.89.98])
 by giant.haxx.se (8.14.4/8.14.4/Debian-2) with SMTP id q8HBI2wT023751
 for <libssh2-devel@cool.haxx.se>; Mon, 17 Sep 2012 13:18:03 +0200
Received: (qmail 23341 invoked by uid 501); 17 Sep 2012 11:18:01 -0000
Message-ID: <20120917111801.23340.qmail@stuge.se>
Date: Mon, 17 Sep 2012 13:18:01 +0200
From: Peter Stuge <peter@stuge.se>
To: libssh2-devel@cool.haxx.se
Subject: Re: Compiling libssh2 under x64 with Visual Studio 2010
Mail-Followup-To: libssh2-devel@cool.haxx.se
References: <F3E9C1826A037A4A84F4D58424D54D7B1266BE33@AM2PRD0311MB423.eurprd03.prod.outlook.com>
 <CADyPeTOd9xs9w=aO5m+9Yduaa9N=Uj5FzZe0uCvT5Si2M0mbHQ@mail.gmail.com>
MIME-Version: 1.0
Content-Disposition: inline
In-Reply-To: <CADyPeTOd9xs9w=aO5m+9Yduaa9N=Uj5FzZe0uCvT5Si2M0mbHQ@mail.gmail.com>
X-BeenThere: libssh2-devel@cool.haxx.se
X-Mailman-Version: 2.1.15
Precedence: list
Reply-To: libssh2 development <libssh2-devel@cool.haxx.se>
List-Id: libssh2 development <libssh2-devel.cool.haxx.se>
List-Unsubscribe: <http://cool.haxx.se/cgi-bin/mailman/options/libssh2-devel>, 
 <mailto:libssh2-devel-request@cool.haxx.se?subject=unsubscribe>
List-Archive: <http://cool.haxx.se/pipermail/libssh2-devel/>
List-Post: <mailto:libssh2-devel@cool.haxx.se>
List-Help: <mailto:libssh2-devel-request@cool.haxx.se?subject=help>
List-Subscribe: <http://cool.haxx.se/cgi-bin/mailman/listinfo/libssh2-devel>, 
 <mailto:libssh2-devel-request@cool.haxx.se?subject=subscribe>
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Errors-To: libssh2-devel-bounces@cool.haxx.se
Sender: "libssh2-devel" <libssh2-devel-bounces@cool.haxx.se>

Alexander Lamaison wrote:
> Here's the guide I've sent around this list a few times now:

Thanks! Maybe put it on the wiki, or commit to a text file?


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

From libssh2-devel-bounces@cool.haxx.se  Mon Sep 17 15:43:51 2012
Return-Path: <libssh2-devel-bounces@cool.haxx.se>
Received: from www.haxx.se (localhost.localdomain [127.0.0.1])
	by giant.haxx.se (8.14.4/8.14.4/Debian-2) with ESMTP id q8HDhVOq017968;
	Mon, 17 Sep 2012 15:43:45 +0200
Received: from mail1.bemta5.messagelabs.com (mail1.bemta5.messagelabs.com
 [195.245.231.130])
 by giant.haxx.se (8.14.4/8.14.4/Debian-2) with ESMTP id q8HDhT3A017868
 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NOT)
 for <libssh2-devel@cool.haxx.se>; Mon, 17 Sep 2012 15:43:30 +0200
Received: from [195.245.231.67:43743] by server-1.bemta-5.messagelabs.com id
 AC/24-32692-20927505; Mon, 17 Sep 2012 13:43:30 +0000
X-Env-Sender: hiran.chaudhuri@amadeus.com
X-Msg-Ref: server-4.tower-82.messagelabs.com!1347889393!32932370!3
X-Originating-IP: [193.23.186.180]
X-StarScan-Received: 
X-StarScan-Version: 6.6.1.3; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 25164 invoked from network); 17 Sep 2012 13:43:29 -0000
Received: from mucsmtp2.amadeus.net (HELO mucsmtp2.amadeus.net)
 (193.23.186.180)
 by server-4.tower-82.messagelabs.com with RC4-SHA encrypted SMTP;
 17 Sep 2012 13:43:29 -0000
In-Reply-To: <20120917085922.11594.qmail@stuge.se>
References: <OFFFF0C717.16303DDC-ONC1257A78.005FF116-C1257A78.0060ACA3@amadeus.com>
 <alpine.DEB.2.00.1209162354060.2839@tvnag.unkk.fr>
 <OF0CEA6C25.635CE0B9-ON00257A7C.00284B9C-C1257A7C.0029FB08@amadeus.com>
 <20120917085922.11594.qmail@stuge.se>
To: libssh2 development <libssh2-devel@cool.haxx.se>
MIME-Version: 1.0
Subject: Re: Cannot build libssh2
X-KeepSent: 566255B9:31DABCC1-00257A7C:004A1D94;
 type=4; name=$KeepSent
X-Mailer: Lotus Notes Release 8.5.1 FP2 March 18, 2010
Message-ID: <OF566255B9.31DABCC1-ON00257A7C.004A1D94-C1257A7C.004B6215@amadeus.com>
From: Hiran Chaudhuri <hiran.chaudhuri@amadeus.com>
Date: Mon, 17 Sep 2012 15:43:21 +0200
X-MIMETrack: Serialize by Router on MUCSMTP2/MUC/AMAEXTMAIL(Release
 8.5.2FP3|July 10, 2011) at 09/17/2012 01:43:28 PM,
 Serialize complete at 09/17/2012 01:43:28 PM
X-BeenThere: libssh2-devel@cool.haxx.se
X-Mailman-Version: 2.1.15
Precedence: list
Reply-To: libssh2 development <libssh2-devel@cool.haxx.se>
List-Id: libssh2 development <libssh2-devel.cool.haxx.se>
List-Unsubscribe: <http://cool.haxx.se/cgi-bin/mailman/options/libssh2-devel>, 
 <mailto:libssh2-devel-request@cool.haxx.se?subject=unsubscribe>
List-Archive: <http://cool.haxx.se/pipermail/libssh2-devel/>
List-Post: <mailto:libssh2-devel@cool.haxx.se>
List-Help: <mailto:libssh2-devel-request@cool.haxx.se?subject=help>
List-Subscribe: <http://cool.haxx.se/cgi-bin/mailman/listinfo/libssh2-devel>, 
 <mailto:libssh2-devel-request@cool.haxx.se?subject=subscribe>
Content-Type: multipart/mixed; boundary="===============0651070039=="
Errors-To: libssh2-devel-bounces@cool.haxx.se
Sender: "libssh2-devel" <libssh2-devel-bounces@cool.haxx.se>

This is a multipart message in MIME format.
--===============0651070039==
Content-Type: multipart/related; boundary="=_related 004B6210C1257A7C_="

This is a multipart message in MIME format.
--=_related 004B6210C1257A7C_=
Content-Type: multipart/alternative; boundary="=_alternative 004B6212C1257A7C_="


--=_alternative 004B6212C1257A7C_=
Content-Type: text/plain; charset="ISO-8859-1"
Content-Transfer-Encoding: quoted-printable

On 17 Sep 2012 Peter Stuge wrote:
>It is ridiculous and embarrassing for your employer that you send
>claims of confidentiality to a public mailing list.

To some degree my personal view and that of my employer may differ,=20
however that is not the intended topic here.

>If you want to participate in open source projects then you
>need to discuss this stupidity with your management and their
>management all the way to the top of the food chain and the CIO
>at Amadeus.
>
>What little I know about Amadeus tells me that it will be completely
>impossible for you to accomplish anything whatsoever with regard to
>openness there, so you are basically out of luck, and you can not get
>the help from me in this matter that I would have offered you.

I'm afraid I cannot follow here. There is a technical issue and I am just=20
asking for an answer in this forum.
So what exactly do you mean I could do to get libssh2 compiled?

Best regards

Hiran


Hiran Chaudhuri
System Support Programmer / Analyst
IT Service Assurance
Hosting & Regional Services (IH)
Amadeus Data Processing GmbH
Berghamer Strasse 6
85435 Erding
T: +49-8122-43x3662
hiran.chaudhuri@amadeus.com
http://www.amadeus.com






IMPORTANT  -  CONFIDENTIALITY  NOTICE  - This e-mail is intended only for=20
the use of the individual or entity shown above as addressees. It may=20
contain information which is privileged, confidential or otherwise=20
protected from disclosure under applicable laws.  If the reader of this=20
transmission is not the intended recipient, you are hereby notified that=20
any dissemination, printing, distribution, copying, disclosure or the=20
taking of any action in reliance on the contents of this information is=20
strictly prohibited.  If you have received this transmission in error,=20
please immediately notify us by reply e-mail or using the address below=20
and delete the message and any attachments from your system.=20

Amadeus Data Processing GmbH=20
Gesch=E4ftsf=FChrer: Eberhard Haag=20
Sitz der Gesellschaft: Erding=20
HR M=FCnchen 48 199=20
Berghamer Strasse 6=20
85435 Erding=20
Germany
--=_alternative 004B6212C1257A7C_=
Content-Type: text/html; charset="ISO-8859-1"
Content-Transfer-Encoding: quoted-printable

<tt><font size=3D2>On 17 Sep 2012 Peter Stuge wrote:</font></tt>
<br><tt><font size=3D2>&gt;It is ridiculous and embarrassing for your emplo=
yer
that you send<br>
&gt;claims of confidentiality to a public mailing list.<br>
</font></tt>
<br><tt><font size=3D2>To some degree my personal view and that of my emplo=
yer
may differ, however that is not the intended topic here.</font></tt>
<br><tt><font size=3D2><br>
&gt;If you want to participate in open source projects then you<br>
&gt;need to discuss this stupidity with your management and their<br>
&gt;management all the way to the top of the food chain and the CIO<br>
&gt;at Amadeus.<br>
&gt;<br>
&gt;What little I know about Amadeus tells me that it will be completely<br>
&gt;impossible for you to accomplish anything whatsoever with regard to<br>
&gt;openness there, so you are basically out of luck, and you can not get<b=
r>
&gt;the help from me in this matter that I would have offered you.</font></=
tt>
<br>
<br><tt><font size=3D2>I'm afraid I cannot follow here. There is a technical
issue and I am just asking for an answer in this forum.</font></tt>
<br><tt><font size=3D2>So what exactly do you mean I could do to get libssh2
compiled?</font></tt>
<br>
<br><tt><font size=3D2>Best regards</font></tt>
<br>
<br><tt><font size=3D2>Hiran<br>
</font></tt>
<br><font size=3D2 face=3D"sans-serif"><br>
</font><font size=3D2 color=3D#0060a0 face=3D"Arial"><b>Hiran Chaudhuri</b>=
</font><font size=3D1 face=3D"Arial"><b><br>
System Support Programmer / Analyst</b></font><font size=3D1 color=3D#5f5f5=
f face=3D"Arial"><br>
IT Service Assurance<br>
Hosting &amp; Regional Services (IH)<br>
Amadeus Data Processing GmbH<br>
Berghamer Strasse 6<br>
85435 Erding<br>
T: +49-8122-43x3662<br>
hiran.chaudhuri@amadeus.com</font><font size=3D1 color=3Dblue face=3D"Arial=
"><u><br>
</u></font><a href=3Dhttp://www.amadeus.com/><font size=3D1 color=3Dblue fa=
ce=3D"Arial"><u>http://www.amadeus.com</u></font></a>
<p><img src=3Dcid:=5F2=5F0EE8DC3C0EE8D7EC004B620CC1257A7C width=3D149 heigh=
t=3D48 alt=3D"Amadeus logo"><font size=3D2 face=3D"sans-serif"><br>
</font>
<br><font size=3D2 face=3D"sans-serif"><br>
<br>
<br>
<br>
IMPORTANT &nbsp;- &nbsp;CONFIDENTIALITY &nbsp;NOTICE &nbsp;- This e-mail
is intended only for the use of the individual or entity shown above as
addressees. It may contain information which is privileged, confidential
or otherwise protected from disclosure under applicable laws. &nbsp;If
the reader of this transmission is not the intended recipient, you are
hereby notified that any dissemination, printing, distribution, copying,
disclosure or the taking of any action in reliance on the contents of this
information is strictly prohibited. &nbsp;If you have received this transmi=
ssion
in error, please immediately notify us by reply e-mail or using the address
below and delete the message and any attachments from your system. <br>
<br>
Amadeus Data Processing GmbH <br>
Gesch=E4ftsf=FChrer: Eberhard Haag <br>
Sitz der Gesellschaft: Erding <br>
HR M=FCnchen 48 199 <br>
Berghamer Strasse 6 <br>
85435 Erding <br>
Germany</font>
--=_alternative 004B6212C1257A7C_=--
--=_related 004B6210C1257A7C_=
Content-Type: image/jpeg
Content-ID: <_2_0EE8DC3C0EE8D7EC004B620CC1257A7C>
Content-Transfer-Encoding: base64

/9j/4ReeRXhpZgAATU0AKgAAAAgABwESAAMAAAABAAEAAAEaAAUAAAABAAAAYgEbAAUAAAABAAAA
agEoAAMAAAABAAIAAAExAAIAAAAeAAAAcgEyAAIAAAAUAAAAkIdpAAQAAAABAAAApAAAANAACvyA
AAAnEAAK/IAAACcQQWRvYmUgUGhvdG9zaG9wIENTNS4xIFdpbmRvd3MAMjAxMjowMToxNyAxMzox
ODoxOAAAA6ABAAMAAAABAAEAAKACAAQAAAABAAAAlqADAAQAAAABAAAAMAAAAAAAAAAGAQMAAwAA
AAEABgAAARoABQAAAAEAAAEeARsABQAAAAEAAAEmASgAAwAAAAEAAgAAAgEABAAAAAEAAAEuAgIA
BAAAAAEAABZoAAAAAAAAAEgAAAABAAAASAAAAAH/2P/iDFhJQ0NfUFJPRklMRQABAQAADEhMaW5v
AhAAAG1udHJSR0IgWFlaIAfOAAIACQAGADEAAGFjc3BNU0ZUAAAAAElFQyBzUkdCAAAAAAAAAAAA
AAAAAAD21gABAAAAANMtSFAgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAEWNwcnQAAAFQAAAAM2Rlc2MAAAGEAAAAbHd0cHQAAAHwAAAAFGJrcHQAAAIEAAAA
FHJYWVoAAAIYAAAAFGdYWVoAAAIsAAAAFGJYWVoAAAJAAAAAFGRtbmQAAAJUAAAAcGRtZGQAAALE
AAAAiHZ1ZWQAAANMAAAAhnZpZXcAAAPUAAAAJGx1bWkAAAP4AAAAFG1lYXMAAAQMAAAAJHRlY2gA
AAQwAAAADHJUUkMAAAQ8AAAIDGdUUkMAAAQ8AAAIDGJUUkMAAAQ8AAAIDHRleHQAAAAAQ29weXJp
Z2h0IChjKSAxOTk4IEhld2xldHQtUGFja2FyZCBDb21wYW55AABkZXNjAAAAAAAAABJzUkdCIElF
QzYxOTY2LTIuMQAAAAAAAAAAAAAAEnNSR0IgSUVDNjE5NjYtMi4xAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABYWVogAAAAAAAA81EAAQAAAAEWzFhZWiAA
AAAAAAAAAAAAAAAAAAAAWFlaIAAAAAAAAG+iAAA49QAAA5BYWVogAAAAAAAAYpkAALeFAAAY2lhZ
WiAAAAAAAAAkoAAAD4QAALbPZGVzYwAAAAAAAAAWSUVDIGh0dHA6Ly93d3cuaWVjLmNoAAAAAAAA
AAAAAAAWSUVDIGh0dHA6Ly93d3cuaWVjLmNoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAGRlc2MAAAAAAAAALklFQyA2MTk2Ni0yLjEgRGVmYXVsdCBSR0IgY29s
b3VyIHNwYWNlIC0gc1JHQgAAAAAAAAAAAAAALklFQyA2MTk2Ni0yLjEgRGVmYXVsdCBSR0IgY29s
b3VyIHNwYWNlIC0gc1JHQgAAAAAAAAAAAAAAAAAAAAAAAAAAAABkZXNjAAAAAAAAACxSZWZlcmVu
Y2UgVmlld2luZyBDb25kaXRpb24gaW4gSUVDNjE5NjYtMi4xAAAAAAAAAAAAAAAsUmVmZXJlbmNl
IFZpZXdpbmcgQ29uZGl0aW9uIGluIElFQzYxOTY2LTIuMQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAdmlldwAAAAAAE6T+ABRfLgAQzxQAA+3MAAQTCwADXJ4AAAABWFlaIAAAAAAATAlWAFAAAABX
H+dtZWFzAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAACjwAAAAJzaWcgAAAAAENSVCBjdXJ2AAAA
AAAABAAAAAAFAAoADwAUABkAHgAjACgALQAyADcAOwBAAEUASgBPAFQAWQBeAGMAaABtAHIAdwB8
AIEAhgCLAJAAlQCaAJ8ApACpAK4AsgC3ALwAwQDGAMsA0ADVANsA4ADlAOsA8AD2APsBAQEHAQ0B
EwEZAR8BJQErATIBOAE+AUUBTAFSAVkBYAFnAW4BdQF8AYMBiwGSAZoBoQGpAbEBuQHBAckB0QHZ
AeEB6QHyAfoCAwIMAhQCHQImAi8COAJBAksCVAJdAmcCcQJ6AoQCjgKYAqICrAK2AsECywLVAuAC
6wL1AwADCwMWAyEDLQM4A0MDTwNaA2YDcgN+A4oDlgOiA64DugPHA9MD4APsA/kEBgQTBCAELQQ7
BEgEVQRjBHEEfgSMBJoEqAS2BMQE0wThBPAE/gUNBRwFKwU6BUkFWAVnBXcFhgWWBaYFtQXFBdUF
5QX2BgYGFgYnBjcGSAZZBmoGewaMBp0GrwbABtEG4wb1BwcHGQcrBz0HTwdhB3QHhgeZB6wHvwfS
B+UH+AgLCB8IMghGCFoIbgiCCJYIqgi+CNII5wj7CRAJJQk6CU8JZAl5CY8JpAm6Cc8J5Qn7ChEK
Jwo9ClQKagqBCpgKrgrFCtwK8wsLCyILOQtRC2kLgAuYC7ALyAvhC/kMEgwqDEMMXAx1DI4MpwzA
DNkM8w0NDSYNQA1aDXQNjg2pDcMN3g34DhMOLg5JDmQOfw6bDrYO0g7uDwkPJQ9BD14Peg+WD7MP
zw/sEAkQJhBDEGEQfhCbELkQ1xD1ERMRMRFPEW0RjBGqEckR6BIHEiYSRRJkEoQSoxLDEuMTAxMj
E0MTYxODE6QTxRPlFAYUJxRJFGoUixStFM4U8BUSFTQVVhV4FZsVvRXgFgMWJhZJFmwWjxayFtYW
+hcdF0EXZReJF64X0hf3GBsYQBhlGIoYrxjVGPoZIBlFGWsZkRm3Gd0aBBoqGlEadxqeGsUa7BsU
GzsbYxuKG7Ib2hwCHCocUhx7HKMczBz1HR4dRx1wHZkdwx3sHhYeQB5qHpQevh7pHxMfPh9pH5Qf
vx/qIBUgQSBsIJggxCDwIRwhSCF1IaEhziH7IiciVSKCIq8i3SMKIzgjZiOUI8Ij8CQfJE0kfCSr
JNolCSU4JWgllyXHJfcmJyZXJocmtyboJxgnSSd6J6sn3CgNKD8ocSiiKNQpBik4KWspnSnQKgIq
NSpoKpsqzysCKzYraSudK9EsBSw5LG4soizXLQwtQS12Last4S4WLkwugi63Lu4vJC9aL5Evxy/+
MDUwbDCkMNsxEjFKMYIxujHyMioyYzKbMtQzDTNGM38zuDPxNCs0ZTSeNNg1EzVNNYc1wjX9Njc2
cjauNuk3JDdgN5w31zgUOFA4jDjIOQU5Qjl/Obw5+To2OnQ6sjrvOy07azuqO+g8JzxlPKQ84z0i
PWE9oT3gPiA+YD6gPuA/IT9hP6I/4kAjQGRApkDnQSlBakGsQe5CMEJyQrVC90M6Q31DwEQDREdE
ikTORRJFVUWaRd5GIkZnRqtG8Ec1R3tHwEgFSEtIkUjXSR1JY0mpSfBKN0p9SsRLDEtTS5pL4kwq
THJMuk0CTUpNk03cTiVObk63TwBPSU+TT91QJ1BxULtRBlFQUZtR5lIxUnxSx1MTU19TqlP2VEJU
j1TbVShVdVXCVg9WXFapVvdXRFeSV+BYL1h9WMtZGllpWbhaB1pWWqZa9VtFW5Vb5Vw1XIZc1l0n
XXhdyV4aXmxevV8PX2Ffs2AFYFdgqmD8YU9homH1YklinGLwY0Njl2PrZEBklGTpZT1lkmXnZj1m
kmboZz1nk2fpaD9olmjsaUNpmmnxakhqn2r3a09rp2v/bFdsr20IbWBtuW4SbmtuxG8eb3hv0XAr
cIZw4HE6cZVx8HJLcqZzAXNdc7h0FHRwdMx1KHWFdeF2Pnabdvh3VnezeBF4bnjMeSp5iXnnekZ6
pXsEe2N7wnwhfIF84X1BfaF+AX5ifsJ/I3+Ef+WAR4CogQqBa4HNgjCCkoL0g1eDuoQdhICE44VH
hauGDoZyhteHO4efiASIaYjOiTOJmYn+imSKyoswi5aL/IxjjMqNMY2Yjf+OZo7OjzaPnpAGkG6Q
1pE/kaiSEZJ6kuOTTZO2lCCUipT0lV+VyZY0lp+XCpd1l+CYTJi4mSSZkJn8mmia1ZtCm6+cHJyJ
nPedZJ3SnkCerp8dn4uf+qBpoNihR6G2oiailqMGo3aj5qRWpMelOKWpphqmi6b9p26n4KhSqMSp
N6mpqhyqj6sCq3Wr6axcrNCtRK24ri2uoa8Wr4uwALB1sOqxYLHWskuywrM4s660JbSctRO1irYB
tnm28Ldot+C4WbjRuUq5wro7urW7LrunvCG8m70VvY++Cr6Evv+/er/1wHDA7MFnwePCX8Lbw1jD
1MRRxM7FS8XIxkbGw8dBx7/IPci8yTrJuco4yrfLNsu2zDXMtc01zbXONs62zzfPuNA50LrRPNG+
0j/SwdNE08bUSdTL1U7V0dZV1tjXXNfg2GTY6Nls2fHadtr724DcBdyK3RDdlt4c3qLfKd+v4Dbg
veFE4cziU+Lb42Pj6+Rz5PzlhOYN5pbnH+ep6DLovOlG6dDqW+rl63Dr++yG7RHtnO4o7rTvQO/M
8Fjw5fFy8f/yjPMZ86f0NPTC9VD13vZt9vv3ivgZ+Kj5OPnH+lf65/t3/Af8mP0p/br+S/7c/23/
///tAAxBZG9iZV9DTQAB/+4ADkFkb2JlAGSAAAAAAf/bAIQADAgICAkIDAkJDBELCgsRFQ8MDA8V
GBMTFRMTGBEMDAwMDAwRDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAENCwsNDg0QDg4QFA4O
DhQUDg4ODhQRDAwMDAwREQwMDAwMDBEMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwM/8AAEQgA
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
O/R+purtS96etkHioGxHXh7q9qGmm2o1OlulX9Xq7Mxmb1LIs6hfTrS2wNbUw/vMorG3d/WQ+p/V
27P6lT1EZz6LMbTHaxjSG/vTu+nuQ+ofWDJxOqOw2ilwrFB9Ihxtt9Z7q7fQ2n/Atb6v0bEDB+sf
Uc+5lFDKhvsIFzmuj0/S+0M/RMsftu3ezY61AZZg3fSttK8le3Eiq63v183Uq6bnfbKcjKznZDKN
22kVtY0ucNu9+z6W1Az/AKuNu6h+1MHJfgZpG2x7AHNeP+Eqd9LhUMT6w9VdTRY5tOQ0V4zryxrm
vc+82seyv3OZW+l9Pv8A5f8Ao0Xp3Xuq5tmKz0qGtyLIe+S4taK33WVFldj9lzHN2fpdn/FJDJIG
wa0rYVX91JxxIojre+t+bLP+qdnUfRty+oW2ZVL97LdrQ0R+ayhv6NvuVzI6PlWZjOoU5zqcplIo
dDGureAXPJspd/Kd+bYtVJL3Z6a7XWg6o9uOum/iejmYnR3sz/2lnZBy8trTXUdorZW0/S9KoF3u
f++5600kk2UjLUrhEDZSSSSCVJJJJKf/0fVCAQQRM6FLa3TQaaBOkkpYgEQRI8E2xkEbRDjJ05Kk
kkpaB4JbWyDAkcH4p0klMXMY4EEcgtkaGD5hU6ui9MpsZbXTD67Dc1xe9x3lvpbzve7d+j/eV5JJ
SFuJjMybMtrAL7Wta9+skMnYP3fz0UNaOAAnSSUsGtHAA7pBrRMACTJ+KdJJSkkkklKSSSSUpJJJ
JSkkkklP/9n/7R7qUGhvdG9zaG9wIDMuMAA4QklNBCUAAAAAABAAAAAAAAAAAAAAAAAAAAAAOEJJ
TQQ6AAAAAACrAAAAEAAAAAEAAAAAAAtwcmludE91dHB1dAAAAAQAAAAAUHN0U2Jvb2wBAAAAAElu
dGVlbnVtAAAAAEludGUAAAAAQ2xybQAAAA9wcmludFNpeHRlZW5CaXRib29sAAAAAAtwcmludGVy
TmFtZVRFWFQAAAAbAFwAXABNAEEARABGAEwARQBYAFwARgBvAGwAbABvAHcALQBNAGUAIABDAG8A
bABvAHUAcgAAADhCSU0EOwAAAAABsgAAABAAAAABAAAAAAAScHJpbnRPdXRwdXRPcHRpb25zAAAA
EgAAAABDcHRuYm9vbAAAAAAAQ2xicmJvb2wAAAAAAFJnc01ib29sAAAAAABDcm5DYm9vbAAAAAAA
Q250Q2Jvb2wAAAAAAExibHNib29sAAAAAABOZ3R2Ym9vbAAAAAAARW1sRGJvb2wAAAAAAEludHJi
b29sAAAAAABCY2tnT2JqYwAAAAEAAAAAAABSR0JDAAAAAwAAAABSZCAgZG91YkBv4AAAAAAAAAAA
AEdybiBkb3ViQG/gAAAAAAAAAAAAQmwgIGRvdWJAb+AAAAAAAAAAAABCcmRUVW50RiNSbHQAAAAA
AAAAAAAAAABCbGQgVW50RiNSbHQAAAAAAAAAAAAAAABSc2x0VW50RiNQeGxAUgAAAAAAAAAAAAp2
ZWN0b3JEYXRhYm9vbAEAAAAAUGdQc2VudW0AAAAAUGdQcwAAAABQZ1BDAAAAAExlZnRVbnRGI1Js
dAAAAAAAAAAAAAAAAFRvcCBVbnRGI1JsdAAAAAAAAAAAAAAAAFNjbCBVbnRGI1ByY0BZAAAAAAAA
OEJJTQPtAAAAAAAQAEgAAAABAAIASAAAAAEAAjhCSU0EJgAAAAAADgAAAAAAAAAAAAA/gAAAOEJJ
TQQNAAAAAAAEAAAAeDhCSU0EGQAAAAAABAAAAB44QklNA/MAAAAAAAkAAAAAAAAAAAEAOEJJTScQ
AAAAAAAKAAEAAAAAAAAAAjhCSU0D9QAAAAAASAAvZmYAAQBsZmYABgAAAAAAAQAvZmYAAQChmZoA
BgAAAAAAAQAyAAAAAQBaAAAABgAAAAAAAQA1AAAAAQAtAAAABgAAAAAAAThCSU0D+AAAAAAAcAAA
/////////////////////////////wPoAAAAAP////////////////////////////8D6AAAAAD/
////////////////////////////A+gAAAAA/////////////////////////////wPoAAA4QklN
BAAAAAAAAAIAAjhCSU0EAgAAAAAABgAAAAAAADhCSU0EMAAAAAAAAwEBAQA4QklNBC0AAAAAAAYA
AQAAAAQ4QklNBAgAAAAAABAAAAABAAACQAAAAkAAAAAAOEJJTQQeAAAAAAAEAAAAADhCSU0EGgAA
AAADSQAAAAYAAAAAAAAAAAAAADAAAACWAAAACgBVAG4AdABpAHQAbABlAGQALQAyAAAAAQAAAAAA
AAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAACWAAAAMAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAA
AAAAAAAAAAAAABAAAAABAAAAAAAAbnVsbAAAAAIAAAAGYm91bmRzT2JqYwAAAAEAAAAAAABSY3Qx
AAAABAAAAABUb3AgbG9uZwAAAAAAAAAATGVmdGxvbmcAAAAAAAAAAEJ0b21sb25nAAAAMAAAAABS
Z2h0bG9uZwAAAJYAAAAGc2xpY2VzVmxMcwAAAAFPYmpjAAAAAQAAAAAABXNsaWNlAAAAEgAAAAdz
bGljZUlEbG9uZwAAAAAAAAAHZ3JvdXBJRGxvbmcAAAAAAAAABm9yaWdpbmVudW0AAAAMRVNsaWNl
T3JpZ2luAAAADWF1dG9HZW5lcmF0ZWQAAAAAVHlwZWVudW0AAAAKRVNsaWNlVHlwZQAAAABJbWcg
AAAABmJvdW5kc09iamMAAAABAAAAAAAAUmN0MQAAAAQAAAAAVG9wIGxvbmcAAAAAAAAAAExlZnRs
b25nAAAAAAAAAABCdG9tbG9uZwAAADAAAAAAUmdodGxvbmcAAACWAAAAA3VybFRFWFQAAAABAAAA
AAAAbnVsbFRFWFQAAAABAAAAAAAATXNnZVRFWFQAAAABAAAAAAAGYWx0VGFnVEVYVAAAAAEAAAAA
AA5jZWxsVGV4dElzSFRNTGJvb2wBAAAACGNlbGxUZXh0VEVYVAAAAAEAAAAAAAlob3J6QWxpZ25l
bnVtAAAAD0VTbGljZUhvcnpBbGlnbgAAAAdkZWZhdWx0AAAACXZlcnRBbGlnbmVudW0AAAAPRVNs
aWNlVmVydEFsaWduAAAAB2RlZmF1bHQAAAALYmdDb2xvclR5cGVlbnVtAAAAEUVTbGljZUJHQ29s
b3JUeXBlAAAAAE5vbmUAAAAJdG9wT3V0c2V0bG9uZwAAAAAAAAAKbGVmdE91dHNldGxvbmcAAAAA
AAAADGJvdHRvbU91dHNldGxvbmcAAAAAAAAAC3JpZ2h0T3V0c2V0bG9uZwAAAAAAOEJJTQQoAAAA
AAAMAAAAAj/wAAAAAAAAOEJJTQQUAAAAAAAEAAAABDhCSU0EDAAAAAAWhAAAAAEAAACWAAAAMAAA
AcQAAFTAAAAWaAAYAAH/2P/iDFhJQ0NfUFJPRklMRQABAQAADEhMaW5vAhAAAG1udHJSR0IgWFla
IAfOAAIACQAGADEAAGFjc3BNU0ZUAAAAAElFQyBzUkdCAAAAAAAAAAAAAAAAAAD21gABAAAAANMt
SFAgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEWNwcnQA
AAFQAAAAM2Rlc2MAAAGEAAAAbHd0cHQAAAHwAAAAFGJrcHQAAAIEAAAAFHJYWVoAAAIYAAAAFGdY
WVoAAAIsAAAAFGJYWVoAAAJAAAAAFGRtbmQAAAJUAAAAcGRtZGQAAALEAAAAiHZ1ZWQAAANMAAAA
hnZpZXcAAAPUAAAAJGx1bWkAAAP4AAAAFG1lYXMAAAQMAAAAJHRlY2gAAAQwAAAADHJUUkMAAAQ8
AAAIDGdUUkMAAAQ8AAAIDGJUUkMAAAQ8AAAIDHRleHQAAAAAQ29weXJpZ2h0IChjKSAxOTk4IEhl
d2xldHQtUGFja2FyZCBDb21wYW55AABkZXNjAAAAAAAAABJzUkdCIElFQzYxOTY2LTIuMQAAAAAA
AAAAAAAAEnNSR0IgSUVDNjE5NjYtMi4xAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAABYWVogAAAAAAAA81EAAQAAAAEWzFhZWiAAAAAAAAAAAAAAAAAAAAAA
WFlaIAAAAAAAAG+iAAA49QAAA5BYWVogAAAAAAAAYpkAALeFAAAY2lhZWiAAAAAAAAAkoAAAD4QA
ALbPZGVzYwAAAAAAAAAWSUVDIGh0dHA6Ly93d3cuaWVjLmNoAAAAAAAAAAAAAAAWSUVDIGh0dHA6
Ly93d3cuaWVjLmNoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AGRlc2MAAAAAAAAALklFQyA2MTk2Ni0yLjEgRGVmYXVsdCBSR0IgY29sb3VyIHNwYWNlIC0gc1JH
QgAAAAAAAAAAAAAALklFQyA2MTk2Ni0yLjEgRGVmYXVsdCBSR0IgY29sb3VyIHNwYWNlIC0gc1JH
QgAAAAAAAAAAAAAAAAAAAAAAAAAAAABkZXNjAAAAAAAAACxSZWZlcmVuY2UgVmlld2luZyBDb25k
aXRpb24gaW4gSUVDNjE5NjYtMi4xAAAAAAAAAAAAAAAsUmVmZXJlbmNlIFZpZXdpbmcgQ29uZGl0
aW9uIGluIElFQzYxOTY2LTIuMQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdmlldwAAAAAAE6T+
ABRfLgAQzxQAA+3MAAQTCwADXJ4AAAABWFlaIAAAAAAATAlWAFAAAABXH+dtZWFzAAAAAAAAAAEA
AAAAAAAAAAAAAAAAAAAAAAACjwAAAAJzaWcgAAAAAENSVCBjdXJ2AAAAAAAABAAAAAAFAAoADwAU
ABkAHgAjACgALQAyADcAOwBAAEUASgBPAFQAWQBeAGMAaABtAHIAdwB8AIEAhgCLAJAAlQCaAJ8A
pACpAK4AsgC3ALwAwQDGAMsA0ADVANsA4ADlAOsA8AD2APsBAQEHAQ0BEwEZAR8BJQErATIBOAE+
AUUBTAFSAVkBYAFnAW4BdQF8AYMBiwGSAZoBoQGpAbEBuQHBAckB0QHZAeEB6QHyAfoCAwIMAhQC
HQImAi8COAJBAksCVAJdAmcCcQJ6AoQCjgKYAqICrAK2AsECywLVAuAC6wL1AwADCwMWAyEDLQM4
A0MDTwNaA2YDcgN+A4oDlgOiA64DugPHA9MD4APsA/kEBgQTBCAELQQ7BEgEVQRjBHEEfgSMBJoE
qAS2BMQE0wThBPAE/gUNBRwFKwU6BUkFWAVnBXcFhgWWBaYFtQXFBdUF5QX2BgYGFgYnBjcGSAZZ
BmoGewaMBp0GrwbABtEG4wb1BwcHGQcrBz0HTwdhB3QHhgeZB6wHvwfSB+UH+AgLCB8IMghGCFoI
bgiCCJYIqgi+CNII5wj7CRAJJQk6CU8JZAl5CY8JpAm6Cc8J5Qn7ChEKJwo9ClQKagqBCpgKrgrF
CtwK8wsLCyILOQtRC2kLgAuYC7ALyAvhC/kMEgwqDEMMXAx1DI4MpwzADNkM8w0NDSYNQA1aDXQN
jg2pDcMN3g34DhMOLg5JDmQOfw6bDrYO0g7uDwkPJQ9BD14Peg+WD7MPzw/sEAkQJhBDEGEQfhCb
ELkQ1xD1ERMRMRFPEW0RjBGqEckR6BIHEiYSRRJkEoQSoxLDEuMTAxMjE0MTYxODE6QTxRPlFAYU
JxRJFGoUixStFM4U8BUSFTQVVhV4FZsVvRXgFgMWJhZJFmwWjxayFtYW+hcdF0EXZReJF64X0hf3
GBsYQBhlGIoYrxjVGPoZIBlFGWsZkRm3Gd0aBBoqGlEadxqeGsUa7BsUGzsbYxuKG7Ib2hwCHCoc
Uhx7HKMczBz1HR4dRx1wHZkdwx3sHhYeQB5qHpQevh7pHxMfPh9pH5Qfvx/qIBUgQSBsIJggxCDw
IRwhSCF1IaEhziH7IiciVSKCIq8i3SMKIzgjZiOUI8Ij8CQfJE0kfCSrJNolCSU4JWgllyXHJfcm
JyZXJocmtyboJxgnSSd6J6sn3CgNKD8ocSiiKNQpBik4KWspnSnQKgIqNSpoKpsqzysCKzYraSud
K9EsBSw5LG4soizXLQwtQS12Last4S4WLkwugi63Lu4vJC9aL5Evxy/+MDUwbDCkMNsxEjFKMYIx
ujHyMioyYzKbMtQzDTNGM38zuDPxNCs0ZTSeNNg1EzVNNYc1wjX9Njc2cjauNuk3JDdgN5w31zgU
OFA4jDjIOQU5Qjl/Obw5+To2OnQ6sjrvOy07azuqO+g8JzxlPKQ84z0iPWE9oT3gPiA+YD6gPuA/
IT9hP6I/4kAjQGRApkDnQSlBakGsQe5CMEJyQrVC90M6Q31DwEQDREdEikTORRJFVUWaRd5GIkZn
RqtG8Ec1R3tHwEgFSEtIkUjXSR1JY0mpSfBKN0p9SsRLDEtTS5pL4kwqTHJMuk0CTUpNk03cTiVO
bk63TwBPSU+TT91QJ1BxULtRBlFQUZtR5lIxUnxSx1MTU19TqlP2VEJUj1TbVShVdVXCVg9WXFap
VvdXRFeSV+BYL1h9WMtZGllpWbhaB1pWWqZa9VtFW5Vb5Vw1XIZc1l0nXXhdyV4aXmxevV8PX2Ff
s2AFYFdgqmD8YU9homH1YklinGLwY0Njl2PrZEBklGTpZT1lkmXnZj1mkmboZz1nk2fpaD9olmjs
aUNpmmnxakhqn2r3a09rp2v/bFdsr20IbWBtuW4SbmtuxG8eb3hv0XArcIZw4HE6cZVx8HJLcqZz
AXNdc7h0FHRwdMx1KHWFdeF2Pnabdvh3VnezeBF4bnjMeSp5iXnnekZ6pXsEe2N7wnwhfIF84X1B
faF+AX5ifsJ/I3+Ef+WAR4CogQqBa4HNgjCCkoL0g1eDuoQdhICE44VHhauGDoZyhteHO4efiASI
aYjOiTOJmYn+imSKyoswi5aL/IxjjMqNMY2Yjf+OZo7OjzaPnpAGkG6Q1pE/kaiSEZJ6kuOTTZO2
lCCUipT0lV+VyZY0lp+XCpd1l+CYTJi4mSSZkJn8mmia1ZtCm6+cHJyJnPedZJ3SnkCerp8dn4uf
+qBpoNihR6G2oiailqMGo3aj5qRWpMelOKWpphqmi6b9p26n4KhSqMSpN6mpqhyqj6sCq3Wr6axc
rNCtRK24ri2uoa8Wr4uwALB1sOqxYLHWskuywrM4s660JbSctRO1irYBtnm28Ldot+C4WbjRuUq5
wro7urW7LrunvCG8m70VvY++Cr6Evv+/er/1wHDA7MFnwePCX8Lbw1jD1MRRxM7FS8XIxkbGw8dB
x7/IPci8yTrJuco4yrfLNsu2zDXMtc01zbXONs62zzfPuNA50LrRPNG+0j/SwdNE08bUSdTL1U7V
0dZV1tjXXNfg2GTY6Nls2fHadtr724DcBdyK3RDdlt4c3qLfKd+v4DbgveFE4cziU+Lb42Pj6+Rz
5PzlhOYN5pbnH+ep6DLovOlG6dDqW+rl63Dr++yG7RHtnO4o7rTvQO/M8Fjw5fFy8f/yjPMZ86f0
NPTC9VD13vZt9vv3ivgZ+Kj5OPnH+lf65/t3/Af8mP0p/br+S/7c/23////tAAxBZG9iZV9DTQAB
/+4ADkFkb2JlAGSAAAAAAf/bAIQADAgICAkIDAkJDBELCgsRFQ8MDA8VGBMTFRMTGBEMDAwMDAwR
DAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAENCwsNDg0QDg4QFA4ODhQUDg4ODhQRDAwMDAwR
EQwMDAwMDBEMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwM/8AAEQgAMACWAwEiAAIRAQMRAf/d
AAQACv/EAT8AAAEFAQEBAQEBAAAAAAAAAAMAAQIEBQYHCAkKCwEAAQUBAQEBAQEAAAAAAAAAAQAC
AwQFBgcICQoLEAABBAEDAgQCBQcGCAUDDDMBAAIRAwQhEjEFQVFhEyJxgTIGFJGhsUIjJBVSwWIz
NHKC0UMHJZJT8OHxY3M1FqKygyZEk1RkRcKjdDYX0lXiZfKzhMPTdePzRieUpIW0lcTU5PSltcXV
5fVWZnaGlqa2xtbm9jdHV2d3h5ent8fX5/cRAAICAQIEBAMEBQYHBwYFNQEAAhEDITESBEFRYXEi
EwUygZEUobFCI8FS0fAzJGLhcoKSQ1MVY3M08SUGFqKygwcmNcLSRJNUoxdkRVU2dGXi8rOEw9N1
4/NGlKSFtJXE1OT0pbXF1eX1VmZ2hpamtsbW5vYnN0dXZ3eHl6e3x//aAAwDAQACEQMRAD8A77qH
Tur9RvcG5r+n4rNK20D9I8/nWWWT7G/uVtWf9XsvqmN1zL6Fn5BzG0sFtN7vpQdujv7L1br6tndT
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
SSSCVJJJJKf/0fVCAQQRM6FLa3TQaaBOkkpYgEQRI8E2xkEbRDjJ05KkkkpaB4JbWyDAkcH4p0kl
MXMY4EEcgtkaGD5hU6ui9MpsZbXTD67Dc1xe9x3lvpbzve7d+j/eV5JJSFuJjMybMtrAL7Wta9+s
kMnYP3fz0UNaOAAnSSUsGtHAA7pBrRMACTJ+KdJJSkkkklKSSSSUpJJJJSkkkklP/9k4QklNBCEA
AAAAAFkAAAABAQAAAA8AQQBkAG8AYgBlACAAUABoAG8AdABvAHMAaABvAHAAAAAVAEEAZABvAGIA
ZQAgAFAAaABvAHQAbwBzAGgAbwBwACAAQwBTADUALgAxAAAAAQA4QklNBAYAAAAAAAcACAAAAAEB
AP/hDl9odHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvADw/eHBhY2tldCBiZWdpbj0i77u/IiBp
ZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6
bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYxIDY0LjE0MDk0OSwgMjAx
MC8xMi8wNy0xMDo1NzowMSAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3
LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6
YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4
bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RFdnQ9Imh0dHA6
Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZUV2ZW50IyIgeG1sbnM6cGhvdG9z
aG9wPSJodHRwOi8vbnMuYWRvYmUuY29tL3Bob3Rvc2hvcC8xLjAvIiB4bWxuczpkYz0iaHR0cDov
L3B1cmwub3JnL2RjL2VsZW1lbnRzLzEuMS8iIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9z
aG9wIENTNS4xIFdpbmRvd3MiIHhtcDpDcmVhdGVEYXRlPSIyMDEyLTAxLTE3VDEzOjE4OjE4KzAx
OjAwIiB4bXA6TWV0YWRhdGFEYXRlPSIyMDEyLTAxLTE3VDEzOjE4OjE4KzAxOjAwIiB4bXA6TW9k
aWZ5RGF0ZT0iMjAxMi0wMS0xN1QxMzoxODoxOCswMTowMCIgeG1wTU06SW5zdGFuY2VJRD0ieG1w
LmlpZDowM0M5RDEwNzQ4NDBFMTExQTRBM0U4ODYxMDMxOEUyMSIgeG1wTU06RG9jdW1lbnRJRD0i
eG1wLmRpZDowMkM5RDEwNzQ4NDBFMTExQTRBM0U4ODYxMDMxOEUyMSIgeG1wTU06T3JpZ2luYWxE
b2N1bWVudElEPSJ4bXAuZGlkOjAyQzlEMTA3NDg0MEUxMTFBNEEzRTg4NjEwMzE4RTIxIiBwaG90
b3Nob3A6Q29sb3JNb2RlPSIzIiBwaG90b3Nob3A6SUNDUHJvZmlsZT0ic1JHQiBJRUM2MTk2Ni0y
LjEiIGRjOmZvcm1hdD0iaW1hZ2UvanBlZyI+IDx4bXBNTTpIaXN0b3J5PiA8cmRmOlNlcT4gPHJk
ZjpsaSBzdEV2dDphY3Rpb249ImNyZWF0ZWQiIHN0RXZ0Omluc3RhbmNlSUQ9InhtcC5paWQ6MDJD
OUQxMDc0ODQwRTExMUE0QTNFODg2MTAzMThFMjEiIHN0RXZ0OndoZW49IjIwMTItMDEtMTdUMTM6
MTg6MTgrMDE6MDAiIHN0RXZ0OnNvZnR3YXJlQWdlbnQ9IkFkb2JlIFBob3Rvc2hvcCBDUzUuMSBX
aW5kb3dzIi8+IDxyZGY6bGkgc3RFdnQ6YWN0aW9uPSJzYXZlZCIgc3RFdnQ6aW5zdGFuY2VJRD0i
eG1wLmlpZDowM0M5RDEwNzQ4NDBFMTExQTRBM0U4ODYxMDMxOEUyMSIgc3RFdnQ6d2hlbj0iMjAx
Mi0wMS0xN1QxMzoxODoxOCswMTowMCIgc3RFdnQ6c29mdHdhcmVBZ2VudD0iQWRvYmUgUGhvdG9z
aG9wIENTNS4xIFdpbmRvd3MiIHN0RXZ0OmNoYW5nZWQ9Ii8iLz4gPC9yZGY6U2VxPiA8L3htcE1N
Okhpc3Rvcnk+IDxwaG90b3Nob3A6RG9jdW1lbnRBbmNlc3RvcnM+IDxyZGY6QmFnPiA8cmRmOmxp
PnV1aWQ6MTg2RjYyNkQ4N0VEREIxMUE1RUZFREUxRjM0Mzg1OUM8L3JkZjpsaT4gPC9yZGY6QmFn
PiA8L3Bob3Rvc2hvcDpEb2N1bWVudEFuY2VzdG9ycz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRm
OlJERj4gPC94OnhtcG1ldGE+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgPD94cGFja2V0IGVuZD0idyI/Pv/iDFhJQ0NfUFJPRklMRQABAQAADEhM
aW5vAhAAAG1udHJSR0IgWFlaIAfOAAIACQAGADEAAGFjc3BNU0ZUAAAAAElFQyBzUkdCAAAAAAAA
AAAAAAABAAD21gABAAAAANMtSFAgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAEWNwcnQAAAFQAAAAM2Rlc2MAAAGEAAAAbHd0cHQAAAHwAAAAFGJrcHQAAAIE
AAAAFHJYWVoAAAIYAAAAFGdYWVoAAAIsAAAAFGJYWVoAAAJAAAAAFGRtbmQAAAJUAAAAcGRtZGQA
AALEAAAAiHZ1ZWQAAANMAAAAhnZpZXcAAAPUAAAAJGx1bWkAAAP4AAAAFG1lYXMAAAQMAAAAJHRl
Y2gAAAQwAAAADHJUUkMAAAQ8AAAIDGdUUkMAAAQ8AAAIDGJUUkMAAAQ8AAAIDHRleHQAAAAAQ29w
eXJpZ2h0IChjKSAxOTk4IEhld2xldHQtUGFja2FyZCBDb21wYW55AABkZXNjAAAAAAAAABJzUkdC
IElFQzYxOTY2LTIuMQAAAAAAAAAAAAAAEnNSR0IgSUVDNjE5NjYtMi4xAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABYWVogAAAAAAAA81EAAQAAAAEWzFhZ
WiAAAAAAAAAAAAAAAAAAAAAAWFlaIAAAAAAAAG+iAAA49QAAA5BYWVogAAAAAAAAYpkAALeFAAAY
2lhZWiAAAAAAAAAkoAAAD4QAALbPZGVzYwAAAAAAAAAWSUVDIGh0dHA6Ly93d3cuaWVjLmNoAAAA
AAAAAAAAAAAWSUVDIGh0dHA6Ly93d3cuaWVjLmNoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAGRlc2MAAAAAAAAALklFQyA2MTk2Ni0yLjEgRGVmYXVsdCBSR0Ig
Y29sb3VyIHNwYWNlIC0gc1JHQgAAAAAAAAAAAAAALklFQyA2MTk2Ni0yLjEgRGVmYXVsdCBSR0Ig
Y29sb3VyIHNwYWNlIC0gc1JHQgAAAAAAAAAAAAAAAAAAAAAAAAAAAABkZXNjAAAAAAAAACxSZWZl
cmVuY2UgVmlld2luZyBDb25kaXRpb24gaW4gSUVDNjE5NjYtMi4xAAAAAAAAAAAAAAAsUmVmZXJl
bmNlIFZpZXdpbmcgQ29uZGl0aW9uIGluIElFQzYxOTY2LTIuMQAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAdmlldwAAAAAAE6T+ABRfLgAQzxQAA+3MAAQTCwADXJ4AAAABWFlaIAAAAAAATAlWAFAA
AABXH+dtZWFzAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAACjwAAAAJzaWcgAAAAAENSVCBjdXJ2
AAAAAAAABAAAAAAFAAoADwAUABkAHgAjACgALQAyADcAOwBAAEUASgBPAFQAWQBeAGMAaABtAHIA
dwB8AIEAhgCLAJAAlQCaAJ8ApACpAK4AsgC3ALwAwQDGAMsA0ADVANsA4ADlAOsA8AD2APsBAQEH
AQ0BEwEZAR8BJQErATIBOAE+AUUBTAFSAVkBYAFnAW4BdQF8AYMBiwGSAZoBoQGpAbEBuQHBAckB
0QHZAeEB6QHyAfoCAwIMAhQCHQImAi8COAJBAksCVAJdAmcCcQJ6AoQCjgKYAqICrAK2AsECywLV
AuAC6wL1AwADCwMWAyEDLQM4A0MDTwNaA2YDcgN+A4oDlgOiA64DugPHA9MD4APsA/kEBgQTBCAE
LQQ7BEgEVQRjBHEEfgSMBJoEqAS2BMQE0wThBPAE/gUNBRwFKwU6BUkFWAVnBXcFhgWWBaYFtQXF
BdUF5QX2BgYGFgYnBjcGSAZZBmoGewaMBp0GrwbABtEG4wb1BwcHGQcrBz0HTwdhB3QHhgeZB6wH
vwfSB+UH+AgLCB8IMghGCFoIbgiCCJYIqgi+CNII5wj7CRAJJQk6CU8JZAl5CY8JpAm6Cc8J5Qn7
ChEKJwo9ClQKagqBCpgKrgrFCtwK8wsLCyILOQtRC2kLgAuYC7ALyAvhC/kMEgwqDEMMXAx1DI4M
pwzADNkM8w0NDSYNQA1aDXQNjg2pDcMN3g34DhMOLg5JDmQOfw6bDrYO0g7uDwkPJQ9BD14Peg+W
D7MPzw/sEAkQJhBDEGEQfhCbELkQ1xD1ERMRMRFPEW0RjBGqEckR6BIHEiYSRRJkEoQSoxLDEuMT
AxMjE0MTYxODE6QTxRPlFAYUJxRJFGoUixStFM4U8BUSFTQVVhV4FZsVvRXgFgMWJhZJFmwWjxay
FtYW+hcdF0EXZReJF64X0hf3GBsYQBhlGIoYrxjVGPoZIBlFGWsZkRm3Gd0aBBoqGlEadxqeGsUa
7BsUGzsbYxuKG7Ib2hwCHCocUhx7HKMczBz1HR4dRx1wHZkdwx3sHhYeQB5qHpQevh7pHxMfPh9p
H5Qfvx/qIBUgQSBsIJggxCDwIRwhSCF1IaEhziH7IiciVSKCIq8i3SMKIzgjZiOUI8Ij8CQfJE0k
fCSrJNolCSU4JWgllyXHJfcmJyZXJocmtyboJxgnSSd6J6sn3CgNKD8ocSiiKNQpBik4KWspnSnQ
KgIqNSpoKpsqzysCKzYraSudK9EsBSw5LG4soizXLQwtQS12Last4S4WLkwugi63Lu4vJC9aL5Ev
xy/+MDUwbDCkMNsxEjFKMYIxujHyMioyYzKbMtQzDTNGM38zuDPxNCs0ZTSeNNg1EzVNNYc1wjX9
Njc2cjauNuk3JDdgN5w31zgUOFA4jDjIOQU5Qjl/Obw5+To2OnQ6sjrvOy07azuqO+g8JzxlPKQ8
4z0iPWE9oT3gPiA+YD6gPuA/IT9hP6I/4kAjQGRApkDnQSlBakGsQe5CMEJyQrVC90M6Q31DwEQD
REdEikTORRJFVUWaRd5GIkZnRqtG8Ec1R3tHwEgFSEtIkUjXSR1JY0mpSfBKN0p9SsRLDEtTS5pL
4kwqTHJMuk0CTUpNk03cTiVObk63TwBPSU+TT91QJ1BxULtRBlFQUZtR5lIxUnxSx1MTU19TqlP2
VEJUj1TbVShVdVXCVg9WXFapVvdXRFeSV+BYL1h9WMtZGllpWbhaB1pWWqZa9VtFW5Vb5Vw1XIZc
1l0nXXhdyV4aXmxevV8PX2Ffs2AFYFdgqmD8YU9homH1YklinGLwY0Njl2PrZEBklGTpZT1lkmXn
Zj1mkmboZz1nk2fpaD9olmjsaUNpmmnxakhqn2r3a09rp2v/bFdsr20IbWBtuW4SbmtuxG8eb3hv
0XArcIZw4HE6cZVx8HJLcqZzAXNdc7h0FHRwdMx1KHWFdeF2Pnabdvh3VnezeBF4bnjMeSp5iXnn
ekZ6pXsEe2N7wnwhfIF84X1BfaF+AX5ifsJ/I3+Ef+WAR4CogQqBa4HNgjCCkoL0g1eDuoQdhICE
44VHhauGDoZyhteHO4efiASIaYjOiTOJmYn+imSKyoswi5aL/IxjjMqNMY2Yjf+OZo7OjzaPnpAG
kG6Q1pE/kaiSEZJ6kuOTTZO2lCCUipT0lV+VyZY0lp+XCpd1l+CYTJi4mSSZkJn8mmia1ZtCm6+c
HJyJnPedZJ3SnkCerp8dn4uf+qBpoNihR6G2oiailqMGo3aj5qRWpMelOKWpphqmi6b9p26n4KhS
qMSpN6mpqhyqj6sCq3Wr6axcrNCtRK24ri2uoa8Wr4uwALB1sOqxYLHWskuywrM4s660JbSctRO1
irYBtnm28Ldot+C4WbjRuUq5wro7urW7LrunvCG8m70VvY++Cr6Evv+/er/1wHDA7MFnwePCX8Lb
w1jD1MRRxM7FS8XIxkbGw8dBx7/IPci8yTrJuco4yrfLNsu2zDXMtc01zbXONs62zzfPuNA50LrR
PNG+0j/SwdNE08bUSdTL1U7V0dZV1tjXXNfg2GTY6Nls2fHadtr724DcBdyK3RDdlt4c3qLfKd+v
4DbgveFE4cziU+Lb42Pj6+Rz5PzlhOYN5pbnH+ep6DLovOlG6dDqW+rl63Dr++yG7RHtnO4o7rTv
QO/M8Fjw5fFy8f/yjPMZ86f0NPTC9VD13vZt9vv3ivgZ+Kj5OPnH+lf65/t3/Af8mP0p/br+S/7c
/23////uAA5BZG9iZQBkQAAAAAH/2wCEAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEB
AQEBAQEBAQEBAQECAgICAgICAgICAgMDAwMDAwMDAwMBAQEBAQEBAQEBAQICAQICAwMDAwMDAwMD
AwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDA//AABEIADAAlgMBEQACEQED
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
i3Bn4q+s3DX7N2riOo919jbx2LkdrbS7H3HWbd7M29msHSY2Crz0+LSqjq5HkxME1M0MvuvFQK9X
Oe/dN9e9+691737r3Xvfuvde9+691737r3Xvfuvdf//T38ZqWmqY54ainhniqoXpqmOWJJEqKeRW
R4JlZSJYXRyCrXBBP9ffuvdcPsqPXTv9pTa6OGSnpG8EWqlgmESywU503hikWBAyrYEIL/Qe/de6
5TUlLUQimnpoJqcNE4glhjkhDwSJNA4jZSgaGWNWU2urAEcj37r3UNsJhnhrKd8TjXgyNUtdXwtR
Uxira1JIpkq6tDHpqKlJoEYO4LBkBvcD37r3U/wQGxMMXpN1/bT0nWslxxwdahv9cA+/de6wtQUL
zU9S9HSvUUhqDSztTxGWmNWuiqMEhTXEalOJNJGsfW/v3Xuo1bhcVkIamGpo4v8AKsZV4eWenMlF
WrjK8AVVJT19G9PXUkcpUNeKRGV1DKQwBHuvdFv2n8LfjTsncG391be65li3FtjsHJ9q4jLZTe/Y
m4qtOwMtsxevqncte24925Zc1VwbQU0dJHWiogoQ7yU0cUzvI3ut6jw6F7GdS9d4bsvdfcOO2xSQ
dk73we2Nt7n3S1TkairyOE2aMyNt0KUlTWTYzHLjl3BWAvSwQyTiYiVpAqafdeqaU8ul5BRUdKoW
mpKanUSTTBYYIogJamWSaokARVs880rM5+rMxJ5Pv3WuvQ0NFTqyQUlNCjzPUOsUEUatPLNJUyTM
FUAyvUSu5b6l2J+pPv3XuuNPj6CkeeSloqSmkqqmStqXgp4onnq5lCS1UzIimSolUWZzdiPqffuv
dTPfuvde9+691737r3Xvfuvde9+691737r3Xvfuvdf/U3+Pfuvde9+691737r3Xvfuvde9+69173
7r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuv
df/Z
--=_related 004B6210C1257A7C_=--

--===============0651070039==
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: inline

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

--===============0651070039==--

From libssh2-devel-bounces@cool.haxx.se  Mon Sep 17 15:48:36 2012
Return-Path: <libssh2-devel-bounces@cool.haxx.se>
Received: from www.haxx.se (localhost.localdomain [127.0.0.1])
	by giant.haxx.se (8.14.4/8.14.4/Debian-2) with ESMTP id q8HDmXHR022630;
	Mon, 17 Sep 2012 15:48:36 +0200
Received: from am1outboundpool.messaging.microsoft.com
 (am1ehsobe005.messaging.microsoft.com [213.199.154.208])
 by giant.haxx.se (8.14.4/8.14.4/Debian-2) with ESMTP id q8HDmVCZ022466
 (version=TLSv1/SSLv3 cipher=AES128-SHA bits=128 verify=NOT)
 for <libssh2-devel@cool.haxx.se>; Mon, 17 Sep 2012 15:48:32 +0200
Received: from mail101-am1-R.bigfish.com (10.3.201.248) by
 AM1EHSOBE003.bigfish.com (10.3.204.23) with Microsoft SMTP Server id
 14.1.225.23; Mon, 17 Sep 2012 13:48:26 +0000
Received: from mail101-am1 (localhost [127.0.0.1])	by
 mail101-am1-R.bigfish.com (Postfix) with ESMTP id B4E5AC00A9	for
 <libssh2-devel@cool.haxx.se>; Mon, 17 Sep 2012 13:48:26 +0000 (UTC)
X-Forefront-Antispam-Report: CIP:157.56.249.149; KIP:(null); UIP:(null);
 IPV:NLI; H:AM2PRD0311HT005.eurprd03.prod.outlook.com; RD:none; EFVD:NLI
X-SpamScore: -9
X-BigFish: PS-9(zz98dI1804I103dKfecI1443I1432I1a09Jd6f1izz1202h1d1ah1d2ahzz17326ah8275bhz31h2a8h668h839h944hd25hf0ah107ah1220h1288h12a5h12a9h12bdh1155h)
Received-SPF: softfail (mail101-am1: transitioning domain of certivox.com does
 not designate 157.56.249.149 as permitted sender) client-ip=157.56.249.149;
 envelope-from=nick.pateman@certivox.com;
 helo=AM2PRD0311HT005.eurprd03.prod.outlook.com ; .outlook.com ; 
Received: from mail101-am1 (localhost.localdomain [127.0.0.1]) by mail101-am1
 (MessageSwitch) id 1347889704668485_11614;
 Mon, 17 Sep 2012 13:48:24 +0000 (UTC)
Received: from AM1EHSMHS016.bigfish.com (unknown [10.3.201.253])	by
 mail101-am1.bigfish.com (Postfix) with ESMTP id 97D8B3E0048	for
 <libssh2-devel@cool.haxx.se>; Mon, 17 Sep 2012 13:48:24 +0000 (UTC)
Received: from AM2PRD0311HT005.eurprd03.prod.outlook.com (157.56.249.149) by
 AM1EHSMHS016.bigfish.com (10.3.207.154) with Microsoft SMTP Server (TLS) id
 14.1.225.23; Mon, 17 Sep 2012 13:48:22 +0000
Received: from AM2PRD0311MB423.eurprd03.prod.outlook.com ([169.254.10.207]) by
 AM2PRD0311HT005.eurprd03.prod.outlook.com ([10.255.162.40]) with
 mapi id 14.16.0190.008; Mon, 17 Sep 2012 13:48:21 +0000
From: Nick Pateman <nick.pateman@certivox.com>
To: "libssh2-devel@cool.haxx.se" <libssh2-devel@cool.haxx.se>
Subject: Re: Compiling libssh2 under x64 with Visual Studio 2010
Thread-Topic: Compiling libssh2 under x64 with Visual Studio 2010
Thread-Index: Ac2U2xlIvwhMHSZXQ6yxlkk2NXI82g==
Date: Mon, 17 Sep 2012 13:48:21 +0000
Message-ID: <F3E9C1826A037A4A84F4D58424D54D7B1266C390@AM2PRD0311MB423.eurprd03.prod.outlook.com>
Accept-Language: en-GB, en-US
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
x-originating-ip: [93.97.161.124]
MIME-Version: 1.0
X-OriginatorOrg: certivox.com
X-MIME-Autoconverted: from quoted-printable to 8bit by giant.haxx.se id
 q8HDmVCZ022466
X-BeenThere: libssh2-devel@cool.haxx.se
X-Mailman-Version: 2.1.15
Precedence: list
Reply-To: libssh2 development <libssh2-devel@cool.haxx.se>
List-Id: libssh2 development <libssh2-devel.cool.haxx.se>
List-Unsubscribe: <http://cool.haxx.se/cgi-bin/mailman/options/libssh2-devel>, 
 <mailto:libssh2-devel-request@cool.haxx.se?subject=unsubscribe>
List-Archive: <http://cool.haxx.se/pipermail/libssh2-devel/>
List-Post: <mailto:libssh2-devel@cool.haxx.se>
List-Help: <mailto:libssh2-devel-request@cool.haxx.se?subject=help>
List-Subscribe: <http://cool.haxx.se/cgi-bin/mailman/listinfo/libssh2-devel>, 
 <mailto:libssh2-devel-request@cool.haxx.se?subject=subscribe>
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Errors-To: libssh2-devel-bounces@cool.haxx.se
Sender: "libssh2-devel" <libssh2-devel-bounces@cool.haxx.se>

Hi there,

They aren't CURL errors, they are libssh2 errors, I just have the source in a folder named libCurl_X64 or whatever lol.

Thankfully I've managed to get around needing libSSH2, the article I was reading was misleading so I'm all sorted now.  Sorry for any confusion caused with the path names!

Thanks for your help.

Nick.

------------------------------

Message: 3
Date: Mon, 17 Sep 2012 10:54:59 +0100
From: Alexander Lamaison <swish@lammy.co.uk>
To: libssh2 development <libssh2-devel@cool.haxx.se>
Subject: Re: Compiling libssh2 under x64 with Visual Studio 2010
Message-ID:
	<CADyPeTPRnc59Th6GnyM_egq2W-qnEudCTqPrT=ZoyQYL1jH4oQ@mail.gmail.com>
Content-Type: text/plain; charset=windows-1252

On 17 September 2012 10:32, Nick Pateman <nick.pateman@certivox.com> wrote:
> Hi there,
> I?m trying to compile libssh2 under x64 on Visual Studio 2010 but am 
> not having much luck at the moment.
>
> I added the curl include path to the configuration which eliminates 
> the missing curl.h references.  Then unfortunately I get 2229 errors.

Are you sure you're trying to compile libssh2? Or are you maybe trying to compile libcurl?  libssh2 doesn't depend on curl.h so there won't be any references to it to eliminate.

> Many thanks in advance for any help.  I?ve put an excerpt of some of 
> the errors below?
>
> Error      201         error C2081: 'key_exchange_state_t' : name in formal
> parameter list illegal
> c:\pop\libcurl_x64\libssh2-1.4.2\libssh2-1.4.2\src\libssh2_priv.h      1010
> 1              libssh2

I've no idea why it would object to key_exchange_state_t as it's defined in the same file.  Something in your build is very broken.
Have you got the correct libssh2_config.h in you include path?  The one from the win32 directory?

Alex

--
Swish - Easy SFTP for Windows Explorer (http://www.swish-sftp.org)





------------------------------

Message: 2
Date: Mon, 17 Sep 2012 12:18:55 +0200
From: Peter Stuge <peter@stuge.se>
To: libssh2-devel@cool.haxx.se
Subject: Re: Compiling libssh2 under x64 with Visual Studio 2010
Message-ID: <20120917101855.18560.qmail@stuge.se>
Content-Type: text/plain; charset=us-ascii

Nick Pateman wrote:
> It says I need to compile OpenSSL, zLib and libSSH2.
> I've got the other 2 compiling just fine but this one I'm stuck on.

And you're using separate projects for each package?


//Peter


------------------------------

Message: 3
Date: Mon, 17 Sep 2012 11:24:10 +0100
From: Alexander Lamaison <swish@lammy.co.uk>
To: libssh2 development <libssh2-devel@cool.haxx.se>
Subject: Re: Compiling libssh2 under x64 with Visual Studio 2010
Message-ID:
	<CADyPeTOd9xs9w=aO5m+9Yduaa9N=Uj5FzZe0uCvT5Si2M0mbHQ@mail.gmail.com>
Content-Type: text/plain; charset=ISO-8859-1

On 17 September 2012 11:15, Nick Pateman <nick.pateman@certivox.com> wrote:
>
> What I'm trying to do is compile libCurl for x64 via the following instructions...
>
> http://curl.haxx.se/mail/lib-2010-06/0232.html
>
> It says I need to compile OpenSSL, zLib and libSSH2.  I've got the other 2 compiling just fine but this one I'm stuck on.

Ok, that's fine but why are you getting curl.h errors when compiling libssh2?  Curl uses libssh2, not the other way round.

> I basically just opened with VC6 project that was in the source folder and updated it to VS2010 format via the wizard.

My advice is to ignore the included VC projects and make your own because it's really easy on Windows.  Here's the guide I've sent around this list a few times now:

Using Visual Studio:
- Shove all the .c files in libssh2/src into an empty Win32 C++ (DLL or Static Library) project except libgcrypt.c/openssl.c of which you only pick the one appropriate to your crypto library.
- Add your OpenSSL or libgcrypt include directory to the project include path
- Add libssh2/include to the project include path
- Add libssh2/win32 to the project include path
- Add the appropriate crypto libraries to the project Additonal Libraries list
- Build
- Job done

Using MinGW:
I'm not confident enough to list the exact steps for this but its basically a matter of adding the same .c files to a Makefile source list and instructing gcc to make a DLL or static library from them.
Use Google to find the flags you need to add for those two alternatives.

Alternatively, Guenter advised:

there's a NMakefile available too which should work with all MSVC versions; edit .\win32\config.mk and setup the paths to OpenSSL and Zlib, then in the root: nmake

Or use the included mingw makefile:

set OPENSSL_PATH=...
if you want Zlib support:
set WITH_ZLIB=1
set ZLIB_PATH=...
in ./win32 folder: mingw32-make

HTH

Alex

--
Swish - Easy SFTP for Windows Explorer (http://www.swish-sftp.org)


------------------------------

Message: 4
Date: Mon, 17 Sep 2012 13:18:01 +0200
From: Peter Stuge <peter@stuge.se>
To: libssh2-devel@cool.haxx.se
Subject: Re: Compiling libssh2 under x64 with Visual Studio 2010
Message-ID: <20120917111801.23340.qmail@stuge.se>
Content-Type: text/plain; charset=us-ascii

Alexander Lamaison wrote:
> Here's the guide I've sent around this list a few times now:

Thanks! Maybe put it on the wiki, or commit to a text file?


//Peter


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

From libssh2-devel-bounces@cool.haxx.se  Mon Sep 17 15:59:57 2012
Return-Path: <libssh2-devel-bounces@cool.haxx.se>
Received: from www.haxx.se (localhost.localdomain [127.0.0.1])
	by giant.haxx.se (8.14.4/8.14.4/Debian-2) with ESMTP id q8HDxpm8003285;
	Mon, 17 Sep 2012 15:59:56 +0200
Received: from foo.stuge.se (qmailr@foo.stuge.se [212.116.89.98])
 by giant.haxx.se (8.14.4/8.14.4/Debian-2) with SMTP id q8HDxo2d003251
 for <libssh2-devel@cool.haxx.se>; Mon, 17 Sep 2012 15:59:50 +0200
Received: (qmail 4352 invoked by uid 501); 17 Sep 2012 13:59:51 -0000
Message-ID: <20120917135951.4351.qmail@stuge.se>
Date: Mon, 17 Sep 2012 15:59:51 +0200
From: Peter Stuge <peter@stuge.se>
To: libssh2-devel@cool.haxx.se
Subject: Re: Cannot build libssh2
Mail-Followup-To: libssh2-devel@cool.haxx.se
References: <OFFFF0C717.16303DDC-ONC1257A78.005FF116-C1257A78.0060ACA3@amadeus.com>
 <alpine.DEB.2.00.1209162354060.2839@tvnag.unkk.fr>
 <OF0CEA6C25.635CE0B9-ON00257A7C.00284B9C-C1257A7C.0029FB08@amadeus.com>
 <20120917085922.11594.qmail@stuge.se>
 <OF566255B9.31DABCC1-ON00257A7C.004A1D94-C1257A7C.004B6215@amadeus.com>
MIME-Version: 1.0
Content-Disposition: inline
In-Reply-To: <OF566255B9.31DABCC1-ON00257A7C.004A1D94-C1257A7C.004B6215@amadeus.com>
X-BeenThere: libssh2-devel@cool.haxx.se
X-Mailman-Version: 2.1.15
Precedence: list
Reply-To: libssh2 development <libssh2-devel@cool.haxx.se>
List-Id: libssh2 development <libssh2-devel.cool.haxx.se>
List-Unsubscribe: <http://cool.haxx.se/cgi-bin/mailman/options/libssh2-devel>, 
 <mailto:libssh2-devel-request@cool.haxx.se?subject=unsubscribe>
List-Archive: <http://cool.haxx.se/pipermail/libssh2-devel/>
List-Post: <mailto:libssh2-devel@cool.haxx.se>
List-Help: <mailto:libssh2-devel-request@cool.haxx.se?subject=help>
List-Subscribe: <http://cool.haxx.se/cgi-bin/mailman/listinfo/libssh2-devel>, 
 <mailto:libssh2-devel-request@cool.haxx.se?subject=subscribe>
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Errors-To: libssh2-devel-bounces@cool.haxx.se
Sender: "libssh2-devel" <libssh2-devel-bounces@cool.haxx.se>

Hiran Chaudhuri wrote:
> >It is ridiculous and embarrassing for your employer that you send
> >claims of confidentiality to a public mailing list.
> 
> To some degree my personal view and that of my employer may differ, 
> however that is not the intended topic here.

That topic blocks your participation in this project.


> >If you want to participate in open source projects then you
> >need to discuss this stupidity with your management and their
> >management all the way to the top of the food chain and the CIO
> >at Amadeus.
> >
> >What little I know about Amadeus tells me that it will be completely
> >impossible for you to accomplish anything whatsoever with regard to
> >openness there, so you are basically out of luck, and you can not get
> >the help from me in this matter that I would have offered you.
> 
> I'm afraid I cannot follow here. There is a technical issue and I
> am just asking for an answer in this forum.
> So what exactly do you mean I could do to get libssh2 compiled?
..
> IMPORTANT  -  CONFIDENTIALITY  NOTICE  - This e-mail is intended only for 
> the use of the individual or entity shown above as addressees. It may 
> contain information which is privileged, confidential or otherwise 
> protected from disclosure under applicable laws.

Start by sorting out the "confidentialiy notice".


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

From libssh2-devel-bounces@cool.haxx.se  Mon Sep 17 16:02:05 2012
Return-Path: <libssh2-devel-bounces@cool.haxx.se>
Received: from www.haxx.se (localhost.localdomain [127.0.0.1])
	by giant.haxx.se (8.14.4/8.14.4/Debian-2) with ESMTP id q8HE24hR006354;
	Mon, 17 Sep 2012 16:02:05 +0200
Received: from foo.stuge.se (qmailr@foo.stuge.se [212.116.89.98])
 by giant.haxx.se (8.14.4/8.14.4/Debian-2) with SMTP id q8HE23jD006329
 for <libssh2-devel@cool.haxx.se>; Mon, 17 Sep 2012 16:02:03 +0200
Received: (qmail 4605 invoked by uid 501); 17 Sep 2012 14:02:03 -0000
Message-ID: <20120917140203.4604.qmail@stuge.se>
Date: Mon, 17 Sep 2012 16:02:03 +0200
From: Peter Stuge <peter@stuge.se>
To: libssh2-devel@cool.haxx.se
Subject: Re: Compiling libssh2 under x64 with Visual Studio 2010
Mail-Followup-To: libssh2-devel@cool.haxx.se
References: <F3E9C1826A037A4A84F4D58424D54D7B1266C390@AM2PRD0311MB423.eurprd03.prod.outlook.com>
MIME-Version: 1.0
Content-Disposition: inline
In-Reply-To: <F3E9C1826A037A4A84F4D58424D54D7B1266C390@AM2PRD0311MB423.eurprd03.prod.outlook.com>
X-BeenThere: libssh2-devel@cool.haxx.se
X-Mailman-Version: 2.1.15
Precedence: list
Reply-To: libssh2 development <libssh2-devel@cool.haxx.se>
List-Id: libssh2 development <libssh2-devel.cool.haxx.se>
List-Unsubscribe: <http://cool.haxx.se/cgi-bin/mailman/options/libssh2-devel>, 
 <mailto:libssh2-devel-request@cool.haxx.se?subject=unsubscribe>
List-Archive: <http://cool.haxx.se/pipermail/libssh2-devel/>
List-Post: <mailto:libssh2-devel@cool.haxx.se>
List-Help: <mailto:libssh2-devel-request@cool.haxx.se?subject=help>
List-Subscribe: <http://cool.haxx.se/cgi-bin/mailman/listinfo/libssh2-devel>, 
 <mailto:libssh2-devel-request@cool.haxx.se?subject=subscribe>
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Errors-To: libssh2-devel-bounces@cool.haxx.se
Sender: "libssh2-devel" <libssh2-devel-bounces@cool.haxx.se>

Nick Pateman wrote:
> They aren't CURL errors, they are libssh2 errors, I just have the
> source in a folder named libCurl_X64 or whatever lol.

You must obviously use separate projects for building separate
software, and it usually helps to use separate directories.

You are clearly not on top of your build environment, there's nothing
we can do to help with that.


> Thankfully I've managed to get around needing libSSH2, the article
> I was reading was misleading so I'm all sorted now.

libcurl will work without libssh2, but with limited functionality.
You need to know what suits your needs, and you need to build each
software accordingly..


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

From libssh2-devel-bounces@cool.haxx.se  Tue Sep 18 13:18:45 2012
Return-Path: <libssh2-devel-bounces@cool.haxx.se>
Received: from www.haxx.se (localhost.localdomain [127.0.0.1])
	by giant.haxx.se (8.14.4/8.14.4/Debian-2) with ESMTP id q8IBIDwg017266;
	Tue, 18 Sep 2012 13:18:36 +0200
Received: from tx2outboundpool.messaging.microsoft.com
 (tx2ehsobe005.messaging.microsoft.com [65.55.88.15])
 by giant.haxx.se (8.14.4/8.14.4/Debian-2) with ESMTP id q8IBIA8Y017239
 (version=TLSv1/SSLv3 cipher=AES128-SHA bits=128 verify=NOT)
 for <libssh2-devel@cool.haxx.se>; Tue, 18 Sep 2012 13:18:11 +0200
Received: from mail235-tx2-R.bigfish.com (10.9.14.252) by
 TX2EHSOBE003.bigfish.com (10.9.40.23) with Microsoft SMTP Server id
 14.1.225.23; Tue, 18 Sep 2012 11:18:05 +0000
Received: from mail235-tx2 (localhost [127.0.0.1])	by
 mail235-tx2-R.bigfish.com (Postfix) with ESMTP id 4AC3A6002A1	for
 <libssh2-devel@cool.haxx.se>; Tue, 18 Sep 2012 11:18:05 +0000 (UTC)
X-Forefront-Antispam-Report: CIP:157.56.249.149; KIP:(null); UIP:(null);
 IPV:NLI; H:AM2PRD0311HT005.eurprd03.prod.outlook.com; RD:none; EFVD:NLI
X-SpamScore: -11
X-BigFish: PS-11(zz98dI1503M1804I444fMd6f1izz1202h1d1ah1d2ahzzz31h2a8h668h839h944hd25hf0ah107ah1220h1288h12a5h12a9h12bdh1155h)
Received-SPF: softfail (mail235-tx2: transitioning domain of certivox.com does
 not designate 157.56.249.149 as permitted sender) client-ip=157.56.249.149;
 envelope-from=nick.pateman@certivox.com;
 helo=AM2PRD0311HT005.eurprd03.prod.outlook.com ; .outlook.com ; 
Received: from mail235-tx2 (localhost.localdomain [127.0.0.1]) by mail235-tx2
 (MessageSwitch) id 1347967047956312_14233;
 Tue, 18 Sep 2012 11:17:27 +0000 (UTC)
Received: from TX2EHSMHS026.bigfish.com (unknown [10.9.14.253])	by
 mail235-tx2.bigfish.com (Postfix) with ESMTP id E70164E005E	for
 <libssh2-devel@cool.haxx.se>; Tue, 18 Sep 2012 11:17:27 +0000 (UTC)
Received: from AM2PRD0311HT005.eurprd03.prod.outlook.com (157.56.249.149) by
 TX2EHSMHS026.bigfish.com (10.9.99.126) with Microsoft SMTP Server (TLS) id
 14.1.225.23; Tue, 18 Sep 2012 11:17:26 +0000
Received: from AM2PRD0311MB423.eurprd03.prod.outlook.com ([169.254.10.207]) by
 AM2PRD0311HT005.eurprd03.prod.outlook.com ([10.255.162.40]) with
 mapi id 14.16.0190.008; Tue, 18 Sep 2012 11:17:21 +0000
From: Nick Pateman <nick.pateman@certivox.com>
To: "libssh2-devel@cool.haxx.se" <libssh2-devel@cool.haxx.se>
Subject: RE: Compiling libssh2 under x64 with Visual Studio 2010
Thread-Topic: Compiling libssh2 under x64 with Visual Studio 2010
Thread-Index: Ac2VjrwBvcxOLbp5S76AHAEcN8AmUg==
Date: Tue, 18 Sep 2012 11:17:20 +0000
Message-ID: <F3E9C1826A037A4A84F4D58424D54D7B1266D44C@AM2PRD0311MB423.eurprd03.prod.outlook.com>
Accept-Language: en-GB, en-US
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
x-originating-ip: [88.211.40.138]
MIME-Version: 1.0
X-OriginatorOrg: certivox.com
X-MIME-Autoconverted: from quoted-printable to 8bit by giant.haxx.se id
 q8IBIA8Y017239
X-BeenThere: libssh2-devel@cool.haxx.se
X-Mailman-Version: 2.1.15
Precedence: list
Reply-To: libssh2 development <libssh2-devel@cool.haxx.se>
List-Id: libssh2 development <libssh2-devel.cool.haxx.se>
List-Unsubscribe: <http://cool.haxx.se/cgi-bin/mailman/options/libssh2-devel>, 
 <mailto:libssh2-devel-request@cool.haxx.se?subject=unsubscribe>
List-Archive: <http://cool.haxx.se/pipermail/libssh2-devel/>
List-Post: <mailto:libssh2-devel@cool.haxx.se>
List-Help: <mailto:libssh2-devel-request@cool.haxx.se?subject=help>
List-Subscribe: <http://cool.haxx.se/cgi-bin/mailman/listinfo/libssh2-devel>, 
 <mailto:libssh2-devel-request@cool.haxx.se?subject=subscribe>
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Errors-To: libssh2-devel-bounces@cool.haxx.se
Sender: "libssh2-devel" <libssh2-devel-bounces@cool.haxx.se>

Errr what?

Now I speak with 13 years experience with software development so don't tell me I'm not on top of my build environment just because you read the beginning of a path name and made an assumption to its contents.  The fact of the matter is I can't get libSSH2 to compile following the instructions that come with it, end of story.

For your information I was trying to do an x64 build of linCURL, and following an article I was reading it said that I needed to use libSSH2.  Now as I was building it as a proof of concept for someone else I put all related projects into a root project called libCurl_X64.  That clearly makes sense.

I suggest you try treating people with a little respect rather than attempting to insult them due to your own mistakes.

Thankfully I don't need it now, which is good because I won't have to be dealing with people like you!

------------------------------

Message: 3
Date: Mon, 17 Sep 2012 16:02:03 +0200
From: Peter Stuge <peter@stuge.se>
To: libssh2-devel@cool.haxx.se
Subject: Re: Compiling libssh2 under x64 with Visual Studio 2010
Message-ID: <20120917140203.4604.qmail@stuge.se>
Content-Type: text/plain; charset=us-ascii

Nick Pateman wrote:
> They aren't CURL errors, they are libssh2 errors, I just have the 
> source in a folder named libCurl_X64 or whatever lol.

You must obviously use separate projects for building separate software, and it usually helps to use separate directories.

You are clearly not on top of your build environment, there's nothing we can do to help with that.


> Thankfully I've managed to get around needing libSSH2, the article I 
> was reading was misleading so I'm all sorted now.

libcurl will work without libssh2, but with limited functionality.
You need to know what suits your needs, and you need to build each software accordingly..


//Peter



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

From libssh2-devel-bounces@cool.haxx.se  Tue Sep 18 13:53:07 2012
Return-Path: <libssh2-devel-bounces@cool.haxx.se>
Received: from www.haxx.se (localhost.localdomain [127.0.0.1])
	by giant.haxx.se (8.14.4/8.14.4/Debian-2) with ESMTP id q8IBr0we010922;
	Tue, 18 Sep 2012 13:53:05 +0200
Received: from mail-qc0-f182.google.com (mail-qc0-f182.google.com
 [209.85.216.182])
 by giant.haxx.se (8.14.4/8.14.4/Debian-2) with ESMTP id q8IBqwSi010808
 (version=TLSv1/SSLv3 cipher=RC4-SHA bits=128 verify=NOT)
 for <libssh2-devel@cool.haxx.se>; Tue, 18 Sep 2012 13:52:58 +0200
Received: by qcsg15 with SMTP id g15so5690323qcs.41
 for <libssh2-devel@cool.haxx.se>; Tue, 18 Sep 2012 04:52:51 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113;
 h=mime-version:sender:in-reply-to:references:date
 :x-google-sender-auth:message-id:subject:from:to:content-type
 :content-transfer-encoding;
 bh=288ChBNitSLm16MUZjaUS04uiDdLhSdJKlVWITTJicM=;
 b=JD8gwna4h5aV2lqOaxAyVpFUEp06Vpa0aC6NlTCZqLFTbNXhNxTU2o/C1oSchjMS+l
 QofKbVkNOenZCht1I4F5f3psnGh/Wlyrqrk/J+DaqcCgOHhDay/+XohiWp/evjZgd8iF
 xylndjfnj3xfI/MpMcA82y/vP3foorc7ZLNN9WCE6kuhNpymmusVY5X+DWxdi2yP2e+a
 z8HwIiYMGc+veLRGWu/YVmm7wOFgZZ8HUTh/OFQvJ9bSWoMUPEPfRlbD7II7n3FNr6mx
 DOqmZ3ejuJal2yRImZxuhWNMEWvd1pzHuvHSRkJRSZTLSqZkF4wQqYAfsLLOie+WIXD/
 aY6A==
MIME-Version: 1.0
Received: by 10.224.9.193 with SMTP id m1mr959468qam.53.1347969171181; Tue, 18
 Sep 2012 04:52:51 -0700 (PDT)
Received: by 10.229.181.130 with HTTP; Tue, 18 Sep 2012 04:52:51 -0700 (PDT)
In-Reply-To: <F3E9C1826A037A4A84F4D58424D54D7B1266D44C@AM2PRD0311MB423.eurprd03.prod.outlook.com>
References: <F3E9C1826A037A4A84F4D58424D54D7B1266D44C@AM2PRD0311MB423.eurprd03.prod.outlook.com>
Date: Tue, 18 Sep 2012 12:52:51 +0100
X-Google-Sender-Auth: CBSCAnru24mfmd6SpYmMa5dBqec
Message-ID: <CADyPeTMAfREC_3PFc0hQBTuFJVfYUA6rFiekM6r4Z97VS76fgg@mail.gmail.com>
Subject: Re: Compiling libssh2 under x64 with Visual Studio 2010
From: Alexander Lamaison <swish@lammy.co.uk>
To: libssh2 development <libssh2-devel@cool.haxx.se>
X-MIME-Autoconverted: from quoted-printable to 8bit by giant.haxx.se id
 q8IBqwSi010808
X-BeenThere: libssh2-devel@cool.haxx.se
X-Mailman-Version: 2.1.15
Precedence: list
Reply-To: libssh2 development <libssh2-devel@cool.haxx.se>
List-Id: libssh2 development <libssh2-devel.cool.haxx.se>
List-Unsubscribe: <http://cool.haxx.se/cgi-bin/mailman/options/libssh2-devel>, 
 <mailto:libssh2-devel-request@cool.haxx.se?subject=unsubscribe>
List-Archive: <http://cool.haxx.se/pipermail/libssh2-devel/>
List-Post: <mailto:libssh2-devel@cool.haxx.se>
List-Help: <mailto:libssh2-devel-request@cool.haxx.se?subject=help>
List-Subscribe: <http://cool.haxx.se/cgi-bin/mailman/listinfo/libssh2-devel>, 
 <mailto:libssh2-devel-request@cool.haxx.se?subject=subscribe>
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Errors-To: libssh2-devel-bounces@cool.haxx.se
Sender: "libssh2-devel" <libssh2-devel-bounces@cool.haxx.se>

On 18 September 2012 12:17, Nick Pateman <nick.pateman@certivox.com> wrote:
> Errr what?
>
> Now I speak with 13 years experience with software development so don't tell me I'm not on top of my build environment just because you read the beginning of a path name and made an assumption to its contents.  The fact of the matter is I can't get libSSH2 to compile following the instructions that come with it, end of story.
>
> For your information I was trying to do an x64 build of linCURL, and following an article I was reading it said that I needed to use libSSH2.  Now as I was building it as a proof of concept for someone else I put all related projects into a root project called libCurl_X64.  That clearly makes sense.
>
> I suggest you try treating people with a little respect rather than attempting to insult them due to your own mistakes.
>
> Thankfully I don't need it now, which is good because I won't have to be dealing with people like you!

Well that was odd.  Someone not have their Ready Brek this morning?

I can't speak for Peter but I looked at the words you wrote, not your
path name, to decide your build was screwed.  You wrote:

> I added the curl include path to the configuration which eliminates the
> missing curl.h references.

Missing curl.h references?  There are no curl.h references in libssh2.
 So what are we supposed to think?

Alex

-- 
Swish - Easy SFTP for Windows Explorer (http://www.swish-sftp.org)

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

From libssh2-devel-bounces@cool.haxx.se  Wed Sep 19 22:52:16 2012
Return-Path: <libssh2-devel-bounces@cool.haxx.se>
Received: from www.haxx.se (localhost.localdomain [127.0.0.1])
	by giant.haxx.se (8.14.4/8.14.4/Debian-2) with ESMTP id q8JKpm0v010066;
	Wed, 19 Sep 2012 22:52:08 +0200
Received: from na3sys009aog118.obsmtp.com (na3sys009aog118.obsmtp.com
 [74.125.149.244])
 by giant.haxx.se (8.14.4/8.14.4/Debian-2) with SMTP id q8JKpiV2010027
 for <libssh2-devel@cool.haxx.se>; Wed, 19 Sep 2012 22:51:45 +0200
Received: from mail-pb0-f54.google.com ([209.85.160.54]) (using TLSv1) by
 na3sys009aob118.postini.com ([74.125.148.12]) with SMTP
 ID DSNKUFowYfqKFq+w+T8CrQTPF6x1LkKi2zsl@postini.com;
 Wed, 19 Sep 2012 13:51:47 PDT
Received: by pbbrp2 with SMTP id rp2so3308846pbb.41
 for <libssh2-devel@cool.haxx.se>; Wed, 19 Sep 2012 13:51:45 -0700 (PDT)
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=google.com; s=20120113;
 h=mime-version:date:message-id:subject:from:to:content-type
 :x-gm-message-state;
 bh=Ns5mXvk8ggDdkxv6BM6qcGw6qeA/PvfPJAlkJ/K2Fz0=;
 b=fjh0paSGqW/si43k+XAhRb2uVKdhWm90oMJCbCuCwgh8bOYfiOotl9PCJN5oBftTKm
 dNrTRoOg9OdaP4p3AahBHhn2P2KKoJ3wT7wePM2bTZ1y5ggcTm+XonPXN+jDI0JE6nTu
 j/DwkXy144hjJsVTmUhZs2PynTyluaAC/gWFVuYAIpSpUwHt/fSjcuapPs36nILP/MK8
 WoYWXwBxvUWcDNQ41TjWwEfYCRte6IYqitW5wL0f6cjNAdBZG80BDbsDYEMV89wZ8+sx
 rMHSEqqq+NpsR1h+EXTptnVOf8WC/PYbM3btnxtKV8k38W6nn8l2skpu+CFxHYsUUbIW
 dOqg==
MIME-Version: 1.0
Received: by 10.68.189.193 with SMTP id gk1mr1050104pbc.123.1348087904766;
 Wed, 19 Sep 2012 13:51:44 -0700 (PDT)
Received: by 10.66.253.103 with HTTP; Wed, 19 Sep 2012 13:51:44 -0700 (PDT)
Date: Wed, 19 Sep 2012 16:51:44 -0400
Message-ID: <CAJ5mg=_o7vskjkpD1Hvw5BsXKcO-HhAyRC7SGPg3Qtux0OCLJw@mail.gmail.com>
Subject: libssh2_channel_wait_closed(...) issue
From: Chris Harris <chris.harris@kitware.com>
To: libssh2-devel@cool.haxx.se
X-Gm-Message-State: ALoCoQm37Q0c32tXnQQ8/tf8Hrz0zyx7VmfagfBCjxp7vy5w5L0AkVvUpM4wBtIbBOv0CnYgM40F
X-BeenThere: libssh2-devel@cool.haxx.se
X-Mailman-Version: 2.1.15
Precedence: list
Reply-To: libssh2 development <libssh2-devel@cool.haxx.se>
List-Id: libssh2 development <libssh2-devel.cool.haxx.se>
List-Unsubscribe: <http://cool.haxx.se/cgi-bin/mailman/options/libssh2-devel>, 
 <mailto:libssh2-devel-request@cool.haxx.se?subject=unsubscribe>
List-Archive: <http://cool.haxx.se/pipermail/libssh2-devel/>
List-Post: <mailto:libssh2-devel@cool.haxx.se>
List-Help: <mailto:libssh2-devel-request@cool.haxx.se?subject=help>
List-Subscribe: <http://cool.haxx.se/cgi-bin/mailman/listinfo/libssh2-devel>, 
 <mailto:libssh2-devel-request@cool.haxx.se?subject=subscribe>
Content-Type: multipart/mixed; boundary="===============1619912048=="
Errors-To: libssh2-devel-bounces@cool.haxx.se
Sender: "libssh2-devel" <libssh2-devel-bounces@cool.haxx.se>

--===============1619912048==
Content-Type: multipart/alternative; boundary=e89a8ff1bffab08c3204ca142c23

--e89a8ff1bffab08c3204ca142c23
Content-Type: text/plain; charset=ISO-8859-1

I am running into an issue when connecting to a sshd instance that has
MaxSessions set to 1. It appears that this only allow one channel to
created at anyone time. So I am creating a channel, running a command and
then wait for the channel to be closed before create another channel... The
problem seem to be that libssh2_channel_wait_closed return 0 before the
sshd has finish cleaning up the channel, so an attempt to create another
channel at this point results in an error (-21). The reason I think
the libssh2_channel_wait_closed is returning too soon is if I add a sleep
between my execs the channels are created with out a problem. The code
below illustrates the problem when connected to a sshd instance with
MaxSessions=1. Any help resolving this issue would be gratefully received.

Regards,

Chris


/*
 * Sample showing how to use libssh2 to execute a command remotely.
 *
 * The sample code has fixed values for host name, user name, password
 * and command to run.
 *
 * Run it like this:
 *
 * $ ./ssh2_exec 127.0.0.1 user password "uptime"
 *
 */

#include "libssh2_config.h"
#include <libssh2.h>

#ifdef HAVE_WINSOCK2_H
# include <winsock2.h>
#endif
#ifdef HAVE_SYS_SOCKET_H
# include <sys/socket.h>
#endif
#ifdef HAVE_NETINET_IN_H
# include <netinet/in.h>
#endif
#ifdef HAVE_SYS_SELECT_H
# include <sys/select.h>
#endif
# ifdef HAVE_UNISTD_H
#include <unistd.h>
#endif
#ifdef HAVE_ARPA_INET_H
# include <arpa/inet.h>
#endif

#include <sys/time.h>
#include <sys/types.h>
#include <stdlib.h>
#include <fcntl.h>
#include <errno.h>
#include <stdio.h>
#include <ctype.h>

static int waitsocket(int socket_fd, LIBSSH2_SESSION *session)
{
    struct timeval timeout;
    int rc;
    fd_set fd;
    fd_set *writefd = NULL;
    fd_set *readfd = NULL;
    int dir;

    timeout.tv_sec = 10;
    timeout.tv_usec = 0;

    FD_ZERO(&fd);

    FD_SET(socket_fd, &fd);

    /* now make sure we wait in the correct direction */
    dir = libssh2_session_block_directions(session);

    if(dir & LIBSSH2_SESSION_BLOCK_INBOUND)
        readfd = &fd;

    if(dir & LIBSSH2_SESSION_BLOCK_OUTBOUND)
        writefd = &fd;

    rc = select(socket_fd + 1, readfd, writefd, NULL, &timeout);

    return rc;
}

void exec(int sock, LIBSSH2_SESSION *session, const char *commandline)
{
 LIBSSH2_CHANNEL *channel;
 int rc;
 int exitcode;
 char *exitsignal=(char *)"none";
 int bytecount = 0;

/* Exec non-blocking on the remove host */
 while( (channel = libssh2_channel_open_session(session)) == NULL &&
        libssh2_session_last_error(session,NULL,NULL,0) ==
        LIBSSH2_ERROR_EAGAIN )
 {
     waitsocket(sock, session);
 }
 if( channel == NULL )
 {
     rc = libssh2_session_last_error(session,NULL,NULL,0);
     fprintf(stderr,"Error: %d\n", rc);
     exit( 1 );
 }
 while( (rc = libssh2_channel_exec(channel, commandline)) ==
        LIBSSH2_ERROR_EAGAIN )
 {
     waitsocket(sock, session);
 }
 if( rc != 0 )
 {
     fprintf(stderr,"Error\n");
     exit( 1 );
 }
 for( ;; )
 {
     /* loop until we block */
     int rc;
     do
     {
         char buffer[0x4000];
         rc = libssh2_channel_read( channel, buffer, sizeof(buffer) );
         if( rc > 0 )
         {
             int i;
             bytecount += rc;
             fprintf(stderr, "We read:\n");
             for( i=0; i < rc; ++i )
                 fputc( buffer[i], stderr);
             fprintf(stderr, "\n");
         }
         else {
             if( rc != LIBSSH2_ERROR_EAGAIN )
                 /* no need to output this for the EAGAIN case */
                 fprintf(stderr, "libssh2_channel_read returned %d\n", rc);
         }
     }
     while( rc > 0 );

     /* this is due to blocking that would occur otherwise so we loop on
        this condition */
     if( rc == LIBSSH2_ERROR_EAGAIN )
     {
         waitsocket(sock, session);
     }
     else
         break;
 }
 exitcode = 127;
 while( (rc = libssh2_channel_close(channel)) == LIBSSH2_ERROR_EAGAIN )
     waitsocket(sock, session);

 while( (rc = libssh2_channel_wait_closed(channel)) == LIBSSH2_ERROR_EAGAIN
)
     waitsocket(sock, session);

 if( rc == 0 )
 {
     exitcode = libssh2_channel_get_exit_status( channel );
     libssh2_channel_get_exit_signal(channel, &exitsignal,
                                     NULL, NULL, NULL, NULL, NULL);
 }

 if (exitsignal)
     printf("\nGot signal: %s\n", exitsignal);
 else
     printf("\nEXIT: %d bytecount: %d\n", exitcode, bytecount);

 libssh2_channel_free(channel);
 channel = NULL;
}

int main(int argc, char *argv[])
{
    const char *hostname = "127.0.0.1";
    const char *commandline = "uptime";
    const char *username    = "user";
    const char *password    = "password";
    unsigned long hostaddr;
    int sock;
    struct sockaddr_in sin;
    const char *fingerprint;
    LIBSSH2_SESSION *session;
    int rc;
    size_t len;
    LIBSSH2_KNOWNHOSTS *nh;
    int type;

#ifdef WIN32
    WSADATA wsadata;
    WSAStartup(MAKEWORD(2,0), &wsadata);
#endif
    if (argc > 1)
        /* must be ip address only */
        hostname = argv[1];

    if (argc > 2) {
        username = argv[2];
    }
    if (argc > 3) {
        password = argv[3];
    }
    if (argc > 4) {
        commandline = argv[4];
    }

    rc = libssh2_init (0);
    if (rc != 0) {
        fprintf (stderr, "libssh2 initialization failed (%d)\n", rc);
        return 1;
    }

    hostaddr = inet_addr(hostname);

    /* Ultra basic "connect to port 22 on localhost"
     * Your code is responsible for creating the socket establishing the
     * connection
     */
    sock = socket(AF_INET, SOCK_STREAM, 0);

    sin.sin_family = AF_INET;
    sin.sin_port = htons(22);
    sin.sin_addr.s_addr = hostaddr;
    if (connect(sock, (struct sockaddr*)(&sin),
                sizeof(struct sockaddr_in)) != 0) {
        fprintf(stderr, "failed to connect!\n");
        return -1;
    }

    /* Create a session instance */
    session = libssh2_session_init();
    if (!session)
        return -1;

    /* tell libssh2 we want it all done non-blocking */
    libssh2_session_set_blocking(session, 0);

    /* ... start it up. This will trade welcome banners, exchange keys,
     * and setup crypto, compression, and MAC layers
     */
    while ((rc = libssh2_session_handshake(session, sock)) ==
           LIBSSH2_ERROR_EAGAIN);
    if (rc) {
        fprintf(stderr, "Failure establishing SSH session: %d\n", rc);
        return -1;
    }

    nh = libssh2_knownhost_init(session);
    if(!nh) {
        /* eeek, do cleanup here */
        return 2;
    }

    /* read all hosts from here */
    libssh2_knownhost_readfile(nh, "known_hosts",
                               LIBSSH2_KNOWNHOST_FILE_OPENSSH);

    /* store all known hosts to here */
    libssh2_knownhost_writefile(nh, "dumpfile",
                                LIBSSH2_KNOWNHOST_FILE_OPENSSH);

    fingerprint = libssh2_session_hostkey(session, &len, &type);
    if(fingerprint) {
        struct libssh2_knownhost *host;
#if LIBSSH2_VERSION_NUM >= 0x010206
        /* introduced in 1.2.6 */
        int check = libssh2_knownhost_checkp(nh, hostname, 22,
                                             fingerprint, len,
                                             LIBSSH2_KNOWNHOST_TYPE_PLAIN|
                                             LIBSSH2_KNOWNHOST_KEYENC_RAW,
                                             &host);
#else
        /* 1.2.5 or older */
        int check = libssh2_knownhost_check(nh, hostname,
                                            fingerprint, len,
                                            LIBSSH2_KNOWNHOST_TYPE_PLAIN|
                                            LIBSSH2_KNOWNHOST_KEYENC_RAW,
                                            &host);
#endif
        fprintf(stderr, "Host check: %d, key: %s\n", check,
                (check <= LIBSSH2_KNOWNHOST_CHECK_MISMATCH)?
                host->key:"<none>");

        /*****
         * At this point, we could verify that 'check' tells us the key is
         * fine or bail out.
         *****/
    }
    else {
        /* eeek, do cleanup here */
        return 3;
    }
    libssh2_knownhost_free(nh);

    if ( strlen(password) != 0 ) {
        /* We could authenticate via password */
        while ((rc = libssh2_userauth_password(session, username,
password)) ==
               LIBSSH2_ERROR_EAGAIN);
        if (rc) {
            fprintf(stderr, "Authentication by password failed.\n");
            goto shutdown;
        }
    }
    else {
        /* Or by public key */
        while ((rc = libssh2_userauth_publickey_fromfile(session, username,
                                                         "/home/user/"
                                                         ".ssh/id_rsa.pub",
                                                         "/home/user/"
                                                         ".ssh/id_rsa",
                                                         password)) ==
               LIBSSH2_ERROR_EAGAIN);
        if (rc) {
            fprintf(stderr, "\tAuthentication by public key failed\n");
            goto shutdown;
        }
    }

#if 0
    libssh2_trace(session, ~0 );
#endif

    exec(sock, session, commandline);
    //  Adding this solve the issue sleep(1);
    exec(sock, session, commandline);

shutdown:

    libssh2_session_disconnect(session,
                               "Normal Shutdown, Thank you for playing");
    libssh2_session_free(session);

#ifdef WIN32
    closesocket(sock);
#else
    close(sock);
#endif
    fprintf(stderr, "all done\n");

    libssh2_exit();

    return 0;
}

--e89a8ff1bffab08c3204ca142c23
Content-Type: text/html; charset=ISO-8859-1
Content-Transfer-Encoding: quoted-printable

I am running into an issue when connecting to a sshd instance that has MaxS=
essions set to 1. It appears that this only allow one channel to created at=
 anyone time. So I am creating a channel, running a command and then wait f=
or the channel to be closed before create another channel... The problem se=
em to be that=A0libssh2_channel_wait_closed return 0 before the sshd has fi=
nish cleaning up the channel, so an attempt to create another channel at th=
is point results in an error (-21). The reason I think the=A0libssh2_channe=
l_wait_closed=A0is returning too soon is if I add a sleep between my execs =
the channels are created with out a problem. The code below=A0illustrates=
=A0the problem when connected to a sshd instance with MaxSessions=3D1. Any =
help resolving this issue would be gratefully received.<div>

<br></div><div>Regards,</div><div><br></div><div>Chris</div><div><br></div>=
<div><br></div><div><div>/*</div><div>=A0* Sample showing how to use libssh=
2 to execute a command remotely.</div><div>=A0*</div><div>=A0* The sample c=
ode has fixed values for host name, user name, password</div>

<div>=A0* and command to run.</div><div>=A0*</div><div>=A0* Run it like thi=
s:</div><div>=A0*</div><div>=A0* $ ./ssh2_exec 127.0.0.1 user password &quo=
t;uptime&quot;</div><div>=A0*</div><div>=A0*/</div><div><br></div><div>#inc=
lude &quot;libssh2_config.h&quot;</div>

<div>#include &lt;libssh2.h&gt;</div><div><br></div><div>#ifdef HAVE_WINSOC=
K2_H</div><div># include &lt;winsock2.h&gt;</div><div>#endif</div><div>#ifd=
ef HAVE_SYS_SOCKET_H</div><div># include &lt;sys/socket.h&gt;</div><div>

#endif</div><div>#ifdef HAVE_NETINET_IN_H</div><div># include &lt;netinet/i=
n.h&gt;</div><div>#endif</div><div>#ifdef HAVE_SYS_SELECT_H</div><div># inc=
lude &lt;sys/select.h&gt;</div><div>#endif</div><div># ifdef HAVE_UNISTD_H<=
/div>

<div>#include &lt;unistd.h&gt;</div><div>#endif</div><div>#ifdef HAVE_ARPA_=
INET_H</div><div># include &lt;arpa/inet.h&gt;</div><div>#endif</div><div><=
br></div><div>#include &lt;sys/time.h&gt;</div><div>#include &lt;sys/types.=
h&gt;</div>

<div>#include &lt;stdlib.h&gt;</div><div>#include &lt;fcntl.h&gt;</div><div=
>#include &lt;errno.h&gt;</div><div>#include &lt;stdio.h&gt;</div><div>#inc=
lude &lt;ctype.h&gt;</div><div><br></div><div>static int waitsocket(int soc=
ket_fd, LIBSSH2_SESSION *session)</div>

<div>{</div><div>=A0 =A0 struct timeval timeout;</div><div>=A0 =A0 int rc;<=
/div><div>=A0 =A0 fd_set fd;</div><div>=A0 =A0 fd_set *writefd =3D NULL;</d=
iv><div>=A0 =A0 fd_set *readfd =3D NULL;</div><div>=A0 =A0 int dir;</div><d=
iv><br></div><div>=A0 =A0 timeout.tv_sec =3D 10;</div>

<div>=A0 =A0 timeout.tv_usec =3D 0;</div><div><br></div><div>=A0 =A0 FD_ZER=
O(&amp;fd);</div><div><br></div><div>=A0 =A0 FD_SET(socket_fd, &amp;fd);</d=
iv><div><br></div><div>=A0 =A0 /* now make sure we wait in the correct dire=
ction */</div>

<div>=A0 =A0 dir =3D libssh2_session_block_directions(session);</div><div><=
br></div><div>=A0 =A0 if(dir &amp; LIBSSH2_SESSION_BLOCK_INBOUND)</div><div=
>=A0 =A0 =A0 =A0 readfd =3D &amp;fd;</div><div><br></div><div>=A0 =A0 if(di=
r &amp; LIBSSH2_SESSION_BLOCK_OUTBOUND)</div>

<div>=A0 =A0 =A0 =A0 writefd =3D &amp;fd;</div><div><br></div><div>=A0 =A0 =
rc =3D select(socket_fd + 1, readfd, writefd, NULL, &amp;timeout);</div><di=
v><br></div><div>=A0 =A0 return rc;</div><div>}</div><div><br></div><div>vo=
id exec(int sock, LIBSSH2_SESSION *session, const char *commandline)</div>

<div>{</div><div>=A0LIBSSH2_CHANNEL *channel;</div><div>=A0int rc;</div><di=
v>=A0int exitcode;</div><div>=A0char *exitsignal=3D(char *)&quot;none&quot;=
;</div><div>=A0int bytecount =3D 0;</div><div><br></div><div>/* Exec non-bl=
ocking on the remove host */</div>

<div>=A0while( (channel =3D libssh2_channel_open_session(session)) =3D=3D N=
ULL &amp;&amp;</div><div>=A0 =A0 =A0 =A0 libssh2_session_last_error(session=
,NULL,NULL,0) =3D=3D</div><div>=A0 =A0 =A0 =A0 LIBSSH2_ERROR_EAGAIN )</div>=
<div>=A0{</div><div>=A0 =A0 =A0waitsocket(sock, session);</div>

<div>=A0}</div><div>=A0if( channel =3D=3D NULL )</div><div>=A0{</div><div>=
=A0 =A0 =A0rc =3D libssh2_session_last_error(session,NULL,NULL,0);</div><di=
v>=A0 =A0 =A0fprintf(stderr,&quot;Error: %d\n&quot;, rc);</div><div>=A0 =A0=
 =A0exit( 1 );</div><div>=A0}</div>

<div>=A0while( (rc =3D libssh2_channel_exec(channel, commandline)) =3D=3D</=
div><div>=A0 =A0 =A0 =A0 LIBSSH2_ERROR_EAGAIN )</div><div>=A0{</div><div>=
=A0 =A0 =A0waitsocket(sock, session);</div><div>=A0}</div><div>=A0if( rc !=
=3D 0 )</div><div>=A0{</div><div>

=A0 =A0 =A0fprintf(stderr,&quot;Error\n&quot;);</div><div>=A0 =A0 =A0exit( =
1 );</div><div>=A0}</div><div>=A0for( ;; )</div><div>=A0{</div><div>=A0 =A0=
 =A0/* loop until we block */</div><div>=A0 =A0 =A0int rc;</div><div>=A0 =
=A0 =A0do</div><div>=A0 =A0 =A0{</div><div>

=A0 =A0 =A0 =A0 =A0char buffer[0x4000];</div><div>=A0 =A0 =A0 =A0 =A0rc =3D=
 libssh2_channel_read( channel, buffer, sizeof(buffer) );</div><div>=A0 =A0=
 =A0 =A0 =A0if( rc &gt; 0 )</div><div>=A0 =A0 =A0 =A0 =A0{</div><div>=A0 =
=A0 =A0 =A0 =A0 =A0 =A0int i;</div><div>=A0 =A0 =A0 =A0 =A0 =A0 =A0bytecoun=
t +=3D rc;</div>

<div>=A0 =A0 =A0 =A0 =A0 =A0 =A0fprintf(stderr, &quot;We read:\n&quot;);</d=
iv><div>=A0 =A0 =A0 =A0 =A0 =A0 =A0for( i=3D0; i &lt; rc; ++i )</div><div>=
=A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0fputc( buffer[i], stderr);</div><div>=A0=
 =A0 =A0 =A0 =A0 =A0 =A0fprintf(stderr, &quot;\n&quot;);</div>

<div>=A0 =A0 =A0 =A0 =A0}</div><div>=A0 =A0 =A0 =A0 =A0else {</div><div>=A0=
 =A0 =A0 =A0 =A0 =A0 =A0if( rc !=3D LIBSSH2_ERROR_EAGAIN )</div><div>=A0 =
=A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0/* no need to output this for the EAGAIN cas=
e */</div><div>=A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0fprintf(stderr, &quot;lib=
ssh2_channel_read returned %d\n&quot;, rc);</div>

<div>=A0 =A0 =A0 =A0 =A0}</div><div>=A0 =A0 =A0}</div><div>=A0 =A0 =A0while=
( rc &gt; 0 );</div><div><br></div><div>=A0 =A0 =A0/* this is due to blocki=
ng that would occur otherwise so we loop on</div><div>=A0 =A0 =A0 =A0 this =
condition */</div><div>=A0 =A0 =A0if( rc =3D=3D LIBSSH2_ERROR_EAGAIN )</div=
>

<div>=A0 =A0 =A0{</div><div>=A0 =A0 =A0 =A0 =A0waitsocket(sock, session);</=
div><div>=A0 =A0 =A0}</div><div>=A0 =A0 =A0else</div><div>=A0 =A0 =A0 =A0 =
=A0break;</div><div>=A0}</div><div>=A0exitcode =3D 127;</div><div>=A0while(=
 (rc =3D libssh2_channel_close(channel)) =3D=3D LIBSSH2_ERROR_EAGAIN )</div=
>

<div>=A0 =A0 =A0waitsocket(sock, session);</div><div><br></div><div>=A0whil=
e( (rc =3D libssh2_channel_wait_closed(channel)) =3D=3D LIBSSH2_ERROR_EAGAI=
N )</div><div>=A0 =A0 =A0waitsocket(sock, session);</div><div><br></div><di=
v>=A0if( rc =3D=3D 0 )</div>

<div>=A0{</div><div>=A0 =A0 =A0exitcode =3D libssh2_channel_get_exit_status=
( channel );</div><div>=A0 =A0 =A0libssh2_channel_get_exit_signal(channel, =
&amp;exitsignal,</div><div>=A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =
=A0 =A0 =A0 =A0 =A0 =A0 =A0NULL, NULL, NULL, NULL, NULL);</div>

<div>=A0}</div><div><br></div><div>=A0if (exitsignal)</div><div>=A0 =A0 =A0=
printf(&quot;\nGot signal: %s\n&quot;, exitsignal);</div><div>=A0else</div>=
<div>=A0 =A0 =A0printf(&quot;\nEXIT: %d bytecount: %d\n&quot;, exitcode, by=
tecount);</div>

<div><br></div><div>=A0libssh2_channel_free(channel);</div><div>=A0channel =
=3D NULL;</div><div>}</div><div><br></div><div>int main(int argc, char *arg=
v[])</div><div>{</div><div>=A0 =A0 const char *hostname =3D &quot;127.0.0.1=
&quot;;</div>

<div>=A0 =A0 const char *commandline =3D &quot;uptime&quot;;</div><div>=A0 =
=A0 const char *username =A0 =A0=3D &quot;user&quot;;</div><div>=A0 =A0 con=
st char *password =A0 =A0=3D &quot;password&quot;;</div><div>=A0 =A0 unsign=
ed long hostaddr;</div><div>

=A0 =A0 int sock;</div><div>=A0 =A0 struct sockaddr_in sin;</div><div>=A0 =
=A0 const char *fingerprint;</div><div>=A0 =A0 LIBSSH2_SESSION *session;</d=
iv><div>=A0 =A0 int rc;</div><div>=A0 =A0 size_t len;</div><div>=A0 =A0 LIB=
SSH2_KNOWNHOSTS *nh;</div>

<div>=A0 =A0 int type;</div><div><br></div><div>#ifdef WIN32</div><div>=A0 =
=A0 WSADATA wsadata;</div><div>=A0 =A0 WSAStartup(MAKEWORD(2,0), &amp;wsada=
ta);</div><div>#endif</div><div>=A0 =A0 if (argc &gt; 1)</div><div>=A0 =A0 =
=A0 =A0 /* must be ip address only */</div>

<div>=A0 =A0 =A0 =A0 hostname =3D argv[1];</div><div><br></div><div>=A0 =A0=
 if (argc &gt; 2) {</div><div>=A0 =A0 =A0 =A0 username =3D argv[2];</div><d=
iv>=A0 =A0 }</div><div>=A0 =A0 if (argc &gt; 3) {</div><div>=A0 =A0 =A0 =A0=
 password =3D argv[3];</div><div>=A0 =A0 }</div>

<div>=A0 =A0 if (argc &gt; 4) {</div><div>=A0 =A0 =A0 =A0 commandline =3D a=
rgv[4];</div><div>=A0 =A0 }</div><div><br></div><div>=A0 =A0 rc =3D libssh2=
_init (0);</div><div>=A0 =A0 if (rc !=3D 0) {</div><div>=A0 =A0 =A0 =A0 fpr=
intf (stderr, &quot;libssh2 initialization failed (%d)\n&quot;, rc);</div>

<div>=A0 =A0 =A0 =A0 return 1;</div><div>=A0 =A0 }</div><div><br></div><div=
>=A0 =A0 hostaddr =3D inet_addr(hostname);</div><div><br></div><div>=A0 =A0=
 /* Ultra basic &quot;connect to port 22 on localhost&quot;</div><div>=A0 =
=A0 =A0* Your code is responsible for creating the socket establishing the<=
/div>

<div>=A0 =A0 =A0* connection</div><div>=A0 =A0 =A0*/</div><div>=A0 =A0 sock=
 =3D socket(AF_INET, SOCK_STREAM, 0);</div><div><br></div><div>=A0 =A0 sin.=
sin_family =3D AF_INET;</div><div>=A0 =A0 sin.sin_port =3D htons(22);</div>=
<div>=A0 =A0 sin.sin_addr.s_addr =3D hostaddr;</div>

<div>=A0 =A0 if (connect(sock, (struct sockaddr*)(&amp;sin),</div><div>=A0 =
=A0 =A0 =A0 =A0 =A0 =A0 =A0 sizeof(struct sockaddr_in)) !=3D 0) {</div><div=
>=A0 =A0 =A0 =A0 fprintf(stderr, &quot;failed to connect!\n&quot;);</div><d=
iv>=A0 =A0 =A0 =A0 return -1;</div>

<div>=A0 =A0 }</div><div><br></div><div>=A0 =A0 /* Create a session instanc=
e */</div><div>=A0 =A0 session =3D libssh2_session_init();</div><div>=A0 =
=A0 if (!session)</div><div>=A0 =A0 =A0 =A0 return -1;</div><div><br></div>=
<div>=A0 =A0 /* tell libssh2 we want it all done non-blocking */</div>

<div>=A0 =A0 libssh2_session_set_blocking(session, 0);</div><div><br></div>=
<div>=A0 =A0 /* ... start it up. This will trade welcome banners, exchange =
keys,</div><div>=A0 =A0 =A0* and setup crypto, compression, and MAC layers<=
/div><div>

=A0 =A0 =A0*/</div><div>=A0 =A0 while ((rc =3D libssh2_session_handshake(se=
ssion, sock)) =3D=3D</div><div>=A0 =A0 =A0 =A0 =A0 =A0LIBSSH2_ERROR_EAGAIN)=
;</div><div>=A0 =A0 if (rc) {</div><div>=A0 =A0 =A0 =A0 fprintf(stderr, &qu=
ot;Failure establishing SSH session: %d\n&quot;, rc);</div>

<div>=A0 =A0 =A0 =A0 return -1;</div><div>=A0 =A0 }</div><div><br></div><di=
v>=A0 =A0 nh =3D libssh2_knownhost_init(session);</div><div>=A0 =A0 if(!nh)=
 {</div><div>=A0 =A0 =A0 =A0 /* eeek, do cleanup here */</div><div>=A0 =A0 =
=A0 =A0 return 2;</div><div>=A0 =A0 }</div>

<div><br></div><div>=A0 =A0 /* read all hosts from here */</div><div>=A0 =
=A0 libssh2_knownhost_readfile(nh, &quot;known_hosts&quot;,</div><div>=A0 =
=A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0LIBSSH2_KNOWNHOS=
T_FILE_OPENSSH);</div><div><br></div><div>

=A0 =A0 /* store all known hosts to here */</div><div>=A0 =A0 libssh2_known=
host_writefile(nh, &quot;dumpfile&quot;,</div><div>=A0 =A0 =A0 =A0 =A0 =A0 =
=A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 LIBSSH2_KNOWNHOST_FILE_OPENSSH);</d=
iv><div><br></div><div>=A0 =A0 fingerprint =3D libssh2_session_hostkey(sess=
ion, &amp;len, &amp;type);</div>

<div>=A0 =A0 if(fingerprint) {</div><div>=A0 =A0 =A0 =A0 struct libssh2_kno=
wnhost *host;</div><div>#if LIBSSH2_VERSION_NUM &gt;=3D 0x010206</div><div>=
=A0 =A0 =A0 =A0 /* introduced in 1.2.6 */</div><div>=A0 =A0 =A0 =A0 int che=
ck =3D libssh2_knownhost_checkp(nh, hostname, 22,</div>

<div>=A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =
=A0 =A0 =A0 =A0 =A0 =A0fingerprint, len,</div><div>=A0 =A0 =A0 =A0 =A0 =A0 =
=A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0LIBSSH2_=
KNOWNHOST_TYPE_PLAIN|</div><div>=A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0=
 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0LIBSSH2_KNOWNHOST_KEYENC_RA=
W,</div>

<div>=A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =
=A0 =A0 =A0 =A0 =A0 =A0&amp;host);</div><div>#else</div><div>=A0 =A0 =A0 =
=A0 /* 1.2.5 or older */</div><div>=A0 =A0 =A0 =A0 int check =3D libssh2_kn=
ownhost_check(nh, hostname,</div><div>=A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =
=A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 fingerprint, len,</div>

<div>=A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =
=A0 =A0 =A0 =A0 =A0 LIBSSH2_KNOWNHOST_TYPE_PLAIN|</div><div>=A0 =A0 =A0 =A0=
 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 LI=
BSSH2_KNOWNHOST_KEYENC_RAW,</div><div>=A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =
=A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 &amp;host);</div>

<div>#endif</div><div>=A0 =A0 =A0 =A0 fprintf(stderr, &quot;Host check: %d,=
 key: %s\n&quot;, check,</div><div>=A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 (check &=
lt;=3D LIBSSH2_KNOWNHOST_CHECK_MISMATCH)?</div><div>=A0 =A0 =A0 =A0 =A0 =A0=
 =A0 =A0 host-&gt;key:&quot;&lt;none&gt;&quot;);</div>

<div><br></div><div>=A0 =A0 =A0 =A0 /*****</div><div>=A0 =A0 =A0 =A0 =A0* A=
t this point, we could verify that &#39;check&#39; tells us the key is</div=
><div>=A0 =A0 =A0 =A0 =A0* fine or bail out.</div><div>=A0 =A0 =A0 =A0 =A0*=
****/</div><div>=A0 =A0 }</div><div>=A0 =A0 else {</div>

<div>=A0 =A0 =A0 =A0 /* eeek, do cleanup here */</div><div>=A0 =A0 =A0 =A0 =
return 3;</div><div>=A0 =A0 }</div><div>=A0 =A0 libssh2_knownhost_free(nh);=
</div><div><br></div><div>=A0 =A0 if ( strlen(password) !=3D 0 ) {</div><di=
v>=A0 =A0 =A0 =A0 /* We could authenticate via password */</div>

<div>=A0 =A0 =A0 =A0 while ((rc =3D libssh2_userauth_password(session, user=
name, password)) =3D=3D</div><div>=A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0LIBSSH2_ER=
ROR_EAGAIN);</div><div>=A0 =A0 =A0 =A0 if (rc) {</div><div>=A0 =A0 =A0 =A0 =
=A0 =A0 fprintf(stderr, &quot;Authentication by password failed.\n&quot;);<=
/div>

<div>=A0 =A0 =A0 =A0 =A0 =A0 goto shutdown;</div><div>=A0 =A0 =A0 =A0 }</di=
v><div>=A0 =A0 }</div><div>=A0 =A0 else {</div><div>=A0 =A0 =A0 =A0 /* Or b=
y public key */</div><div>=A0 =A0 =A0 =A0 while ((rc =3D libssh2_userauth_p=
ublickey_fromfile(session, username,</div>

<div>=A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =
=A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0&quot;/home/user/&quot;</div=
><div>=A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =
=A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0&quot;.ssh/id_rsa.pub&quot;,=
</div><div>=A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =
=A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0&quot;/home/user/&quot;<=
/div>

<div>=A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =
=A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0&quot;.ssh/id_rsa&quot;,</di=
v><div>=A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =
=A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0password)) =3D=3D</div><div>=
=A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0LIBSSH2_ERROR_EAGAIN);</div>

<div>=A0 =A0 =A0 =A0 if (rc) {</div><div>=A0 =A0 =A0 =A0 =A0 =A0 fprintf(st=
derr, &quot;\tAuthentication by public key failed\n&quot;);</div><div>=A0 =
=A0 =A0 =A0 =A0 =A0 goto shutdown;</div><div>=A0 =A0 =A0 =A0 }</div><div>=
=A0 =A0 }</div><div><br></div><div>#if 0</div>

<div>=A0 =A0 libssh2_trace(session, ~0 );</div><div>#endif</div><div><br></=
div><div>=A0 =A0 exec(sock, session, commandline);</div><div>=A0 =A0 // =A0=
Adding this solve the issue sleep(1);</div><div>=A0 =A0 exec(sock, session,=
 commandline);</div>

<div><br></div><div>shutdown:</div><div><br></div><div>=A0 =A0 libssh2_sess=
ion_disconnect(session,</div><div>=A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =
=A0 =A0 =A0 =A0 =A0 =A0&quot;Normal Shutdown, Thank you for playing&quot;);=
</div><div>=A0 =A0 libssh2_session_free(session);</div>

<div><br></div><div>#ifdef WIN32</div><div>=A0 =A0 closesocket(sock);</div>=
<div>#else</div><div>=A0 =A0 close(sock);</div><div>#endif</div><div>=A0 =
=A0 fprintf(stderr, &quot;all done\n&quot;);</div><div><br></div><div>=A0 =
=A0 libssh2_exit();</div>

<div><br></div><div>=A0 =A0 return 0;</div><div>}</div></div><div><br></div=
>

--e89a8ff1bffab08c3204ca142c23--

--===============1619912048==
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: inline

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

--===============1619912048==--

From libssh2-devel-bounces@cool.haxx.se  Thu Sep 20 01:55:45 2012
Return-Path: <libssh2-devel-bounces@cool.haxx.se>
Received: from www.haxx.se (localhost.localdomain [127.0.0.1])
	by giant.haxx.se (8.14.4/8.14.4/Debian-2) with ESMTP id q8JNtMZi026771;
	Thu, 20 Sep 2012 01:55:39 +0200
Received: from gator378.hostgator.com (gator378.hostgator.com
 [184.173.199.219])
 by giant.haxx.se (8.14.4/8.14.4/Debian-2) with ESMTP id q8JNtI26026730
 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NOT)
 for <libssh2-devel@cool.haxx.se>; Thu, 20 Sep 2012 01:55:20 +0200
Received: from [184.162.43.87] (port=37530 helo=[192.168.1.107])
 by gator378.hostgator.com with esmtpa (Exim 4.77)
 (envelope-from <maxmtl2002@yahoo.ca>) id 1TEU6x-0002XW-84
 for libssh2-devel@cool.haxx.se; Wed, 19 Sep 2012 18:55:19 -0500
Message-ID: <505A5B66.30207@yahoo.ca>
Date: Wed, 19 Sep 2012 19:55:18 -0400
From: Maxime Larocque <maxmtl2002@yahoo.ca>
User-Agent: Mozilla/5.0 (X11; Linux i686;
 rv:15.0) Gecko/20120827 Thunderbird/15.0
MIME-Version: 1.0
To: libssh2 development <libssh2-devel@cool.haxx.se>
Subject: Re: libssh2_channel_wait_closed(...) issue
References: <CAJ5mg=_o7vskjkpD1Hvw5BsXKcO-HhAyRC7SGPg3Qtux0OCLJw@mail.gmail.com>
In-Reply-To: <CAJ5mg=_o7vskjkpD1Hvw5BsXKcO-HhAyRC7SGPg3Qtux0OCLJw@mail.gmail.com>
X-AntiAbuse: This header was added to track abuse,
 please include it with any abuse report
X-AntiAbuse: Primary Hostname - gator378.hostgator.com
X-AntiAbuse: Original Domain - cool.haxx.se
X-AntiAbuse: Originator/Caller UID/GID - [47 12] / [47 12]
X-AntiAbuse: Sender Address Domain - yahoo.ca
X-BWhitelist: no
X-Source: 
X-Source-Args: 
X-Source-Dir: 
X-Source-Sender: ([192.168.1.107]) [184.162.43.87]:37530
X-Source-Auth: max@weirdows.com
X-Email-Count: 1
X-Source-Cap: bWF4bXRsO21heG10bDtnYXRvcjM3OC5ob3N0Z2F0b3IuY29t
X-BeenThere: libssh2-devel@cool.haxx.se
X-Mailman-Version: 2.1.15
Precedence: list
Reply-To: libssh2 development <libssh2-devel@cool.haxx.se>
List-Id: libssh2 development <libssh2-devel.cool.haxx.se>
List-Unsubscribe: <http://cool.haxx.se/cgi-bin/mailman/options/libssh2-devel>, 
 <mailto:libssh2-devel-request@cool.haxx.se?subject=unsubscribe>
List-Archive: <http://cool.haxx.se/pipermail/libssh2-devel/>
List-Post: <mailto:libssh2-devel@cool.haxx.se>
List-Help: <mailto:libssh2-devel-request@cool.haxx.se?subject=help>
List-Subscribe: <http://cool.haxx.se/cgi-bin/mailman/listinfo/libssh2-devel>, 
 <mailto:libssh2-devel-request@cool.haxx.se?subject=subscribe>
Content-Type: text/plain; charset="iso-8859-1"; 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 quoted-printable to 8bit by giant.haxx.se id q8JNtMZi026771

Hi Chris,

Le 19/09/2012 16:51, Chris Harris a écrit :
> [snip] The problem seem to be that libssh2_channel_wait_closed return 
> 0 before the sshd has finish cleaning up the channel, so an attempt to 
> create another channel at this point results in an error (-21). The 
> reason I think the libssh2_channel_wait_closed is returning too soon 
> is if I add a sleep between my execs the channels are created with out 
> a problem.
>

I had a similar trouble with libssh2 1.4.2, and I submitted a patch to 
correct this:

http://trac.libssh2.org/ticket/245

Under some conditions, libssh2 did not close the channel correctly. I am 
not sure if it applies to your case...


Regards,

Maxime

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

From libssh2-devel-bounces@cool.haxx.se  Thu Sep 20 10:20:31 2012
Return-Path: <libssh2-devel-bounces@cool.haxx.se>
Received: from www.haxx.se (localhost.localdomain [127.0.0.1])
	by giant.haxx.se (8.14.4/8.14.4/Debian-2) with ESMTP id q8K8K7Pq021635;
	Thu, 20 Sep 2012 10:20:24 +0200
Received: from giant.haxx.se (localhost.localdomain [127.0.0.1])
 by giant.haxx.se (8.14.4/8.14.4/Debian-2) with ESMTP id q8K8K6kH021541
 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NOT)
 for <libssh2-devel@cool.haxx.se>; Thu, 20 Sep 2012 10:20:06 +0200
Received: from localhost (dast@localhost)
 by giant.haxx.se (8.14.4/8.14.4/Submit) with ESMTP id q8K8K5JD021526
 for <libssh2-devel@cool.haxx.se>; Thu, 20 Sep 2012 10:20:05 +0200
X-Authentication-Warning: giant.haxx.se: dast owned process doing -bs
Date: Thu, 20 Sep 2012 10:20:05 +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: libssh2_channel_wait_closed(...) issue
In-Reply-To: <505A5B66.30207@yahoo.ca>
Message-ID: <alpine.DEB.2.00.1209201016440.18801@tvnag.unkk.fr>
References: <CAJ5mg=_o7vskjkpD1Hvw5BsXKcO-HhAyRC7SGPg3Qtux0OCLJw@mail.gmail.com>
 <505A5B66.30207@yahoo.ca>
User-Agent: Alpine 2.00 (DEB 1167 2008-08-23)
X-fromdanielhimself: yes
MIME-Version: 1.0
X-BeenThere: libssh2-devel@cool.haxx.se
X-Mailman-Version: 2.1.15
Precedence: list
Reply-To: libssh2 development <libssh2-devel@cool.haxx.se>
List-Id: libssh2 development <libssh2-devel.cool.haxx.se>
List-Unsubscribe: <http://cool.haxx.se/cgi-bin/mailman/options/libssh2-devel>, 
 <mailto:libssh2-devel-request@cool.haxx.se?subject=unsubscribe>
List-Archive: <http://cool.haxx.se/pipermail/libssh2-devel/>
List-Post: <mailto:libssh2-devel@cool.haxx.se>
List-Help: <mailto:libssh2-devel-request@cool.haxx.se?subject=help>
List-Subscribe: <http://cool.haxx.se/cgi-bin/mailman/listinfo/libssh2-devel>, 
 <mailto:libssh2-devel-request@cool.haxx.se?subject=subscribe>
Content-Transfer-Encoding: 7bit
Content-Type: text/plain; charset="us-ascii"; Format="flowed"
Errors-To: libssh2-devel-bounces@cool.haxx.se
Sender: "libssh2-devel" <libssh2-devel-bounces@cool.haxx.se>

On Wed, 19 Sep 2012, Maxime Larocque wrote:

> I had a similar trouble with libssh2 1.4.2, and I submitted a patch to 
> correct this:
>
> http://trac.libssh2.org/ticket/245
>
> Under some conditions, libssh2 did not close the channel correctly. I am not 
> sure if it applies to your case...

Thanks for pointing out this potential fix! Chris, let us know if it changes 
anything for you. I gave libssh2_channel_wait_closed() a quick glance 
yesterday and I couldn't spot anything really wrong standing out so it will 
take some proper digging to debug this more.

I figure it goes without saying, but I'll state it anyway:

We are only a few people actually involved in this project. Those of us who 
have push rights to git will HUGELY appreciate your feedback, comments and 
additional tests of patches and bug reports as provided. That helps us merge 
things into git and future releases with more confidence and speed.

-- 

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

From libssh2-devel-bounces@cool.haxx.se  Thu Sep 20 16:07:21 2012
Return-Path: <libssh2-devel-bounces@cool.haxx.se>
Received: from www.haxx.se (localhost.localdomain [127.0.0.1])
	by giant.haxx.se (8.14.4/8.14.4/Debian-2) with ESMTP id q8KE6sqF001893;
	Thu, 20 Sep 2012 16:07:15 +0200
Received: from na3sys009aog118.obsmtp.com (na3sys009aog118.obsmtp.com
 [74.125.149.244])
 by giant.haxx.se (8.14.4/8.14.4/Debian-2) with SMTP id q8KE6psF001867
 for <libssh2-devel@cool.haxx.se>; Thu, 20 Sep 2012 16:06:52 +0200
Received: from mail-pb0-f54.google.com ([209.85.160.54]) (using TLSv1) by
 na3sys009aob118.postini.com ([74.125.148.12]) with SMTP
 ID DSNKUFsi+5Qh5ZBVwqV2jGzLjVEViKNQgqSs@postini.com;
 Thu, 20 Sep 2012 07:06:54 PDT
Received: by pbbrp2 with SMTP id rp2so5085494pbb.41
 for <libssh2-devel@cool.haxx.se>; Thu, 20 Sep 2012 07:06:51 -0700 (PDT)
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=google.com; s=20120113;
 h=mime-version:in-reply-to:references:date:message-id:subject:from:to
 :content-type:x-gm-message-state;
 bh=oHu+1B5j/fX2SETMEbRgbI8pHdxOwb5g2CwfSSmniy0=;
 b=GdkBAMYO4V4vov6K2E+Myir4U2tbKPJupxkVdyBqbLakbiDcC8bTXx2A6bTnLEXxlu
 3twXGrROkv4UMP6Jtcioi0AVPaC6mPCy6TY7JJmBOYcJCR/eEHk7Wak1EGT6knesYBbO
 ZVP3RpmSswQBoI9CrIwoDNU7BxSCyiqvlDkmhM9OxJuL525p5dtUWdmVfZ37IEf/UdwD
 WbZSmI51JRFTLEW5T7jZhBW4EGy2drqkhUfsVjwykIehxzF7HPDrRh2XlQCJRorCtCT3
 EMUGEHzrWIKmvrDdh3+0Z5dSP6k+rk877rqXjk/JLW14Z67H2IcfSkPGIkU7gg9oboXJ
 2F2g==
MIME-Version: 1.0
Received: by 10.66.74.196 with SMTP id w4mr5617135pav.32.1348150011190; Thu,
 20 Sep 2012 07:06:51 -0700 (PDT)
Received: by 10.66.253.103 with HTTP; Thu, 20 Sep 2012 07:06:51 -0700 (PDT)
In-Reply-To: <alpine.DEB.2.00.1209201016440.18801@tvnag.unkk.fr>
References: <CAJ5mg=_o7vskjkpD1Hvw5BsXKcO-HhAyRC7SGPg3Qtux0OCLJw@mail.gmail.com>
 <505A5B66.30207@yahoo.ca>
 <alpine.DEB.2.00.1209201016440.18801@tvnag.unkk.fr>
Date: Thu, 20 Sep 2012 10:06:51 -0400
Message-ID: <CAJ5mg=8J6-fRAt17ZWyw1fehEAqWSRwMu9AfAgPxuSGTw2YWAg@mail.gmail.com>
Subject: Re: libssh2_channel_wait_closed(...) issue
From: Chris Harris <chris.harris@kitware.com>
To: libssh2 development <libssh2-devel@cool.haxx.se>
X-Gm-Message-State: ALoCoQl/NAXJZCewkNve399kGMxehk4GTrdLsZAP6H8vx2DxuFd0zQaj+5jEFsqAYq1IYNmYAg0y
X-BeenThere: libssh2-devel@cool.haxx.se
X-Mailman-Version: 2.1.15
Precedence: list
Reply-To: libssh2 development <libssh2-devel@cool.haxx.se>
List-Id: libssh2 development <libssh2-devel.cool.haxx.se>
List-Unsubscribe: <http://cool.haxx.se/cgi-bin/mailman/options/libssh2-devel>, 
 <mailto:libssh2-devel-request@cool.haxx.se?subject=unsubscribe>
List-Archive: <http://cool.haxx.se/pipermail/libssh2-devel/>
List-Post: <mailto:libssh2-devel@cool.haxx.se>
List-Help: <mailto:libssh2-devel-request@cool.haxx.se?subject=help>
List-Subscribe: <http://cool.haxx.se/cgi-bin/mailman/listinfo/libssh2-devel>, 
 <mailto:libssh2-devel-request@cool.haxx.se?subject=subscribe>
Content-Type: multipart/mixed; boundary="===============0035426993=="
Errors-To: libssh2-devel-bounces@cool.haxx.se
Sender: "libssh2-devel" <libssh2-devel-bounces@cool.haxx.se>

--===============0035426993==
Content-Type: multipart/alternative; boundary=f46d042f9492855da604ca22a2f1

--f46d042f9492855da604ca22a2f1
Content-Type: text/plain; charset=ISO-8859-1

Maxime & Daniel,

Thanks very much for the quick response. I tried the patch, but sadly it
has no effect in this situation. Let me know if there is more information I
can provide to help. If I get some time today I will start taking a look at
the code myself as well.

Regards,

Chris

On Thu, Sep 20, 2012 at 4:20 AM, Daniel Stenberg <daniel@haxx.se> wrote:

> On Wed, 19 Sep 2012, Maxime Larocque wrote:
>
>  I had a similar trouble with libssh2 1.4.2, and I submitted a patch to
>> correct this:
>>
>> http://trac.libssh2.org/**ticket/245 <http://trac.libssh2.org/ticket/245>
>>
>> Under some conditions, libssh2 did not close the channel correctly. I am
>> not sure if it applies to your case...
>>
>
> Thanks for pointing out this potential fix! Chris, let us know if it
> changes anything for you. I gave libssh2_channel_wait_closed() a quick
> glance yesterday and I couldn't spot anything really wrong standing out so
> it will take some proper digging to debug this more.
>
> I figure it goes without saying, but I'll state it anyway:
>
> We are only a few people actually involved in this project. Those of us
> who have push rights to git will HUGELY appreciate your feedback, comments
> and additional tests of patches and bug reports as provided. That helps us
> merge things into git and future releases with more confidence and speed.
>
> --
>
>  / daniel.haxx.se
> ______________________________**_________________
> libssh2-devel http://cool.haxx.se/cgi-bin/**mailman/listinfo/libssh2-devel<http://cool.haxx.se/cgi-bin/mailman/listinfo/libssh2-devel>
>

--f46d042f9492855da604ca22a2f1
Content-Type: text/html; charset=ISO-8859-1
Content-Transfer-Encoding: quoted-printable

<span style=3D"color:rgb(34,34,34);font-family:arial,sans-serif;font-size:1=
3px;background-color:rgb(255,255,255)">Maxime &amp;=A0</span>Daniel,<div><b=
r></div><div>Thanks very much for the quick response. I tried the patch, bu=
t sadly it has no effect in this situation. Let me know if there is more in=
formation I can provide to help. If I get some time today I will start taki=
ng a look at the code myself as well.</div>
<div><br></div><div>Regards,=A0</div><div><br></div><div>Chris<br><br><div =
class=3D"gmail_quote">On Thu, Sep 20, 2012 at 4:20 AM, Daniel Stenberg <spa=
n dir=3D"ltr">&lt;<a href=3D"mailto:daniel@haxx.se" target=3D"_blank">danie=
l@haxx.se</a>&gt;</span> wrote:<br>
<blockquote class=3D"gmail_quote" style=3D"margin:0 0 0 .8ex;border-left:1p=
x #ccc solid;padding-left:1ex"><div class=3D"im">On Wed, 19 Sep 2012, Maxim=
e Larocque wrote:<br>
<br>
<blockquote class=3D"gmail_quote" style=3D"margin:0 0 0 .8ex;border-left:1p=
x #ccc solid;padding-left:1ex">
I had a similar trouble with libssh2 1.4.2, and I submitted a patch to corr=
ect this:<br>
<br>
<a href=3D"http://trac.libssh2.org/ticket/245" target=3D"_blank">http://tra=
c.libssh2.org/<u></u>ticket/245</a><br>
<br>
Under some conditions, libssh2 did not close the channel correctly. I am no=
t sure if it applies to your case...<br>
</blockquote>
<br></div>
Thanks for pointing out this potential fix! Chris, let us know if it change=
s anything for you. I gave libssh2_channel_wait_closed() a quick glance yes=
terday and I couldn&#39;t spot anything really wrong standing out so it wil=
l take some proper digging to debug this more.<br>

<br>
I figure it goes without saying, but I&#39;ll state it anyway:<br>
<br>
We are only a few people actually involved in this project. Those of us who=
 have push rights to git will HUGELY appreciate your feedback, comments and=
 additional tests of patches and bug reports as provided. That helps us mer=
ge things into git and future releases with more confidence and speed.<span=
 class=3D"HOEnZb"><font color=3D"#888888"><br>

<br>
-- <br>
<br>
=A0/ <a href=3D"http://daniel.haxx.se" target=3D"_blank">daniel.haxx.se</a>=
<br>
______________________________<u></u>_________________<br>
libssh2-devel <a href=3D"http://cool.haxx.se/cgi-bin/mailman/listinfo/libss=
h2-devel" target=3D"_blank">http://cool.haxx.se/cgi-bin/<u></u>mailman/list=
info/libssh2-devel</a><br>
</font></span></blockquote></div><br></div>

--f46d042f9492855da604ca22a2f1--

--===============0035426993==
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: inline

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

--===============0035426993==--

From libssh2-devel-bounces@cool.haxx.se  Fri Sep 21 16:11:44 2012
Return-Path: <libssh2-devel-bounces@cool.haxx.se>
Received: from www.haxx.se (localhost.localdomain [127.0.0.1])
	by giant.haxx.se (8.14.4/8.14.4/Debian-2) with ESMTP id q8LEAnGJ027707;
	Fri, 21 Sep 2012 16:11:34 +0200
Received: from mail-pa0-f54.google.com (mail-pa0-f54.google.com
 [209.85.220.54])
 by giant.haxx.se (8.14.4/8.14.4/Debian-2) with ESMTP id q8LEAki6027643
 (version=TLSv1/SSLv3 cipher=RC4-SHA bits=128 verify=NOT)
 for <libssh2-devel@cool.haxx.se>; Fri, 21 Sep 2012 16:10:47 +0200
Received: by padbi1 with SMTP id bi1so421094pad.41
 for <libssh2-devel@cool.haxx.se>; Fri, 21 Sep 2012 07:10:40 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113;
 h=mime-version:date:message-id:subject:from:to:content-type;
 bh=EL3awIoe89yOZJ8KV2JH76DIZKWB9QXIdb4fIMHahZI=;
 b=bAlnK+hY100SWN/q0hiuHONEErFkfkjBPb+/bWeP3lj2PPRDFeEMXxbyTRB9fNoTwY
 YT0Hxq0QriqKJuve//fyJP4BPep6nKK3T9iQvXEYJfQ/rKTrnVNJwhKoreIP2Z+M+pxE
 abDJsPDhb0pngsc8B23CClJfHCtg6ny9JOngZ8oIeBkvydTsXF/FKywap703e91uMD5L
 4yFI71Z0npdwadBAj4Mng2eXuHaag1F3TB64vGERjv8GaBe4Dnib3X11p81FrUcnOV+z
 Vnz/G3sb13KchbrB6jMnqYDKrXpIN46+xv1kGOqwGaWEAHPCrIwT6h5gfaKQAyqEbSBO
 FvKQ==
MIME-Version: 1.0
Received: by 10.68.224.71 with SMTP id ra7mr15744976pbc.154.1348236640057;
 Fri, 21 Sep 2012 07:10:40 -0700 (PDT)
Received: by 10.68.191.193 with HTTP; Fri, 21 Sep 2012 07:10:40 -0700 (PDT)
Date: Fri, 21 Sep 2012 16:10:40 +0200
Message-ID: <CANKx_q=c+R49PY87m5JaZnjLGugFqvA4B5SLECKNV5NMM9zZsA@mail.gmail.com>
Subject: Direct tcp ip channel - session handshake
From: Jiri <werwolfthron@gmail.com>
To: libssh2-devel@cool.haxx.se
X-BeenThere: libssh2-devel@cool.haxx.se
X-Mailman-Version: 2.1.15
Precedence: list
Reply-To: libssh2 development <libssh2-devel@cool.haxx.se>
List-Id: libssh2 development <libssh2-devel.cool.haxx.se>
List-Unsubscribe: <http://cool.haxx.se/cgi-bin/mailman/options/libssh2-devel>, 
 <mailto:libssh2-devel-request@cool.haxx.se?subject=unsubscribe>
List-Archive: <http://cool.haxx.se/pipermail/libssh2-devel/>
List-Post: <mailto:libssh2-devel@cool.haxx.se>
List-Help: <mailto:libssh2-devel-request@cool.haxx.se?subject=help>
List-Subscribe: <http://cool.haxx.se/cgi-bin/mailman/listinfo/libssh2-devel>, 
 <mailto:libssh2-devel-request@cool.haxx.se?subject=subscribe>
Content-Type: multipart/mixed; boundary="===============1816336357=="
Errors-To: libssh2-devel-bounces@cool.haxx.se
Sender: "libssh2-devel" <libssh2-devel-bounces@cool.haxx.se>

--===============1816336357==
Content-Type: multipart/alternative; boundary=047d7b16021300f7cf04ca36ce18

--047d7b16021300f7cf04ca36ce18
Content-Type: text/plain; charset=ISO-8859-1

Hi, I am a beginner in network programming and now I have problem with
using direct tcp channel.
Using direct_tcp_example is everything working good and I'm able to connect
with ssh shell to remote server. The same is when using threads  in
application code - in the first thread application wait to connection, in
the second thread, new connection to localhost and local_listenport
(something like at direct_tcpip example), new session, handshake and
authentification - everything is OK.

Problem is when listensocket is set to nonblocking mode. Direct channel is
created, nonblocking mode set on session and connection is realized on
localhost. In this case socket is connected
on redirected port, but handshake returns -37 (LIBSSH2_ERROR_EAGAIN). In
this new session is set nonblocking mode.
Is it somehow possible to realize connection to 3rd party host without
using threads or somethink like that? Thanks a lot!

Example code:
...
forwardsock = accept(listensock, (struct sockaddr *)&sin, &sinlen);  //now
is listensock in nonblocking mode
con->channel = libssh2_channel_direct_tcpip_ex(con->session,
remote_desthost,remote_destport, shost, sport);

if (!con->channel) {  fprintf(stderr, "Could not open the direct-tcpip
channel!\n");}

libssh2_session_set_blocking(con->session, 0);

//channel is ready and now I trying connect to localhost
struct conn c1; //own structure
c1.hostname = "127.0.0.1";
c1.username = "root";
c1.password = "password";
c1.port = 2222; //local listenport
c1.session = NULL;
c1.sftp_session = NULL;
c1.sftp_alive = 1;

struct conn *st1 = &c1;

init_sock(st1); //new socket
init_session(st1); //new session
libssh2_session_set_blocking(st1->session, 0);

// all works fine but this method return -37
x = libssh2_session_handshake(st1->session, st1->socket);
printf("handshake %i\n", x);

--047d7b16021300f7cf04ca36ce18
Content-Type: text/html; charset=ISO-8859-1
Content-Transfer-Encoding: quoted-printable

<div>Hi, I am a beginner in network programming and now I have problem with=
 using direct tcp channel.</div>Using direct_tcp_example is everything work=
ing good and I&#39;m able to connect with ssh shell to remote server. The s=
ame is when using threads =A0in application code - in the first thread appl=
ication wait to connection, in the second thread, new connection to localho=
st and local_listenport (something like at direct_tcpip example), new sessi=
on, handshake and authentification - everything is OK.<div>
<br></div><div>Problem is when listensocket is set to nonblocking mode. Dir=
ect channel is created, nonblocking mode set on session and connection is r=
ealized on localhost. In this case socket is connected<br>on redirected por=
t, but handshake returns -37 (LIBSSH2_ERROR_EAGAIN). In this new session is=
 set nonblocking mode.<br>
Is it somehow possible to realize connection to 3rd party host without usin=
g threads or somethink like that? Thanks a lot!</div><div><br></div><div>Ex=
ample code:</div><div>...<br><div>forwardsock =3D accept(listensock, (struc=
t sockaddr *)&amp;sin, &amp;sinlen); =A0//now is listensock in nonblocking =
mode</div>
<div>con-&gt;channel =3D libssh2_channel_direct_tcpip_ex(con-&gt;session, r=
emote_desthost,remote_destport, shost, sport);</div><div><br></div><div>if =
(!con-&gt;channel) {=A0 fprintf(stderr, &quot;Could not open the direct-tcp=
ip channel!\n&quot;);}</div>
<div><br></div><div>libssh2_session_set_blocking(con-&gt;session, 0);</div>=
<div><br></div><div>//channel is ready and now I trying connect to localhos=
t</div><div>struct conn c1; //own structure</div><div>c1.hostname =3D &quot=
;127.0.0.1&quot;;</div>
<div>c1.username =3D &quot;root&quot;;</div><div>c1.password =3D &quot;pass=
word&quot;;</div><div>c1.port =3D 2222; //local listenport</div><div>c1.ses=
sion =3D NULL;</div><div>c1.sftp_session =3D NULL;</div><div>c1.sftp_alive =
=3D 1;</div>
<div><br></div><div>struct conn *st1 =3D &amp;c1;</div><div><br></div><div>=
init_sock(st1);=A0//new socket</div><div>init_session(st1);=A0//new session=
</div><div>libssh2_session_set_blocking(st1-&gt;session, 0);</div><div><br>=
</div>
<div>// all works fine but this method return -37</div><div>x =3D libssh2_s=
ession_handshake(st1-&gt;session, st1-&gt;socket);</div><div>printf(&quot;h=
andshake %i\n&quot;, x);</div></div>

--047d7b16021300f7cf04ca36ce18--

--===============1816336357==
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: inline

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

--===============1816336357==--

From libssh2-devel-bounces@cool.haxx.se  Fri Sep 21 16:40:44 2012
Return-Path: <libssh2-devel-bounces@cool.haxx.se>
Received: from www.haxx.se (localhost.localdomain [127.0.0.1])
	by giant.haxx.se (8.14.4/8.14.4/Debian-2) with ESMTP id q8LEeae6014118;
	Fri, 21 Sep 2012 16:40:42 +0200
Received: from foo.stuge.se (qmailr@foo.stuge.se [212.116.89.98])
 by giant.haxx.se (8.14.4/8.14.4/Debian-2) with SMTP id q8LEeYqh014104
 for <libssh2-devel@cool.haxx.se>; Fri, 21 Sep 2012 16:40:34 +0200
Received: (qmail 23486 invoked by uid 501); 21 Sep 2012 14:40:35 -0000
Message-ID: <20120921144035.23485.qmail@stuge.se>
Date: Fri, 21 Sep 2012 16:40:35 +0200
From: Peter Stuge <peter@stuge.se>
To: libssh2-devel@cool.haxx.se
Subject: Re: Direct tcp ip channel - session handshake
Mail-Followup-To: libssh2-devel@cool.haxx.se
References: <CANKx_q=c+R49PY87m5JaZnjLGugFqvA4B5SLECKNV5NMM9zZsA@mail.gmail.com>
MIME-Version: 1.0
Content-Disposition: inline
In-Reply-To: <CANKx_q=c+R49PY87m5JaZnjLGugFqvA4B5SLECKNV5NMM9zZsA@mail.gmail.com>
X-BeenThere: libssh2-devel@cool.haxx.se
X-Mailman-Version: 2.1.15
Precedence: list
Reply-To: libssh2 development <libssh2-devel@cool.haxx.se>
List-Id: libssh2 development <libssh2-devel.cool.haxx.se>
List-Unsubscribe: <http://cool.haxx.se/cgi-bin/mailman/options/libssh2-devel>, 
 <mailto:libssh2-devel-request@cool.haxx.se?subject=unsubscribe>
List-Archive: <http://cool.haxx.se/pipermail/libssh2-devel/>
List-Post: <mailto:libssh2-devel@cool.haxx.se>
List-Help: <mailto:libssh2-devel-request@cool.haxx.se?subject=help>
List-Subscribe: <http://cool.haxx.se/cgi-bin/mailman/listinfo/libssh2-devel>, 
 <mailto:libssh2-devel-request@cool.haxx.se?subject=subscribe>
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Errors-To: libssh2-devel-bounces@cool.haxx.se
Sender: "libssh2-devel" <libssh2-devel-bounces@cool.haxx.se>

Jiri wrote:
> Using direct_tcp_example is everything working good and I'm able to
> connect with ssh shell to remote server.
..
> Is it somehow possible to realize connection to 3rd party host
> without using threads or somethink like that? Thanks a lot!

It's not clear if example/direct_tcpip.c does what you want to do.

Studay that code until you understand how it works, feel free to ask
questions if there is something you can not find yourself, and once
you understand how it works reuse it or write something similar in
your own application.

What is your question exactly?


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

From libssh2-devel-bounces@cool.haxx.se  Fri Sep 21 16:58:38 2012
Return-Path: <libssh2-devel-bounces@cool.haxx.se>
Received: from www.haxx.se (localhost.localdomain [127.0.0.1])
	by giant.haxx.se (8.14.4/8.14.4/Debian-2) with ESMTP id q8LEwVcv025229;
	Fri, 21 Sep 2012 16:58:36 +0200
Received: from gator378.hostgator.com (gator378.hostgator.com
 [184.173.199.219])
 by giant.haxx.se (8.14.4/8.14.4/Debian-2) with ESMTP id q8LEwSWo025205
 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NOT)
 for <libssh2-devel@cool.haxx.se>; Fri, 21 Sep 2012 16:58:29 +0200
Received: from [173.231.110.50] (port=42562 helo=[192.168.10.210])
 by gator378.hostgator.com with esmtpa (Exim 4.77)
 (envelope-from <maxmtl2002@yahoo.ca>) id 1TF4gW-0007Fr-VA
 for libssh2-devel@cool.haxx.se; Fri, 21 Sep 2012 09:58:29 -0500
Message-ID: <505C8094.4080708@yahoo.ca>
Date: Fri, 21 Sep 2012 10:58:28 -0400
From: Maxime Larocque <maxmtl2002@yahoo.ca>
User-Agent: Mozilla/5.0 (X11; Linux i686;
 rv:15.0) Gecko/20120827 Thunderbird/15.0
MIME-Version: 1.0
To: libssh2 development <libssh2-devel@cool.haxx.se>
Subject: Re: Direct tcp ip channel - session handshake
References: <CANKx_q=c+R49PY87m5JaZnjLGugFqvA4B5SLECKNV5NMM9zZsA@mail.gmail.com>
In-Reply-To: <CANKx_q=c+R49PY87m5JaZnjLGugFqvA4B5SLECKNV5NMM9zZsA@mail.gmail.com>
X-AntiAbuse: This header was added to track abuse,
 please include it with any abuse report
X-AntiAbuse: Primary Hostname - gator378.hostgator.com
X-AntiAbuse: Original Domain - cool.haxx.se
X-AntiAbuse: Originator/Caller UID/GID - [47 12] / [47 12]
X-AntiAbuse: Sender Address Domain - yahoo.ca
X-BWhitelist: no
X-Source: 
X-Source-Args: 
X-Source-Dir: 
X-Source-Sender: ([192.168.10.210]) [173.231.110.50]:42562
X-Source-Auth: max@weirdows.com
X-Email-Count: 2
X-Source-Cap: bWF4bXRsO21heG10bDtnYXRvcjM3OC5ob3N0Z2F0b3IuY29t
X-BeenThere: libssh2-devel@cool.haxx.se
X-Mailman-Version: 2.1.15
Precedence: list
Reply-To: libssh2 development <libssh2-devel@cool.haxx.se>
List-Id: libssh2 development <libssh2-devel.cool.haxx.se>
List-Unsubscribe: <http://cool.haxx.se/cgi-bin/mailman/options/libssh2-devel>, 
 <mailto:libssh2-devel-request@cool.haxx.se?subject=unsubscribe>
List-Archive: <http://cool.haxx.se/pipermail/libssh2-devel/>
List-Post: <mailto:libssh2-devel@cool.haxx.se>
List-Help: <mailto:libssh2-devel-request@cool.haxx.se?subject=help>
List-Subscribe: <http://cool.haxx.se/cgi-bin/mailman/listinfo/libssh2-devel>, 
 <mailto:libssh2-devel-request@cool.haxx.se?subject=subscribe>
Content-Type: text/plain; charset="iso-8859-1"; 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 quoted-printable to 8bit by giant.haxx.se id q8LEwVcv025229

Hello Jiri,

Le 21/09/2012 10:10, Jiri a écrit :
> Hi, I am a beginner in network programming and now I have problem with 
> using direct tcp channel.
> Using direct_tcp_example is everything working good and I'm able to 
> connect with ssh shell to remote server. The same is when using 
> threads  in application code - in the first thread application wait to 
> connection, in the second thread, new connection to localhost and 
> local_listenport (something like at direct_tcpip example), new 
> session, handshake and authentification - everything is OK.
>

Make sure that you don't share the sessions or channel between thread - 
only access libssh2 structure from a single thread. Yes, it will seem to 
work right until the system is delivered, and then crash for unknown 
reasons :-).

> Problem is when listensocket is set to nonblocking mode. Direct 
> channel is created, nonblocking mode set on session and connection is 
> realized on localhost. In this case socket is connected
> on redirected port, but handshake returns -37 (LIBSSH2_ERROR_EAGAIN). 
> In this new session is set nonblocking mode.
> Is it somehow possible to realize connection to 3rd party host without 
> using threads or somethink like that? Thanks a lot!
>

LIBSSH2_ERROR_EAGAIN means that no data is available right now (waiting 
for remote or tx socket full...). You should call it again when there is 
some activity on the socket (using select or poll or...). In 
non-blocking mode, a lot of libssh2 function can produce 
LIBSSH2_ERROR_EAGAIN...

Instead of using thread you should use a single select to wait for all 
events (local_listenport and ssh socket...). That is a pretty common 
networking software behaviour.


As Peter said, study the code...

Maxime

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

From libssh2-devel-bounces@cool.haxx.se  Sun Sep 23 14:44:17 2012
Return-Path: <libssh2-devel-bounces@cool.haxx.se>
Received: from www.haxx.se (localhost.localdomain [127.0.0.1])
	by giant.haxx.se (8.14.4/8.14.4/Debian-2) with ESMTP id q8NChhZq011755;
	Sun, 23 Sep 2012 14:44:09 +0200
Received: from mail-da0-f54.google.com (mail-da0-f54.google.com
 [209.85.210.54])
 by giant.haxx.se (8.14.4/8.14.4/Debian-2) with ESMTP id q8NCheMf011662
 (version=TLSv1/SSLv3 cipher=RC4-SHA bits=128 verify=NOT)
 for <libssh2-devel@cool.haxx.se>; Sun, 23 Sep 2012 14:43:41 +0200
Received: by dadz9 with SMTP id z9so52407dad.41
 for <libssh2-devel@cool.haxx.se>; Sun, 23 Sep 2012 05:43:34 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113;
 h=mime-version:in-reply-to:references:date:message-id:subject:from:to
 :content-type; bh=i0LuCCdIuNGtLkFNODYtvufesrU4jRZabDt1gr39qY8=;
 b=vUUE4NBtA2jr6fKfleOBccnWXXWf+acgPbmFaQ8/Yzqs9rN8G0dtlT2JthlAvhei0z
 WK3kiN+zSush6Nhs34QIfB2P6KjQMhLkKIGwL0XnHzJSttldQeeXuNtNdoFXDnDsI4C2
 C/lNncHXORW/Adxex1o6qe+/UacrWPOl0Eifi/2se8qiRq9y7qEH/dCTqlOALDpB1gb+
 dja1r0/3Ad22ab4xuZaEQYfgHcc9n4tfl3oLUvCWVYRxL/qdCGYXQwQQIOPi0w2puhzd
 sH5waM+GwX7Lp/MYa7j5o0RyeohXX3VTfELrANT/V0Mt6D5pha8xrVXaDdjxVrcxVJBx
 GMSw==
MIME-Version: 1.0
Received: by 10.66.83.33 with SMTP id n1mr25644676pay.66.1348404213960; Sun,
 23 Sep 2012 05:43:33 -0700 (PDT)
Received: by 10.68.191.193 with HTTP; Sun, 23 Sep 2012 05:43:33 -0700 (PDT)
In-Reply-To: <20120921144035.23485.qmail@stuge.se>
References: <CANKx_q=c+R49PY87m5JaZnjLGugFqvA4B5SLECKNV5NMM9zZsA@mail.gmail.com>
 <20120921144035.23485.qmail@stuge.se>
Date: Sun, 23 Sep 2012 14:43:33 +0200
Message-ID: <CANKx_qkuUqNAdgCJu4ENS-1axibsvx1PqC5mf59XEOe=w5pWuA@mail.gmail.com>
Subject: Re: Direct tcp ip channel - session handshake
From: Jiri <werwolfthron@gmail.com>
To: libssh2 development <libssh2-devel@cool.haxx.se>
X-BeenThere: libssh2-devel@cool.haxx.se
X-Mailman-Version: 2.1.15
Precedence: list
Reply-To: libssh2 development <libssh2-devel@cool.haxx.se>
List-Id: libssh2 development <libssh2-devel.cool.haxx.se>
List-Unsubscribe: <http://cool.haxx.se/cgi-bin/mailman/options/libssh2-devel>, 
 <mailto:libssh2-devel-request@cool.haxx.se?subject=unsubscribe>
List-Archive: <http://cool.haxx.se/pipermail/libssh2-devel/>
List-Post: <mailto:libssh2-devel@cool.haxx.se>
List-Help: <mailto:libssh2-devel-request@cool.haxx.se?subject=help>
List-Subscribe: <http://cool.haxx.se/cgi-bin/mailman/listinfo/libssh2-devel>, 
 <mailto:libssh2-devel-request@cool.haxx.se?subject=subscribe>
Content-Type: multipart/mixed; boundary="===============1436723058=="
Errors-To: libssh2-devel-bounces@cool.haxx.se
Sender: "libssh2-devel" <libssh2-devel-bounces@cool.haxx.se>

--===============1436723058==
Content-Type: multipart/alternative; boundary=f46d042ef4752fcfb304ca5dd225

--f46d042ef4752fcfb304ca5dd225
Content-Type: text/plain; charset=ISO-8859-1

> What is your question exactly?

My goal is to connect to the PublicHost and from there to the InternalHost
- thus creating a connection to the host in a local network while working
with it as during the connection to a public server. I have created a
connection to the PublicHost, there listensocket (set to a non-blocking
mode) and direct tcp channel were established. Then
I create connection to the "localhost" with a redirected port - socket is
created as well as the session but the program stops during handshake. I
would like to know if there is any general procedure of
how to achieve this using libssh2.

--f46d042ef4752fcfb304ca5dd225
Content-Type: text/html; charset=ISO-8859-1
Content-Transfer-Encoding: quoted-printable

<div class=3D"im">&gt;=A0What is your question exactly?</div><div class=3D"=
im"><br></div><span style=3D"color:rgb(34,34,34);font-family:arial,sans-ser=
if;font-size:13px;background-color:rgb(255,255,255)">My goal is to connect =
to the PublicHost and from there to the=A0</span><span style=3D"color:rgb(3=
4,34,34);font-family:arial,sans-serif;font-size:13px;background-color:rgb(2=
55,255,255)">InternalHost - thus creating a connection to the host in a loc=
al network=A0</span><span style=3D"color:rgb(34,34,34);font-family:arial,sa=
ns-serif;font-size:13px;background-color:rgb(255,255,255)">while working wi=
th it as during the connection to a public server. I=A0</span><span style=
=3D"color:rgb(34,34,34);font-family:arial,sans-serif;font-size:13px;backgro=
und-color:rgb(255,255,255)">have created a connection to the PublicHost, th=
ere listensocket (set=A0</span><span style=3D"color:rgb(34,34,34);font-fami=
ly:arial,sans-serif;font-size:13px;background-color:rgb(255,255,255)">to a =
non-blocking mode) and direct tcp channel were established. Then</span><br =
style=3D"color:rgb(34,34,34);font-family:arial,sans-serif;font-size:13px;ba=
ckground-color:rgb(255,255,255)">
<span style=3D"color:rgb(34,34,34);font-family:arial,sans-serif;font-size:1=
3px;background-color:rgb(255,255,255)">I create connection to the &quot;loc=
alhost&quot; with a redirected port - socket=A0</span><span style=3D"color:=
rgb(34,34,34);font-family:arial,sans-serif;font-size:13px;background-color:=
rgb(255,255,255)">is created as well as the session but the program stops d=
uring=A0</span><span style=3D"color:rgb(34,34,34);font-family:arial,sans-se=
rif;font-size:13px;background-color:rgb(255,255,255)">handshake. I would li=
ke to know if there is any general procedure of</span><br style=3D"color:rg=
b(34,34,34);font-family:arial,sans-serif;font-size:13px;background-color:rg=
b(255,255,255)">
<span style=3D"color:rgb(34,34,34);font-family:arial,sans-serif;font-size:1=
3px;background-color:rgb(255,255,255)">how to achieve this using libssh2.</=
span><br><div class=3D"gmail_quote"><br></div><br>

--f46d042ef4752fcfb304ca5dd225--

--===============1436723058==
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: inline

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

--===============1436723058==--

From libssh2-devel-bounces@cool.haxx.se  Sun Sep 23 15:09:51 2012
Return-Path: <libssh2-devel-bounces@cool.haxx.se>
Received: from www.haxx.se (localhost.localdomain [127.0.0.1])
	by giant.haxx.se (8.14.4/8.14.4/Debian-2) with ESMTP id q8ND9iex016834;
	Sun, 23 Sep 2012 15:09:50 +0200
Received: from foo.stuge.se (qmailr@foo.stuge.se [212.116.89.98])
 by giant.haxx.se (8.14.4/8.14.4/Debian-2) with SMTP id q8ND9gur016825
 for <libssh2-devel@cool.haxx.se>; Sun, 23 Sep 2012 15:09:43 +0200
Received: (qmail 8395 invoked by uid 501); 23 Sep 2012 13:09:43 -0000
Message-ID: <20120923130943.8394.qmail@stuge.se>
Date: Sun, 23 Sep 2012 15:09:43 +0200
From: Peter Stuge <peter@stuge.se>
To: libssh2-devel@cool.haxx.se
Subject: Re: Direct tcp ip channel - session handshake
Mail-Followup-To: libssh2-devel@cool.haxx.se
References: <CANKx_q=c+R49PY87m5JaZnjLGugFqvA4B5SLECKNV5NMM9zZsA@mail.gmail.com>
 <20120921144035.23485.qmail@stuge.se>
 <CANKx_qkuUqNAdgCJu4ENS-1axibsvx1PqC5mf59XEOe=w5pWuA@mail.gmail.com>
MIME-Version: 1.0
Content-Disposition: inline
In-Reply-To: <CANKx_qkuUqNAdgCJu4ENS-1axibsvx1PqC5mf59XEOe=w5pWuA@mail.gmail.com>
X-BeenThere: libssh2-devel@cool.haxx.se
X-Mailman-Version: 2.1.15
Precedence: list
Reply-To: libssh2 development <libssh2-devel@cool.haxx.se>
List-Id: libssh2 development <libssh2-devel.cool.haxx.se>
List-Unsubscribe: <http://cool.haxx.se/cgi-bin/mailman/options/libssh2-devel>, 
 <mailto:libssh2-devel-request@cool.haxx.se?subject=unsubscribe>
List-Archive: <http://cool.haxx.se/pipermail/libssh2-devel/>
List-Post: <mailto:libssh2-devel@cool.haxx.se>
List-Help: <mailto:libssh2-devel-request@cool.haxx.se?subject=help>
List-Subscribe: <http://cool.haxx.se/cgi-bin/mailman/listinfo/libssh2-devel>, 
 <mailto:libssh2-devel-request@cool.haxx.se?subject=subscribe>
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Errors-To: libssh2-devel-bounces@cool.haxx.se
Sender: "libssh2-devel" <libssh2-devel-bounces@cool.haxx.se>

Jiri wrote:
> > What is your question exactly?
> 
> My goal is to connect to the PublicHost and from there to the InternalHost
> - thus creating a connection to the host in a local network while working
> with it as during the connection to a public server. I have created a
> connection to the PublicHost, there listensocket (set to a non-blocking
> mode) and direct tcp channel were established. Then
> I create connection to the "localhost" with a redirected port
> created as well as the session

You must have two sessions of course. You haven't posted code so I
don't know, it's not clear from your explanation.


> but the program stops during handshake.

Then you are simply not correctly passing data across the three
connections that your application has open.


> I would like to know if there is any general procedure of
> how to achieve this using libssh2.

The direct_tcpip example is as close as you get. It shows what you
need to do.


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

From libssh2-devel-bounces@cool.haxx.se  Sun Sep 23 16:43:48 2012
Return-Path: <libssh2-devel-bounces@cool.haxx.se>
Received: from www.haxx.se (localhost.localdomain [127.0.0.1])
	by giant.haxx.se (8.14.4/8.14.4/Debian-2) with ESMTP id q8NEhZOI016356;
	Sun, 23 Sep 2012 16:43:45 +0200
Received: from mail-pb0-f54.google.com (mail-pb0-f54.google.com
 [209.85.160.54])
 by giant.haxx.se (8.14.4/8.14.4/Debian-2) with ESMTP id q8NEhXIE016293
 (version=TLSv1/SSLv3 cipher=RC4-SHA bits=128 verify=NOT)
 for <libssh2-devel@cool.haxx.se>; Sun, 23 Sep 2012 16:43:34 +0200
Received: by pbbrp8 with SMTP id rp8so1495004pbb.41
 for <libssh2-devel@cool.haxx.se>; Sun, 23 Sep 2012 07:43:28 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113;
 h=mime-version:in-reply-to:references:date:message-id:subject:from:to
 :content-type; bh=INnA6TixO8rZ9S3oVEFbu5DaK+8zO+HiEx+RN7p8L+o=;
 b=bnJSZ4DY+W5Qlr9B/RvyHczrdF2j8VnTPRta+cEYiAN9pnEweLSb/Z6n8ZbRlOusHl
 SQhofto8HXWGYeXN1AgwH3zvWEXRqpdDBSV4Muu5Z7NR7i1Zo5jxJYo/33WIFnR+bX6k
 artXOq+3UQOv+gJuy5n3q3SrE1xQdPSW2knuFp2OTcjfGLjL6fHLT1gFxR0oGgTKtMgO
 Tbb2jCykXiEN6Auc2cgWY4RQ8ESWe7XGuT8hZ/cJ/VEWVcOEtvy2Pkh3LLGIM12l30k7
 O/QJ7lPp2Zm+3LXjskmVoEm914P5nihi+7CB8HKH5VAzZoKw8jQ7pAUDMYHIxqH00kNn
 g28w==
MIME-Version: 1.0
Received: by 10.66.74.74 with SMTP id r10mr26256008pav.57.1348411407932; Sun,
 23 Sep 2012 07:43:27 -0700 (PDT)
Received: by 10.68.191.193 with HTTP; Sun, 23 Sep 2012 07:43:27 -0700 (PDT)
In-Reply-To: <20120923130943.8394.qmail@stuge.se>
References: <CANKx_q=c+R49PY87m5JaZnjLGugFqvA4B5SLECKNV5NMM9zZsA@mail.gmail.com>
 <20120921144035.23485.qmail@stuge.se>
 <CANKx_qkuUqNAdgCJu4ENS-1axibsvx1PqC5mf59XEOe=w5pWuA@mail.gmail.com>
 <20120923130943.8394.qmail@stuge.se>
Date: Sun, 23 Sep 2012 16:43:27 +0200
Message-ID: <CANKx_qno9hPVqb8ND8GA6pxM2UZrehj6aiMxPo9Xcbv-KaGJhQ@mail.gmail.com>
Subject: Re: Direct tcp ip channel - session handshake
From: Jiri <werwolfthron@gmail.com>
To: libssh2 development <libssh2-devel@cool.haxx.se>
X-BeenThere: libssh2-devel@cool.haxx.se
X-Mailman-Version: 2.1.15
Precedence: list
Reply-To: libssh2 development <libssh2-devel@cool.haxx.se>
List-Id: libssh2 development <libssh2-devel.cool.haxx.se>
List-Unsubscribe: <http://cool.haxx.se/cgi-bin/mailman/options/libssh2-devel>, 
 <mailto:libssh2-devel-request@cool.haxx.se?subject=unsubscribe>
List-Archive: <http://cool.haxx.se/pipermail/libssh2-devel/>
List-Post: <mailto:libssh2-devel@cool.haxx.se>
List-Help: <mailto:libssh2-devel-request@cool.haxx.se?subject=help>
List-Subscribe: <http://cool.haxx.se/cgi-bin/mailman/listinfo/libssh2-devel>, 
 <mailto:libssh2-devel-request@cool.haxx.se?subject=subscribe>
Content-Type: multipart/mixed; boundary="===============0210895744=="
Errors-To: libssh2-devel-bounces@cool.haxx.se
Sender: "libssh2-devel" <libssh2-devel-bounces@cool.haxx.se>

--===============0210895744==
Content-Type: multipart/alternative; boundary=f46d042f91d8fb1b7704ca5f7ed7

--f46d042f91d8fb1b7704ca5f7ed7
Content-Type: text/plain; charset=ISO-8859-1

>You must have two sessions of course. You haven't posted code so Idon't
know, it's not clear from your explanation.

>> but the program stops during handshake.

>Then you are simply not correctly passing data across the
three connections that your application has open.

Sample source code (without errors etc)
...
previous code same as direct tcp example
...
set_nonblock(listensock); //method for set nonblocking
forwardsock = accept(listensock, (struct sockaddr *)&sin, &sinlen);

shost = inet_ntoa(sin.sin_addr);
sport = ntohs(sin.sin_port);

con->channel = libssh2_channel_direct_tcpip_ex(con->session,
remote_desthost,remote_destport, shost, sport);
libssh2_session_set_blocking(con->session, 0);

struct conn c1;//own structure for connect
c1.hostname = "127.0.0.1";
c1.username = "root";
c1.password = "password";
c1.port = 2222;
struct conn *st1 = &c1;

init_sock(st1);
init_session(st1);

int x = libssh2_session_handshake(st1->session, st1->socket);
printf("handshake %i\n", x);

--f46d042f91d8fb1b7704ca5f7ed7
Content-Type: text/html; charset=ISO-8859-1
Content-Transfer-Encoding: quoted-printable

<div>&gt;You must have two sessions of course. You haven&#39;t posted code =
so Idon&#39;t know, it&#39;s not clear from your explanation.<br><div class=
=3D"im"><br>&gt;&gt; but the program stops during handshake.<br><br></div>
&gt;Then you are simply not correctly passing data across the three=A0conne=
ctions that your application has open.</div><div><br></div><div>Sample sour=
ce code (without errors etc)</div><div>...</div><div>previous code same as =
direct tcp example</div>
<div>...</div><div>set_nonblock(listensock); //method for set nonblocking</=
div><div>forwardsock =3D accept(listensock, (struct sockaddr *)&amp;sin, &a=
mp;sinlen);</div><div><br></div><div>shost =3D inet_ntoa(sin.sin_addr);</di=
v>
<div>sport =3D ntohs(sin.sin_port);</div><div><br></div><div>con-&gt;channe=
l =3D libssh2_channel_direct_tcpip_ex(con-&gt;session, remote_desthost,remo=
te_destport, shost, sport);</div><div>libssh2_session_set_blocking(con-&gt;=
session, 0);</div>
<div><br></div><div>struct conn c1;//own structure for connect</div><div>c1=
.hostname =3D &quot;127.0.0.1&quot;;</div><div>c1.username =3D &quot;root&q=
uot;;</div><div>c1.password =3D &quot;password&quot;;</div><div>c1.port =3D=
 2222;</div>
<div>struct conn *st1 =3D &amp;c1;</div><div><br></div><div>init_sock(st1);=
</div><div>init_session(st1);</div><div><br></div><div>int x =3D libssh2_se=
ssion_handshake(st1-&gt;session, st1-&gt;socket);</div><div>printf(&quot;ha=
ndshake %i\n&quot;, x);</div>
<div><br></div>

--f46d042f91d8fb1b7704ca5f7ed7--

--===============0210895744==
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: inline

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

--===============0210895744==--

From libssh2-devel-bounces@cool.haxx.se  Sun Sep 23 17:10:41 2012
Return-Path: <libssh2-devel-bounces@cool.haxx.se>
Received: from www.haxx.se (localhost.localdomain [127.0.0.1])
	by giant.haxx.se (8.14.4/8.14.4/Debian-2) with ESMTP id q8NFAYiN002418;
	Sun, 23 Sep 2012 17:10:40 +0200
Received: from foo.stuge.se (qmailr@foo.stuge.se [212.116.89.98])
 by giant.haxx.se (8.14.4/8.14.4/Debian-2) with SMTP id q8NFAXXe002412
 for <libssh2-devel@cool.haxx.se>; Sun, 23 Sep 2012 17:10:33 +0200
Received: (qmail 17980 invoked by uid 501); 23 Sep 2012 15:10:34 -0000
Message-ID: <20120923151034.17979.qmail@stuge.se>
Date: Sun, 23 Sep 2012 17:10:33 +0200
From: Peter Stuge <peter@stuge.se>
To: libssh2-devel@cool.haxx.se
Subject: Re: Direct tcp ip channel - session handshake
Mail-Followup-To: libssh2-devel@cool.haxx.se
References: <CANKx_q=c+R49PY87m5JaZnjLGugFqvA4B5SLECKNV5NMM9zZsA@mail.gmail.com>
 <20120921144035.23485.qmail@stuge.se>
 <CANKx_qkuUqNAdgCJu4ENS-1axibsvx1PqC5mf59XEOe=w5pWuA@mail.gmail.com>
 <20120923130943.8394.qmail@stuge.se>
 <CANKx_qno9hPVqb8ND8GA6pxM2UZrehj6aiMxPo9Xcbv-KaGJhQ@mail.gmail.com>
MIME-Version: 1.0
Content-Disposition: inline
In-Reply-To: <CANKx_qno9hPVqb8ND8GA6pxM2UZrehj6aiMxPo9Xcbv-KaGJhQ@mail.gmail.com>
X-BeenThere: libssh2-devel@cool.haxx.se
X-Mailman-Version: 2.1.15
Precedence: list
Reply-To: libssh2 development <libssh2-devel@cool.haxx.se>
List-Id: libssh2 development <libssh2-devel.cool.haxx.se>
List-Unsubscribe: <http://cool.haxx.se/cgi-bin/mailman/options/libssh2-devel>, 
 <mailto:libssh2-devel-request@cool.haxx.se?subject=unsubscribe>
List-Archive: <http://cool.haxx.se/pipermail/libssh2-devel/>
List-Post: <mailto:libssh2-devel@cool.haxx.se>
List-Help: <mailto:libssh2-devel-request@cool.haxx.se?subject=help>
List-Subscribe: <http://cool.haxx.se/cgi-bin/mailman/listinfo/libssh2-devel>, 
 <mailto:libssh2-devel-request@cool.haxx.se?subject=subscribe>
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Errors-To: libssh2-devel-bounces@cool.haxx.se
Sender: "libssh2-devel" <libssh2-devel-bounces@cool.haxx.se>

Jiri wrote:
> Sample source code (without errors etc)
> ...
> previous code same as direct tcp example
> ...

You need to send the complete program and not make people guess at
what code you have written.


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

From libssh2-devel-bounces@cool.haxx.se  Sun Sep 23 18:03:08 2012
Return-Path: <libssh2-devel-bounces@cool.haxx.se>
Received: from www.haxx.se (localhost.localdomain [127.0.0.1])
	by giant.haxx.se (8.14.4/8.14.4/Debian-2) with ESMTP id q8NG2gap005271;
	Sun, 23 Sep 2012 18:03:02 +0200
Received: from mail-pb0-f54.google.com (mail-pb0-f54.google.com
 [209.85.160.54])
 by giant.haxx.se (8.14.4/8.14.4/Debian-2) with ESMTP id q8NG2clK005224
 (version=TLSv1/SSLv3 cipher=RC4-SHA bits=128 verify=NOT)
 for <libssh2-devel@cool.haxx.se>; Sun, 23 Sep 2012 18:02:40 +0200
Received: by pbbrp8 with SMTP id rp8so1559531pbb.41
 for <libssh2-devel@cool.haxx.se>; Sun, 23 Sep 2012 09:02:34 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113;
 h=mime-version:in-reply-to:references:date:message-id:subject:from:to
 :content-type; bh=sdh2ZcJ0HKCxOFuK51YUzIX+Ln24id5h529aae5w2y8=;
 b=qBLwkChi4AT7PTc+O0YB8O9RKbQH6GA7sy5DvLlH9mz418tzboctoSkB+EIDEVXfrt
 hNXx4AXhdL1HVq3FlY/CwYQ+wVCYhDjBfdo6GuUinhCH68iYsjCQ57iEliKR0HO5GW5p
 qa7sHt0K5ehagZk1wuYcIJ9GMhoDqGTH8rdoUwxMbFo1SIGePYs653LEMXONXY8J97bZ
 8xrTwFZWeQwZPRQPVghinWczmiQWnJrCdzrkMxLzgjCGQQ5Ed4H4CRWLCFRaOiiMS6EQ
 v4gKeVv1t6C6IIfXy48a7ivtD41gDp5HKtHjar1GgwniAXqCTGOpCrj+jFfIZF3GDjk9
 BeJA==
MIME-Version: 1.0
Received: by 10.68.222.231 with SMTP id qp7mr13244563pbc.7.1348416154062; Sun,
 23 Sep 2012 09:02:34 -0700 (PDT)
Received: by 10.68.191.193 with HTTP; Sun, 23 Sep 2012 09:02:34 -0700 (PDT)
In-Reply-To: <20120923151034.17979.qmail@stuge.se>
References: <CANKx_q=c+R49PY87m5JaZnjLGugFqvA4B5SLECKNV5NMM9zZsA@mail.gmail.com>
 <20120921144035.23485.qmail@stuge.se>
 <CANKx_qkuUqNAdgCJu4ENS-1axibsvx1PqC5mf59XEOe=w5pWuA@mail.gmail.com>
 <20120923130943.8394.qmail@stuge.se>
 <CANKx_qno9hPVqb8ND8GA6pxM2UZrehj6aiMxPo9Xcbv-KaGJhQ@mail.gmail.com>
 <20120923151034.17979.qmail@stuge.se>
Date: Sun, 23 Sep 2012 18:02:34 +0200
Message-ID: <CANKx_qnnsLJ1U0gN3OLLwhSRcKBENvtWnTVBXqUhUfiw5KRUMQ@mail.gmail.com>
Subject: Re: Direct tcp ip channel - session handshake
From: Jiri <werwolfthron@gmail.com>
To: libssh2 development <libssh2-devel@cool.haxx.se>
Content-Type: multipart/mixed; boundary=047d7b2ee7cddf4d8504ca6099ee
X-BeenThere: libssh2-devel@cool.haxx.se
X-Mailman-Version: 2.1.15
Precedence: list
Reply-To: libssh2 development <libssh2-devel@cool.haxx.se>
List-Id: libssh2 development <libssh2-devel.cool.haxx.se>
List-Unsubscribe: <http://cool.haxx.se/cgi-bin/mailman/options/libssh2-devel>, 
 <mailto:libssh2-devel-request@cool.haxx.se?subject=unsubscribe>
List-Archive: <http://cool.haxx.se/pipermail/libssh2-devel/>
List-Post: <mailto:libssh2-devel@cool.haxx.se>
List-Help: <mailto:libssh2-devel-request@cool.haxx.se?subject=help>
List-Subscribe: <http://cool.haxx.se/cgi-bin/mailman/listinfo/libssh2-devel>, 
 <mailto:libssh2-devel-request@cool.haxx.se?subject=subscribe>
Errors-To: libssh2-devel-bounces@cool.haxx.se
Sender: "libssh2-devel" <libssh2-devel-bounces@cool.haxx.se>

--047d7b2ee7cddf4d8504ca6099ee
Content-Type: multipart/alternative; boundary=047d7b2ee7cddf4d7f04ca6099ec

--047d7b2ee7cddf4d7f04ca6099ec
Content-Type: text/plain; charset=ISO-8859-2
Content-Transfer-Encoding: quoted-printable

Sorry, Its my mistake.
I'm sending the program in the atachment. It doesn't include all the parts
I've implemented (sftp, work with directories etc for example) but in the
terms of this problem it includes everything necessary. Thanks for your
patience!

2012/9/23 Peter Stuge <peter@stuge.se>

> Jiri wrote:
> > Sample source code (without errors etc)
> > ...
> > previous code same as direct tcp example
> > ...
>
> You need to send the complete program and not make people guess at
> what code you have written.
>
>
> //Peter
> _______________________________________________
> libssh2-devel http://cool.haxx.se/cgi-bin/mailman/listinfo/libssh2-devel
>



--=20
S pozdravem
Ji=F8=ED =A9ev=E8=EDk

--047d7b2ee7cddf4d7f04ca6099ec
Content-Type: text/html; charset=ISO-8859-2
Content-Transfer-Encoding: quoted-printable

Sorry, Its my mistake. <br>I&#39;m sending the program in the atachment. It=
 doesn&#39;t include all the parts I&#39;ve implemented (sftp, work with di=
rectories etc for example) but in the terms of this problem it includes eve=
rything necessary. Thanks for your patience!<br>
<br><div class=3D"gmail_quote">2012/9/23 Peter Stuge <span dir=3D"ltr">&lt;=
<a href=3D"mailto:peter@stuge.se" target=3D"_blank">peter@stuge.se</a>&gt;<=
/span><br><blockquote class=3D"gmail_quote" style=3D"margin:0 0 0 .8ex;bord=
er-left:1px #ccc solid;padding-left:1ex">
<div class=3D"im">Jiri wrote:<br>
&gt; Sample source code (without errors etc)<br>
&gt; ...<br>
&gt; previous code same as direct tcp example<br>
&gt; ...<br>
<br>
</div>You need to send the complete program and not make people guess at<br=
>
what code you have written.<br>
<div class=3D"HOEnZb"><div class=3D"h5"><br>
<br>
//Peter<br>
_______________________________________________<br>
libssh2-devel <a href=3D"http://cool.haxx.se/cgi-bin/mailman/listinfo/libss=
h2-devel" target=3D"_blank">http://cool.haxx.se/cgi-bin/mailman/listinfo/li=
bssh2-devel</a><br>
</div></div></blockquote></div><br><br clear=3D"all"><div><br></div>-- <br>=
S pozdravem<br>Ji=F8=ED =A9ev=E8=EDk<br><br>

--047d7b2ee7cddf4d7f04ca6099ec--
--047d7b2ee7cddf4d8504ca6099ee
Content-Type: text/x-csrc; charset=US-ASCII; name="ssh_commands.c"
Content-Disposition: attachment; filename="ssh_commands.c"
Content-Transfer-Encoding: base64
X-Attachment-Id: f_h7gbwzd10

I2luY2x1ZGUgImxpYnNzaDJfY29uZmlnLmgiCiNpbmNsdWRlIDxsaWJzc2gyLmg+CiNpbmNsdWRl
IDxsaWJzc2gyX3NmdHAuaD4KI2luY2x1ZGUgInNzaF9jb21tYW5kcy5oIgojaW5jbHVkZSA8c3lz
L3BvbGwuaD4KCgojaWZkZWYgSEFWRV9TWVNfU09DS0VUX0gKI2luY2x1ZGUgPHN5cy9zb2NrZXQu
aD4KI2VuZGlmCiNpZmRlZiBIQVZFX05FVElORVRfSU5fSAojaW5jbHVkZSA8bmV0aW5ldC9pbi5o
PgojZW5kaWYKI2lmZGVmIEhBVkVfVU5JU1REX0gKI2luY2x1ZGUgPHVuaXN0ZC5oPgojZW5kaWYK
I2lmZGVmIEhBVkVfQVJQQV9JTkVUX0gKI2luY2x1ZGUgPGFycGEvaW5ldC5oPgojZW5kaWYKI2lm
ZGVmIEhBVkVfSU5UVFlQRVNfSAojaW5jbHVkZSA8aW50dHlwZXMuaD4KI2VuZGlmCgojaW5jbHVk
ZSA8c3lzL3R5cGVzLmg+CiNpbmNsdWRlIDxmY250bC5oPgojaW5jbHVkZSA8ZXJybm8uaD4KI2lu
Y2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxjdHlwZS5oPgojaW5jbHVkZSA8c3lzL3NlbGVjdC5o
PgojaW5jbHVkZSA8dW5pc3RkLmg+CiNpbmNsdWRlIDxwdGhyZWFkLmg+CgoKI2lmbmRlZiBJTkFE
RFJfTk9ORQojZGVmaW5lIElOQUREUl9OT05FIChpbl9hZGRyX3QpLTEKI2VuZGlmCgovL3N0cnVj
dHVyZSBmb3IgY29ubmVjdGlvbgp0eXBlZGVmIHN0cnVjdCBjb25uIHsKCWNoYXIgKmhvc3RuYW1l
OwoJY2hhciAqdXNlcm5hbWU7CgljaGFyICpwYXNzd29yZDsKCWludCBzb2NrZXQ7CglpbnQgZm9y
d2FyZHNvY2tldDsKCWludCBwb3J0OwoJaW50IHNmdHBfYWxpdmU7CgoJTElCU1NIMl9TRVNTSU9O
ICpzZXNzaW9uOwoJTElCU1NIMl9TRlRQICpzZnRwX3Nlc3Npb247CglMSUJTU0gyX1NGVFBfSEFO
RExFICpzZnRwX2hhbmRsZTsKCUxJQlNTSDJfQ0hBTk5FTCAqY2hhbm5lbDsKCUxJQlNTSDJfTElT
VEVORVIgKmxpc3RlbmVyOwoKCUxJQlNTSDJfQUdFTlQgKmFnZW50OwoKCXN0cnVjdCBsaWJzc2gy
X2FnZW50X3B1YmxpY2tleSAqaWRlbnRpdHksICpwcmV2X2lkZW50aXR5Owp9OwoKaW50IG1haW4o
KQp7CglzdHJ1Y3QgY29ubiBjOwoKCWMuaG9zdG5hbWUgPSAiMTAuNzIuNi4xNDUiOwkJLy9QdWJs
aWNob3N0CgljLnVzZXJuYW1lID0gInJvb3QiOwoJYy5wYXNzd29yZCA9ICJwYXNzIjsKCWMuc2Z0
cF9zZXNzaW9uID0gTlVMTDsKCgljLnNmdHBfYWxpdmUgPSAxOwoKCXN0cnVjdCBjb25uICpzdCA9
ICZjOwoJCgkvL21ldGhvZHMgZm9yIGNyZWF0ZSBzb2Nrcywgc2Vzc2lvbiwgaGFuZHNoYWtlLi4K
CWlmKGluaXRfc29jayhzdCkgPT0gMSkKCQlyZXR1cm4gLTE7Cglpbml0X3Nlc3Npb24oc3QpOwoJ
aGFuZHNoYWtlKHN0KTsKCWZpbmdlcnByaW50KHN0LT5zZXNzaW9uKTsKCWF1dGhfcGFzcyhzdCk7
CgkKCS8vdGhpcyBpcyBpdAoJdGVzdGYoc3QpOwoJCgogICAgICAgLy9jbG9zZSBhbmQgImNsZWFu
dXAiCglpZiAoYy5zZnRwX2FsaXZlID09IDApCgkJc2Z0cF9jbG9zZShzdCk7CgoJY2xvc2Vfc2Vz
c2lvbihzdCk7CgljbG9zZV9zb2NrKHN0KTsKCiAgICBsaWJzc2gyX2V4aXQoKTsKICAgIHByaW50
ZigiXG5jbG9zZSBhbGwiKTsKICAgIC8vcmV0dXJuIDA7Cn0KCmludCB0ZXN0ZihzdHJ1Y3QgY29u
biAqY29uKXsKCWluaXRfbGliKCk7CgoJc3RydWN0IGNvbm4gYzsKCgljb25zdCBjaGFyICpsb2Nh
bF9saXN0ZW5pcCA9ICIxMjcuMC4wLjEiOwoJdW5zaWduZWQgaW50IGxvY2FsX2xpc3RlbnBvcnQg
PSAyMjIyOwoKCWNvbnN0IGNoYXIgKnJlbW90ZV9kZXN0aG9zdCA9ICIxMC4wLjAuMSI7IC8vIElu
dGVybmFsSG9zdAoJdW5zaWduZWQgaW50IHJlbW90ZV9kZXN0cG9ydCA9IDIyOwoKCWNvbnN0IGNo
YXIgKnNob3N0OwoJdW5zaWduZWQgaW50IHNwb3J0OwoKCWludCBsaXN0ZW5zb2NrID0gLTEsIGZv
cndhcmRzb2NrID0gLTE7CglzdHJ1Y3Qgc29ja2FkZHJfaW4gc2luOwoJc29ja2xlbl90IHNpbmxl
bjsKCWludCBzb2Nrb3B0OwoKCWxpc3RlbnNvY2sgPSBzb2NrZXQoUEZfSU5FVCwgU09DS19TVFJF
QU0sIElQUFJPVE9fVENQKTsKCXNpbi5zaW5fZmFtaWx5ID0gQUZfSU5FVDsKCXNpbi5zaW5fcG9y
dCA9IGh0b25zKGxvY2FsX2xpc3RlbnBvcnQpOwoKCWlmIChJTkFERFJfTk9ORSA9PSAoc2luLnNp
bl9hZGRyLnNfYWRkciA9IGluZXRfYWRkcihsb2NhbF9saXN0ZW5pcCkpKSB7CgkJcGVycm9yKCJp
bmV0X2FkZHIiKTsKCQlyZXR1cm4gLTE7Cgl9CgoJc29ja29wdCA9IDE7CglzZXRzb2Nrb3B0KGxp
c3RlbnNvY2ssIFNPTF9TT0NLRVQsIFNPX1JFVVNFQUREUiwgJnNvY2tvcHQsIHNpemVvZihzb2Nr
b3B0KSk7CglzaW5sZW49c2l6ZW9mKHNpbik7CgoJaWYgKC0xID09IGJpbmQobGlzdGVuc29jaywg
KHN0cnVjdCBzb2NrYWRkciAqKSZzaW4sIHNpbmxlbikpIHsKCQlwZXJyb3IoImJpbmQiKTsKCQly
ZXR1cm4gLTE7Cgl9CgoJaWYgKC0xID09IGxpc3RlbihsaXN0ZW5zb2NrLCAyKSkgewoJCXBlcnJv
cigibGlzdGVuIik7CgkJcmV0dXJuIC0xOwoJfQoKCXByaW50ZigiV2FpdGluZyBmb3IgVENQIGNv
bm5lY3Rpb24gb24gJXM6JWQuLi5cbiIsIGluZXRfbnRvYShzaW4uc2luX2FkZHIpLCBudG9ocyhz
aW4uc2luX3BvcnQpKTsKCglzZXRfbm9uYmxvY2sobGlzdGVuc29jayk7CgoKCWZvcndhcmRzb2Nr
ID0gYWNjZXB0KGxpc3RlbnNvY2ssIChzdHJ1Y3Qgc29ja2FkZHIgKikmc2luLCAmc2lubGVuKTsK
CgoJaWYgKC0xID09IGZvcndhcmRzb2NrKSB7CgkJcGVycm9yKCJhY2NlcHQiKTsKCSAgICAgICAg
Ly9yZXR1cm4gLTE7CiAJfQoKCXNob3N0ID0gaW5ldF9udG9hKHNpbi5zaW5fYWRkcik7CglzcG9y
dCA9IG50b2hzKHNpbi5zaW5fcG9ydCk7CgoJcHJpbnRmKCJGb3J3YXJkaW5nIGNvbm5lY3Rpb24g
ZnJvbSAlczolZCBoZXJlIHRvIHJlbW90ZSAlczolZFxuIiwgc2hvc3QsCgkgICAgICAgIHNwb3J0
LCByZW1vdGVfZGVzdGhvc3QsIHJlbW90ZV9kZXN0cG9ydCk7CgoJY29uLT5jaGFubmVsID0gbGli
c3NoMl9jaGFubmVsX2RpcmVjdF90Y3BpcF9leChjb24tPnNlc3Npb24sIHJlbW90ZV9kZXN0aG9z
dCxyZW1vdGVfZGVzdHBvcnQsIHNob3N0LCBzcG9ydCk7CgoJaWYgKCFjb24tPmNoYW5uZWwpIHsK
CSAgICAgICAgZnByaW50ZihzdGRlcnIsICJDb3VsZCBub3Qgb3BlbiB0aGUgZGlyZWN0LXRjcGlw
IGNoYW5uZWwhXG4iKTsKCX0KCglsaWJzc2gyX3Nlc3Npb25fc2V0X2Jsb2NraW5nKGNvbi0+c2Vz
c2lvbiwgMCk7CgoJLy9tYWtlIG5ldyBjb25uZWN0aW9uCglzdHJ1Y3QgY29ubiBjMTsKCWMxLmhv
c3RuYW1lID0gIjEyNy4wLjAuMSI7CgljMS51c2VybmFtZSA9ICJyb290IjsKCWMxLnBhc3N3b3Jk
ID0gIjU5NjYwMzE0MiI7CgljMS5wb3J0ID0gMjIyMjsKCgljMS5zZnRwX2FsaXZlID0gMTsKCglz
dHJ1Y3QgY29ubiAqc3QxID0gJmMxOwoJLy9jcmVhdGUgc29ja2V0Cglpbml0X3NvY2soc3QxKTsK
CS8vY3JlYXRlIHNlc3Npb24KCWluaXRfc2Vzc2lvbihzdDEpOwoKCWludCB4OwoJeCA9IGxpYnNz
aDJfc2Vzc2lvbl9oYW5kc2hha2Uoc3QxLT5zZXNzaW9uLCBzdDEtPnNvY2tldCk7CglwcmludGYo
ImhhbmRzaGFrZSAlaVxuIiwgeCk7CgkvLyBIQU5EU0hBS0UgV0lMTCBSRVRVUk4gLTM3CgoJcmV0
dXJuIDA7Cn0KCgoKCgoKLy9Tb21lIG9mIG15IGltcGxlbWVudGVkIG1ldGhvZHMgZm9yIGNyZWF0
aW5nIGNvbm5lY3Rpb25zLCBzb2NrZXRzLCBzZnRwIGV0Yy4uCmludCBpbml0X2xpYigpewoJaWYg
KGxpYnNzaDJfaW5pdCAoMCkgIT0gMCkgewoJCWZwcmludGYgKHN0ZGVyciwgImxpYnNzaDIgaW5p
dGlhbGl6YXRpb24gZmFpbGVkXG4iKTsKCQlyZXR1cm4gLTE7Cgl9CglyZXR1cm4gMDsKfQoKaW50
IGluaXRfc29jayhzdHJ1Y3QgY29ubiAqY29uKXsKCXVuc2lnbmVkIGxvbmcgaG9zdGFkZHI7CgoJ
aG9zdGFkZHIgPSBpbmV0X2FkZHIoY29uLT5ob3N0bmFtZSk7CgoJc3RydWN0IHNvY2thZGRyX2lu
IHNpbjsKCgkvL2Nvbi0+c29ja2V0ID0gc29ja2V0KEFGX0lORVQsIFNPQ0tfU1RSRUFNLCAwKTsK
CWNvbi0+c29ja2V0ICA9IHNvY2tldChQRl9JTkVULCBTT0NLX1NUUkVBTSwgSVBQUk9UT19UQ1Ap
OwoKCWlmKGNvbi0+c29ja2V0ID09IC0xKXsKCQlwZXJyb3IoIkNyZWF0ZSBzb2NrZXQiKTsKCQly
ZXR1cm4gLTE7Cgl9CgoJc2luLnNpbl9mYW1pbHkgPSBBRl9JTkVUOwoKCWlmIChJTkFERFJfTk9O
RSA9PSAoc2luLnNpbl9hZGRyLnNfYWRkciA9IGhvc3RhZGRyKSkgewoJICAgICAgICBwZXJyb3Io
ImluZXRfYWRkciIpOwoJICAgICAgICByZXR1cm4gLTE7CgkgICAgfQoKCXNpbi5zaW5fcG9ydCA9
IGh0b25zKGNvbi0+cG9ydCk7CgoJLy9zaW4uc2luX2FkZHIuc19hZGRyID0gaG9zdGFkZHI7CgoJ
aWYgKGNvbm5lY3QoY29uLT5zb2NrZXQsIChzdHJ1Y3Qgc29ja2FkZHIqKSgmc2luKSwgc2l6ZW9m
KHN0cnVjdCBzb2NrYWRkcl9pbikpICE9IDApIHsKCQlmcHJpbnRmKHN0ZGVyciwgIkNhbnQgY29u
bmVjdCBzb2NrZXRcbiIpOwoJICAgIHJldHVybiAtMTt9CgoJZWxzZXsKCQkJcHJpbnRmKCJvaywg
JWkgXG4iLCBjb24tPnNvY2tldCk7CgkJCXJldHVybiAwOwoJICAgIH0KfQoKaW50IGNsb3NlX3Nv
Y2soc3RydWN0IGNvbm4gKmNvbil7CglpZiAoY2xvc2UoY29uLT5zb2NrZXQpKXsKCQlmcHJpbnRm
KHN0ZGVyciwgIkNhbnQgIGNsb3NlIHNvY2tldFxuIik7CgkJcmV0dXJuIC0xOwoJfQoJcmV0dXJu
IDA7Cn0KCmludCBpbml0X3Nlc3Npb24oc3RydWN0IGNvbm4gKmNvbil7CgoJY29uLT5zZXNzaW9u
ID0gbGlic3NoMl9zZXNzaW9uX2luaXQoKTsKCglpZiAoIWNvbi0+c2Vzc2lvbil7CgkJZnByaW50
ZihzdGRlcnIsICJDYW50IGluaXQgc2Vzc2lvbiIpOwoJCXJldHVybiAtMTsKCX0KCgkvL2xpYnNz
aDJfc2Vzc2lvbl9zZXRfYmxvY2tpbmcoY29uLT5zZXNzaW9uLCAwKTsKCS8vcHJpbnRmKCJTZXNz
aW9uIGlzIGluIHVuYmxvY2tpbmcgbW9kZVxuIik7CglyZXR1cm4gMDsKfQoKaW50IGNsb3NlX3Nl
c3Npb24oc3RydWN0IGNvbm4gKmNvbil7CgoJd2hpbGUgKGxpYnNzaDJfc2Vzc2lvbl9kaXNjb25u
ZWN0KGNvbi0+c2Vzc2lvbiwgIkRpc2Nvbm5lY3Qgc2Vzc2lvbiIpID09IExJQlNTSDJfRVJST1Jf
RUFHQUlOKTsKCglpZihsaWJzc2gyX3Nlc3Npb25fZnJlZShjb24tPnNlc3Npb24pICE9MCl7CgkJ
cGVycm9yKCJDbG9zZSBzZXNzaW9uIik7CgkJcmV0dXJuIC0xOwoJfQoKCXByaW50ZigiU2Vzc2lv
biBpcyBjbG9zZWQiKTsKCXJldHVybiAwOwp9CgppbnQgY2xvc2VfY2hhbm5lbChMSUJTU0gyX0NI
QU5ORUwgKmNoYW5uZWwpewoKCWxpYnNzaDJfY2hhbm5lbF93YWl0X2Nsb3NlZChjaGFubmVsKTsK
CWxpYnNzaDJfY2hhbm5lbF9mcmVlKGNoYW5uZWwpOwoJY2hhbm5lbCA9IE5VTEw7CglwcmludGYo
IkNoYW5uZWwgY2xvc2VkXG4iKTsKCglyZXR1cm4gMDsKfQoKaW50IGhhbmRzaGFrZShzdHJ1Y3Qg
Y29ubiAqY29uKXsKCWludCByYzsKCgl3aGlsZSAoKHJjID0gbGlic3NoMl9zZXNzaW9uX2hhbmRz
aGFrZShjb24tPnNlc3Npb24sIGNvbi0+c29ja2V0KSk9PSBMSUJTU0gyX0VSUk9SX0VBR0FJTik7
CgkgICAgaWYgKHJjKSB7CgkgICAgICAgIGZwcmludGYoc3RkZXJyLCAiRmFpbHVyZSBlc3RhYmxp
c2hpbmcgU1NIIHNlc3Npb246ICVkXG4iLCByYyk7CgkgICAgICAgIHJldHVybiAtMTsKCSAgICB9
CgoJcmV0dXJuIDA7Cn0KCmludCBmaW5nZXJwcmludChMSUJTU0gyX1NFU1NJT04gKnNlc3Npb24p
ewoJY29uc3QgY2hhciAqZnA7CgoJZnAgPSBsaWJzc2gyX2hvc3RrZXlfaGFzaChzZXNzaW9uLCBM
SUJTU0gyX0hPU1RLRVlfSEFTSF9TSEExKTsKCglpZighZnApewoJCXBlcnJvcigiRmluZ2VycHJp
bnQiKTsKCQlyZXR1cm4gLTE7Cgl9CgllbHNlewoJCXByaW50ZigiRmluZ2VycHJpbnQ6ICIpOwoK
CQlmb3IoaW50IGk9IDA7IGkgPCAyMDsgaSsrKSB7CgkJCXByaW50ZigiJTAyWCAiLCAodW5zaWdu
ZWQgY2hhcilmcFtpXSk7CgkJfQoJCXByaW50ZigiXG4iKTsKCQlyZXR1cm4gMDsKCX0KfQoKaW50
IGF1dGhfcGFzcyhzdHJ1Y3QgY29ubiAqY29uKXsKCWludCByYzsKCgl3aGlsZSAoKHJjID0gbGli
c3NoMl91c2VyYXV0aF9wYXNzd29yZChjb24tPnNlc3Npb24sIGNvbi0+dXNlcm5hbWUsIGNvbi0+
cGFzc3dvcmQpKQoJCQk9PSBMSUJTU0gyX0VSUk9SX0VBR0FJTik7CgoJaWYgKHJjKSB7CgkJZnBy
aW50ZihzdGRlcnIsICJBdXRoZW50aWNhdGlvbiBieSBwYXNzd29yZCBmYWlsZWQuXG4iKTsKCQly
ZXR1cm4gLTE7Cgl9CgllbHNlewoJCXByaW50ZigiQXV0aGVudGljYXRpb24gYnkgcGFzc3dvcmQg
c3VjZXNzZnVsbC5cbiIpOwoJCXJldHVybiAwOwoJfQp9CgppbnQgd2FpdHNvY2tldChzdHJ1Y3Qg
Y29ubiAqY29uKXsKICAgIHN0cnVjdCB0aW1ldmFsIHRpbWVvdXQ7CiAgICBpbnQgcmM7CiAgICBm
ZF9zZXQgZmQ7CiAgICBmZF9zZXQgKndyaXRlZmQgPSBOVUxMOwogICAgZmRfc2V0ICpyZWFkZmQg
PSBOVUxMOwogICAgaW50IGRpcjsKCiAgICB0aW1lb3V0LnR2X3NlYyA9IDEwOwogICAgdGltZW91
dC50dl91c2VjID0gMDsKCiAgICBGRF9aRVJPKCZmZCk7CgogICAgRkRfU0VUKGNvbi0+c29ja2V0
LCAmZmQpOwoKICAgIC8qIG5vdyBtYWtlIHN1cmUgd2Ugd2FpdCBpbiB0aGUgY29ycmVjdCBkaXJl
Y3Rpb24gKi8KICAgIGRpciA9IGxpYnNzaDJfc2Vzc2lvbl9ibG9ja19kaXJlY3Rpb25zKGNvbi0+
c2Vzc2lvbik7CgoKICAgIGlmKGRpciAmIExJQlNTSDJfU0VTU0lPTl9CTE9DS19JTkJPVU5EKQog
ICAgICAgIHJlYWRmZCA9ICZmZDsKCiAgICBpZihkaXIgJiBMSUJTU0gyX1NFU1NJT05fQkxPQ0tf
T1VUQk9VTkQpCiAgICAgICAgd3JpdGVmZCA9ICZmZDsKCiAgICByYyA9IHNlbGVjdChjb24tPnNv
Y2tldCArIDEsIHJlYWRmZCwgd3JpdGVmZCwgTlVMTCwgJnRpbWVvdXQpOwoKICAgIHJldHVybiBy
YzsKfQoKaW50IHNldF9ub25ibG9jayhpbnQgc29jayl7CglpbnQgb3B0czsKCW9wdHMgPSBmY250
bChzb2NrLEZfR0VURkwpOwoJaWYgKG9wdHMgPCAwKSB7CgkJcGVycm9yKCJmY250bChGX0dFVEZM
KSIpOwoJCXJldHVybiAtMTsKCX0KCglvcHRzID0gKG9wdHMgfCBPX05PTkJMT0NLKTsKCWlmIChm
Y250bChzb2NrLEZfU0VURkwsb3B0cykgPCAwKSB7CgkJCXBlcnJvcigiZmNudGwoRl9TRVRGTCki
KTsKCQlyZXR1cm4gLTE7Cgl9CglyZXR1cm4gMDsKfQoKaW50IGluaXRfc2Z0cChzdHJ1Y3QgY29u
biAqY29uKXsKCglpZiAoY29uLT5zZnRwX2FsaXZlID09IDEpCgl7CgkJZG8gewoJCQljb24tPnNm
dHBfc2Vzc2lvbiA9IGxpYnNzaDJfc2Z0cF9pbml0KGNvbi0+c2Vzc2lvbik7CgkJCWlmICghY29u
LT5zZnRwX3Nlc3Npb24gJiYgKGxpYnNzaDJfc2Vzc2lvbl9sYXN0X2Vycm5vKGNvbi0+c2Vzc2lv
bikgIT0KCQkJCUxJQlNTSDJfRVJST1JfRUFHQUlOKSkgewoJICAgICAgICAgICAgZnByaW50Zihz
dGRlcnIsICJVbmFibGUgdG8gaW5pdCBTRlRQIHNlc3Npb25cbiIpOwoJICAgICAgICAgICAgcmV0
dXJuIC0xOwoJICAgICAgICAJfQoJICAgIAl9IHdoaWxlICghY29uLT5zZnRwX3Nlc3Npb24pOwoK
CQljb24tPnNmdHBfYWxpdmUgPSAwOwoJCXByaW50ZigiU0ZUUCBJbml0IG9rXG4iKTsKCQlyZXR1
cm4gMDsKCX0KCWVsc2V7CgkJcHJpbnRmKCJTRlRQIEluaXQgb2tcbiIpOwoJCXJldHVybiAwOwoJ
fQp9CgppbnQgb3Blbl9zZnRwX3Ioc3RydWN0IGNvbm4gKmNvbiwgY2hhciAqZmlsZV9wYXRoKXsK
Cglpbml0X3NmdHAoY29uKTsKCglkbyB7CgkJY29uLT5zZnRwX2hhbmRsZSA9IGxpYnNzaDJfc2Z0
cF9vcGVuKGNvbi0+c2Z0cF9zZXNzaW9uLCBmaWxlX3BhdGgsIExJQlNTSDJfRlhGX1JFQUQsIDAp
OwoKCQlpZiAoIWNvbi0+c2Z0cF9oYW5kbGUpIHsKCSAgICAgICAgICAgIGlmIChsaWJzc2gyX3Nl
c3Npb25fbGFzdF9lcnJubyhjb24tPnNlc3Npb24pICE9IExJQlNTSDJfRVJST1JfRUFHQUlOKSB7
CgkgICAgICAgICAgICAJZnByaW50ZihzdGRlcnIsICJVbmFibGUgdG8gb3BlbiBmaWxlIHdpdGgg
U0ZUUFxuIik7CgkgICAgICAgICAgICAgICAJcmV0dXJuIC0xOwoJICAgICAgICAgICAgfQoJICAg
ICAgICAgICAgZWxzZSB7CgkgICAgICAgICAgICAgICAgZnByaW50ZihzdGRlcnIsICJub24tYmxv
Y2tpbmcgb3BlblxuIik7CgkgICAgICAgICAgICAgICAgd2FpdHNvY2tldChjb24pOyAvKiBub3cg
d2Ugd2FpdCAqLwoJICAgICAgICAgICAgfQoJICAgICAgICB9CgkgICAgfSB3aGlsZSAoIWNvbi0+
c2Z0cF9oYW5kbGUpOwoKCXJldHVybiAwOwp9CgppbnQgc2Z0cF9yZWFkKHN0cnVjdCBjb25uICpj
b24pewoJaW50IHJjOwoJY2hhciBtZW1bMTAwMF07CgoJcHJpbnRmKCJTZnRwIHJlYWQgc3RhcnQi
KTsKCWRvIHsKCSAgICAgICAgLyogbG9vcCB1bnRpbCB3ZSBmYWlsICovCgkgICAgICAgIHdoaWxl
ICgocmMgPSBsaWJzc2gyX3NmdHBfcmVhZChjb24tPnNmdHBfaGFuZGxlLCBtZW0sIHNpemVvZiht
ZW0pKSkgPT0gTElCU1NIMl9FUlJPUl9FQUdBSU4pIHsKCSAgICAgICAgICAgIHdhaXRzb2NrZXQo
Y29uKTsgLyogbm93IHdlIHdhaXQgKi8KCSAgICAgICAgfQoJICAgICAgICBpZiAocmMgPiAwKSB7
CgkgICAgICAgICAgICB3cml0ZSgxLCBtZW0sIHJjKTsKCSAgICAgICAgICAgIC8vZGF0IHphcGlz
IGRvIHNvdWJvcnUKCSAgICAgICAgfSBlbHNlIHsKCSAgICAgICAgICAgIGJyZWFrOwoJICAgICAg
ICB9CgkgICAgfSB3aGlsZSAoMSk7CglwcmludGYoIlNmdHAgcmVhZCBlbmQiKTsKCglsaWJzc2gy
X3NmdHBfY2xvc2VfaGFuZGxlKGNvbi0+c2Z0cF9oYW5kbGUpOwoKCXJldHVybiAwOwp9CgoKaW50
IHNmdHBfY2xvc2Uoc3RydWN0IGNvbm4gKmNvbil7CglpbnQgcmM7CgoJLy9saWJzc2gyX3NmdHBf
Y2xvc2UoY29uLT5zZnRwX2hhbmRsZSk7CgoJaWYgKChyYyA9IGxpYnNzaDJfc2Z0cF9zaHV0ZG93
bihjb24tPnNmdHBfc2Vzc2lvbikgIT0wKSl7CgkJcGVycm9yKCJTZnRwIHNodXRkb3duIik7CgkJ
cmV0dXJuIC0xOwoJfQoJZWxzZXsKCQljb24tPnNmdHBfYWxpdmUgPSAxOwoJCXJldHVybiAwOwoJ
fQp9CgppbnQgZXhlX2NvbShzdHJ1Y3QgY29ubiAqY29uLCBjaGFyICpjb21tYW5kKXsKCWluaXRf
c2Z0cChjb24pOwoKCWludCByYzsKCWludCBieXRlY291bnQgPSAwOwoKCXdoaWxlKCAoY29uLT5j
aGFubmVsID0gbGlic3NoMl9jaGFubmVsX29wZW5fc2Vzc2lvbihjb24tPnNlc3Npb24pKSA9PSBO
VUxMICYmCgkgICAgICAgICAgIGxpYnNzaDJfc2Vzc2lvbl9sYXN0X2Vycm9yKGNvbi0+c2Vzc2lv
bixOVUxMLE5VTEwsMCkgPT0gTElCU1NIMl9FUlJPUl9FQUdBSU4gKXsKCSAgICAgICAgd2FpdHNv
Y2tldChjb24pOwoJICAgIH0KCgkgICAgaWYoIGNvbi0+Y2hhbm5lbCA9PSBOVUxMICl7CgkgICAg
CXBlcnJvcigiT3BlbiBjaGFubmVsIik7CgkgICAgCXJldHVybiAtMTsKCSAgICB9CgoKCSAgICB3
aGlsZSggKHJjID0gbGlic3NoMl9jaGFubmVsX2V4ZWMoY29uLT5jaGFubmVsLCBjb21tYW5kKSkg
PT0gTElCU1NIMl9FUlJPUl9FQUdBSU4gKXsKCSAgICAgICAgd2FpdHNvY2tldChjb24pOwoJICAg
IH0KCgkgICAgaWYoIHJjICE9IDAgKXsKCSAgICAJZnByaW50ZihzdGRlcnIsIkNhbm5vdCBleGVj
dXRlIGNvbW1hbmRcbiIpOwoJICAgIAlyZXR1cm4gLTE7CgkgICAgfQoKCgoJICAgIGZvcig7Oyl7
CgkgICAgICAgIGRvCgkgICAgICAgIHsKCSAgICAgICAgICAgIGNoYXIgYnVmZmVyWzB4NDAwMF07
CgkgICAgICAgICAgICByYyA9IGxpYnNzaDJfY2hhbm5lbF9yZWFkKCBjb24tPmNoYW5uZWwsIGJ1
ZmZlciwgc2l6ZW9mKGJ1ZmZlcikgKTsKCgkgICAgICAgICAgICBpZgkoIHJjID4gMCApCgkgICAg
ICAgICAgICB7CgkgICAgICAgICAgICAgICAgaW50IGk7CgkgICAgICAgICAgICAgICAgYnl0ZWNv
dW50ICs9IHJjOwoJICAgICAgICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiV2UgcmVhZDpcbiIp
OwoJICAgICAgICAgICAgICAgIGZvciggaT0wOyBpIDwgcmM7ICsraSApCgkgICAgICAgICAgICAg
ICAgICAgIGZwdXRjKCBidWZmZXJbaV0sIHN0ZGVycik7CgoJICAgICAgICAgICAgICAgIGZwcmlu
dGYoc3RkZXJyLCAiXG4iKTsKCSAgICAgICAgICAgIH0KCSAgICAgICAgICAgIGVsc2UgewoJICAg
ICAgICAgICAgICAgIGlmKCByYyAhPSBMSUJTU0gyX0VSUk9SX0VBR0FJTiApCgkgICAgICAgICAg
ICAgICAgewoJICAgICAgICAgICAgICAgIAkvKgoJICAgICAgICAgICAgICAgIAlpZiAocmMgPT0g
MCl7CgkgICAgICAgICAgICAgICAgCQlwcmludGYoIkNoYW5uZWwgZW5kXG4iKTsKCSAgICAgICAg
ICAgICAgICAJCXJldHVybiAwOwoJICAgICAgICAgICAgICAgIAl9CgkgICAgICAgICAgICAgICAg
CWVsc2V7Ki8KCSAgICAgICAgICAgICAgICAgICAgZnByaW50ZihzdGRlcnIsICJsaWJzc2gyX2No
YW5uZWxfcmVhZCByZXR1cm5lZCAlZFxuIiwgcmMpOwoJICAgICAgICAgICAgICAgIAlyZXR1cm4g
LTE7CgkgICAgICAgICAgICAgICAgCS8vfQoJICAgICAgICAgICAgICAgIH0KCSAgICAgICAgICAg
IH0KCSAgICAgICAgfXdoaWxlKCByYyA+IDAgKTsKCgkgICAgICAgIGlmKCByYyA9PSBMSUJTU0gy
X0VSUk9SX0VBR0FJTiApewoJICAgICAgICAgICAgd2FpdHNvY2tldChjb24pOwoJICAgICAgICB9
CgoJICAgICAgICBlbHNlewoJICAgICAgICAgICAgYnJlYWs7CgkgICAgICAgIH0KCSAgICB9Cgkg
ICAgd2hpbGUoIChyYyA9IGxpYnNzaDJfY2hhbm5lbF9jbG9zZShjb24tPmNoYW5uZWwpKSA9PSBM
SUJTU0gyX0VSUk9SX0VBR0FJTiApCgkgICAgICAgIHdhaXRzb2NrZXQoY29uKTsKCgkgIAoJICAg
IHJldHVybiAwOwp9CgppbnQgbWtfZGlyKHN0cnVjdCBjb25uICpjb24sIGNoYXIgKmZvbGRlcl9w
YXRoLCBpbnQgbW9kZSl7CglpbnQgcmM7CgoJaW5pdF9zZnRwKGNvbik7CgoJd2hpbGUgKChyYyA9
IGxpYnNzaDJfc2Z0cF9ta2Rpcihjb24tPnNmdHBfc2Vzc2lvbiwgZm9sZGVyX3BhdGgsIG1vZGUp
KSA9PSBMSUJTU0gyX0VSUk9SX0VBR0FJTikgewoJCQkJCQl3YWl0c29ja2V0KGNvbik7fQoKCWlm
KHJjICE9MCl7CgkJZnByaW50ZihzdGRlcnIsICJDYW5ub3QgY3JlYXRlIGRpcmVjdG9yeSBcbiIp
OwoJCXJldHVybiAtMTsKCX0KCglwcmludGYoIkZvbGRlciBjcmVhdGVkXG4iKTsKCXJldHVybiAw
OwoJLy9zZnRwX2Nsb3NlKGNvbik7Cgp9CgppbnQgcm1fZGlyKHN0cnVjdCBjb25uICpjb24sIGNo
YXIgKmZvbGRlcl9wYXRoKXsKCWludCByYzsKCglpbml0X3NmdHAoY29uKTsKCgl3aGlsZSAoKHJj
ID0gbGlic3NoMl9zZnRwX3JtZGlyKGNvbi0+c2Z0cF9zZXNzaW9uLCBmb2xkZXJfcGF0aCkpID09
IExJQlNTSDJfRVJST1JfRUFHQUlOKSB7CgkJCQkJd2FpdHNvY2tldChjb24pO30KCglpZihyYyAh
PTApewoJCWZwcmludGYoc3RkZXJyLCJDYW5ub3QgcmVtb3ZlIGRpcmVjdG9yeVxuIik7CgkJcmV0
dXJuIC0xOwoJfQoKCXByaW50ZigiRm9sZGVyIGRlbGV0ZWRcbiIpOwoJcmV0dXJuIDA7CgkvL3Nm
dHBfY2xvc2UoY29uKTsKfQoK
--047d7b2ee7cddf4d8504ca6099ee
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: inline

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

--047d7b2ee7cddf4d8504ca6099ee--

From libssh2-devel-bounces@cool.haxx.se  Sun Sep 23 18:28:25 2012
Return-Path: <libssh2-devel-bounces@cool.haxx.se>
Received: from www.haxx.se (localhost.localdomain [127.0.0.1])
	by giant.haxx.se (8.14.4/8.14.4/Debian-2) with ESMTP id q8NGSHxk024115;
	Sun, 23 Sep 2012 18:28:23 +0200
Received: from foo.stuge.se (qmailr@foo.stuge.se [212.116.89.98])
 by giant.haxx.se (8.14.4/8.14.4/Debian-2) with SMTP id q8NGSGak024072
 for <libssh2-devel@cool.haxx.se>; Sun, 23 Sep 2012 18:28:16 +0200
Received: (qmail 23809 invoked by uid 501); 23 Sep 2012 16:28:16 -0000
Message-ID: <20120923162816.23808.qmail@stuge.se>
Date: Sun, 23 Sep 2012 18:28:16 +0200
From: Peter Stuge <peter@stuge.se>
To: libssh2-devel@cool.haxx.se
Subject: Re: Direct tcp ip channel - session handshake
Mail-Followup-To: libssh2-devel@cool.haxx.se
References: <CANKx_q=c+R49PY87m5JaZnjLGugFqvA4B5SLECKNV5NMM9zZsA@mail.gmail.com>
 <20120921144035.23485.qmail@stuge.se>
 <CANKx_qkuUqNAdgCJu4ENS-1axibsvx1PqC5mf59XEOe=w5pWuA@mail.gmail.com>
 <20120923130943.8394.qmail@stuge.se>
 <CANKx_qno9hPVqb8ND8GA6pxM2UZrehj6aiMxPo9Xcbv-KaGJhQ@mail.gmail.com>
 <20120923151034.17979.qmail@stuge.se>
 <CANKx_qnnsLJ1U0gN3OLLwhSRcKBENvtWnTVBXqUhUfiw5KRUMQ@mail.gmail.com>
MIME-Version: 1.0
Content-Disposition: inline
In-Reply-To: <CANKx_qnnsLJ1U0gN3OLLwhSRcKBENvtWnTVBXqUhUfiw5KRUMQ@mail.gmail.com>
X-BeenThere: libssh2-devel@cool.haxx.se
X-Mailman-Version: 2.1.15
Precedence: list
Reply-To: libssh2 development <libssh2-devel@cool.haxx.se>
List-Id: libssh2 development <libssh2-devel.cool.haxx.se>
List-Unsubscribe: <http://cool.haxx.se/cgi-bin/mailman/options/libssh2-devel>, 
 <mailto:libssh2-devel-request@cool.haxx.se?subject=unsubscribe>
List-Archive: <http://cool.haxx.se/pipermail/libssh2-devel/>
List-Post: <mailto:libssh2-devel@cool.haxx.se>
List-Help: <mailto:libssh2-devel-request@cool.haxx.se?subject=help>
List-Subscribe: <http://cool.haxx.se/cgi-bin/mailman/listinfo/libssh2-devel>, 
 <mailto:libssh2-devel-request@cool.haxx.se?subject=subscribe>
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Errors-To: libssh2-devel-bounces@cool.haxx.se
Sender: "libssh2-devel" <libssh2-devel-bounces@cool.haxx.se>

Jiri wrote:
> Sorry, Its my mistake.
> I'm sending the program in the atachment. It doesn't include all the
> parts I've implemented (sftp, work with directories etc for example)
> but in the terms of this problem it includes everything necessary.

The file you attached isn't helpful. There's no main loop and
select() isn't even being called.

You really need to show what you are trying to do. Spend a few days
on creating a minimal example that attempts to do what you want but
does not work - so that someone can look at it and tell you why.


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

From libssh2-devel-bounces@cool.haxx.se  Mon Sep 24 14:47:22 2012
Return-Path: <libssh2-devel-bounces@cool.haxx.se>
Received: from www.haxx.se (localhost.localdomain [127.0.0.1])
	by giant.haxx.se (8.14.4/8.14.4/Debian-2) with ESMTP id q8OCkrQd015449;
	Mon, 24 Sep 2012 14:47:14 +0200
Received: from mail-ie0-f182.google.com (mail-ie0-f182.google.com
 [209.85.223.182])
 by giant.haxx.se (8.14.4/8.14.4/Debian-2) with ESMTP id q8OCko6o015407
 (version=TLSv1/SSLv3 cipher=RC4-SHA bits=128 verify=NOT)
 for <libssh2-devel@cool.haxx.se>; Mon, 24 Sep 2012 14:46:51 +0200
Received: by ieak10 with SMTP id k10so9043849iea.41
 for <libssh2-devel@cool.haxx.se>; Mon, 24 Sep 2012 05:46:44 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113;
 h=mime-version:date:message-id:subject:from:to:content-type;
 bh=lqjhxzDt6KxXwHaGCoYSCpBrMBemfXqdnHy4G5aGmYE=;
 b=aymLQmLYkB5FlRWB5CT5rL5Hp1G0EbtGxttgRteI7yoRFLzfkMEwT1/ENUw2uC6cQ1
 otX5f13HMMzunBnhMzYxzndyzvxnnD8JnBvyXe1ejOY/ljb6mBf7NBVohML7CsAEnRoT
 mwH4Dbb9CFQIZxwRYoc/xWI4uiyowk+kwNfq90pnoiVB5OXT1/4XRB0riPcTjlWdOZ6C
 PFVCvOPw/FLlfliLA0B/lyIictMitjajEDR12ua8E9+vf1MSlZeTAtqY/EEP0DCwNwWC
 0qyAjGORbdovXs56ix15w2yaKuYSPsalnGQgHzOBuJOeJ+1svthxa9smNKmknLJWsFBB
 7uow==
MIME-Version: 1.0
Received: by 10.50.236.72 with SMTP id us8mr5018270igc.70.1348490804708; Mon,
 24 Sep 2012 05:46:44 -0700 (PDT)
Received: by 10.64.171.100 with HTTP; Mon, 24 Sep 2012 05:46:44 -0700 (PDT)
Date: Mon, 24 Sep 2012 16:46:44 +0400
Message-ID: <CAMPTgK33DiTfLe6hYFHYQweR_-1eOyuzgzcCCfUwJ7ptZZDQTQ@mail.gmail.com>
Subject: Check if LIBSSH2_SFTP_ATTRIBUTES points to a directory.
From: niXman <i.nixman@gmail.com>
To: libssh2-devel@cool.haxx.se
X-BeenThere: libssh2-devel@cool.haxx.se
X-Mailman-Version: 2.1.15
Precedence: list
Reply-To: libssh2 development <libssh2-devel@cool.haxx.se>
List-Id: libssh2 development <libssh2-devel.cool.haxx.se>
List-Unsubscribe: <http://cool.haxx.se/cgi-bin/mailman/options/libssh2-devel>, 
 <mailto:libssh2-devel-request@cool.haxx.se?subject=unsubscribe>
List-Archive: <http://cool.haxx.se/pipermail/libssh2-devel/>
List-Post: <mailto:libssh2-devel@cool.haxx.se>
List-Help: <mailto:libssh2-devel-request@cool.haxx.se?subject=help>
List-Subscribe: <http://cool.haxx.se/cgi-bin/mailman/listinfo/libssh2-devel>, 
 <mailto:libssh2-devel-request@cool.haxx.se?subject=subscribe>
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Errors-To: libssh2-devel-bounces@cool.haxx.se
Sender: "libssh2-devel" <libssh2-devel-bounces@cool.haxx.se>

Hi,

I use libssh2_sftp_readdir_ex() to read directory entries.
Tell me plase, how I can check thah LIBSSH2_SFTP_ATTRIBUTES points to
a directory?


Thanks.

-- 
Regards,
niXman
___________________________________________________
Dual-target(32 & 64 bit) MinGW compilers for 32 and 64 bit Windows:
http://sourceforge.net/projects/mingwbuilds/
_______________________________________________
libssh2-devel http://cool.haxx.se/cgi-bin/mailman/listinfo/libssh2-devel

From libssh2-devel-bounces@cool.haxx.se  Mon Sep 24 15:17:33 2012
Return-Path: <libssh2-devel-bounces@cool.haxx.se>
Received: from www.haxx.se (localhost.localdomain [127.0.0.1])
	by giant.haxx.se (8.14.4/8.14.4/Debian-2) with ESMTP id q8ODHQZa002618;
	Mon, 24 Sep 2012 15:17:31 +0200
Received: from mail-qc0-f182.google.com (mail-qc0-f182.google.com
 [209.85.216.182])
 by giant.haxx.se (8.14.4/8.14.4/Debian-2) with ESMTP id q8ODHM5L002578
 (version=TLSv1/SSLv3 cipher=RC4-SHA bits=128 verify=NOT)
 for <libssh2-devel@cool.haxx.se>; Mon, 24 Sep 2012 15:17:23 +0200
Received: by qcsl39 with SMTP id l39so223927qcs.41
 for <libssh2-devel@cool.haxx.se>; Mon, 24 Sep 2012 06:17:18 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113;
 h=mime-version:sender:in-reply-to:references:date
 :x-google-sender-auth:message-id:subject:from:to:content-type;
 bh=HFvLEdSMl/2r2wYOijNfrHtwS5mAvZcEOS65YGyjBBQ=;
 b=CjmpMCTBuVBlMtyke28YT6IaxEPHETexAS/i3lMB0Tbohc/QWWfNxPNzRnFQXIbaUV
 4bnCax95Z7D+TemmDhdO7XeIE4qNdYVT3tZdRfT7QwFCe16ESHJI2ml+hVGgRsavhvk7
 kHhIEDuNyt+ng+HI7ocxy0ihDXipoHHDW3lJN9Vm6UugFQvQ7gAh1KUY4Vl+nur9e5P3
 I2cbXEedv6sH7+ng8Mou6ROq5gx9Xl3WdPx+AR1DEPtIiCSJ7SyDcf8DOl6z3nFUVNMA
 v0OrY7W1I4YsWNi851sp/J1mo5j5A7v+MMt3Wh7CI1IVVpLrU09iFC/0ZZx7xNmFszci
 M+1g==
MIME-Version: 1.0
Received: by 10.224.209.7 with SMTP id ge7mr30844821qab.30.1348492637920; Mon,
 24 Sep 2012 06:17:17 -0700 (PDT)
Received: by 10.229.181.130 with HTTP; Mon, 24 Sep 2012 06:17:17 -0700 (PDT)
In-Reply-To: <CAMPTgK33DiTfLe6hYFHYQweR_-1eOyuzgzcCCfUwJ7ptZZDQTQ@mail.gmail.com>
References: <CAMPTgK33DiTfLe6hYFHYQweR_-1eOyuzgzcCCfUwJ7ptZZDQTQ@mail.gmail.com>
Date: Mon, 24 Sep 2012 14:17:17 +0100
X-Google-Sender-Auth: IhjiYdxGurjrLREDeOEB6-rQk9k
Message-ID: <CADyPeTM_G=14j3iW2qUGEJOs6Jto21kwgKLu0Db8fUGJQ7TzKQ@mail.gmail.com>
Subject: Re: Check if LIBSSH2_SFTP_ATTRIBUTES points to a directory.
From: Alexander Lamaison <swish@lammy.co.uk>
To: libssh2 development <libssh2-devel@cool.haxx.se>
X-BeenThere: libssh2-devel@cool.haxx.se
X-Mailman-Version: 2.1.15
Precedence: list
Reply-To: libssh2 development <libssh2-devel@cool.haxx.se>
List-Id: libssh2 development <libssh2-devel.cool.haxx.se>
List-Unsubscribe: <http://cool.haxx.se/cgi-bin/mailman/options/libssh2-devel>, 
 <mailto:libssh2-devel-request@cool.haxx.se?subject=unsubscribe>
List-Archive: <http://cool.haxx.se/pipermail/libssh2-devel/>
List-Post: <mailto:libssh2-devel@cool.haxx.se>
List-Help: <mailto:libssh2-devel-request@cool.haxx.se?subject=help>
List-Subscribe: <http://cool.haxx.se/cgi-bin/mailman/listinfo/libssh2-devel>, 
 <mailto:libssh2-devel-request@cool.haxx.se?subject=subscribe>
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Errors-To: libssh2-devel-bounces@cool.haxx.se
Sender: "libssh2-devel" <libssh2-devel-bounces@cool.haxx.se>

On 24 September 2012 13:46, niXman <i.nixman@gmail.com> wrote:
>
> I use libssh2_sftp_readdir_ex() to read directory entries.
> Tell me plase, how I can check thah LIBSSH2_SFTP_ATTRIBUTES points to
> a directory?

That struct is modelled on a standard Unix 'stat' buffer.  See some
code here [1] that extracts the file type from it using the #defines
in libssh2.

[1] https://github.com/alamaison/swish/blob/master/ssh/sftp.hpp#L464

Alex

-- 
Swish - Easy SFTP for Windows Explorer (http://www.swish-sftp.org)
_______________________________________________
libssh2-devel http://cool.haxx.se/cgi-bin/mailman/listinfo/libssh2-devel

From libssh2-devel-bounces@cool.haxx.se  Mon Sep 24 15:20:40 2012
Return-Path: <libssh2-devel-bounces@cool.haxx.se>
Received: from www.haxx.se (localhost.localdomain [127.0.0.1])
	by giant.haxx.se (8.14.4/8.14.4/Debian-2) with ESMTP id q8ODKcg7005101;
	Mon, 24 Sep 2012 15:20:39 +0200
Received: from mail-ie0-f182.google.com (mail-ie0-f182.google.com
 [209.85.223.182])
 by giant.haxx.se (8.14.4/8.14.4/Debian-2) with ESMTP id q8ODKaBt005050
 (version=TLSv1/SSLv3 cipher=RC4-SHA bits=128 verify=NOT)
 for <libssh2-devel@cool.haxx.se>; Mon, 24 Sep 2012 15:20:37 +0200
Received: by ieak10 with SMTP id k10so9145038iea.41
 for <libssh2-devel@cool.haxx.se>; Mon, 24 Sep 2012 06:20:32 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113;
 h=mime-version:in-reply-to:references:date:message-id:subject:from:to
 :content-type; bh=/9aF5NAKPBHTxX9u7v53SXBYWABji/fOk9U2DoI/vj8=;
 b=OOFFUCi95mkoy9JcDT5/f8Cc7tluywPu7rd2ojkHvPS0kHxgM7G5v7yBQpR4oyy8zY
 FY1fOhKKNpMyTvV1anjkFii2oIeLWiag7lcTXnRQXf5swRmPpibfetxxggJUGQteAI0X
 mZanjZDs0DNM7EzmwFGYSArFhFIT1g9zi/YHbGeN6iqeakpsZ1Zh/prTG39Z3kMXDPBz
 i7hYbzc+hQ0OY3gGjG5eJnxyVCrSOF/y/Sjm58AwLV+YjiEXTRTkFRu4OpI1sZtoDofa
 MI+aGENFTipIe4WkWYAy3kqWeAjSnQrbTkgCKhOYe2z98FYaUsk3gL6cPwyAVE3OCPNN
 qgaQ==
MIME-Version: 1.0
Received: by 10.42.43.1 with SMTP id v1mr9451652ice.23.1348492832296; Mon, 24
 Sep 2012 06:20:32 -0700 (PDT)
Received: by 10.64.171.100 with HTTP; Mon, 24 Sep 2012 06:20:32 -0700 (PDT)
In-Reply-To: <CADyPeTM_G=14j3iW2qUGEJOs6Jto21kwgKLu0Db8fUGJQ7TzKQ@mail.gmail.com>
References: <CAMPTgK33DiTfLe6hYFHYQweR_-1eOyuzgzcCCfUwJ7ptZZDQTQ@mail.gmail.com>
 <CADyPeTM_G=14j3iW2qUGEJOs6Jto21kwgKLu0Db8fUGJQ7TzKQ@mail.gmail.com>
Date: Mon, 24 Sep 2012 17:20:32 +0400
Message-ID: <CAMPTgK2iaz5=ZQMEyQUNqe9pMRXP-RHP7tcwMp_tFpeKDcDMhg@mail.gmail.com>
Subject: Re: Check if LIBSSH2_SFTP_ATTRIBUTES points to a directory.
From: niXman <i.nixman@gmail.com>
To: libssh2 development <libssh2-devel@cool.haxx.se>
X-BeenThere: libssh2-devel@cool.haxx.se
X-Mailman-Version: 2.1.15
Precedence: list
Reply-To: libssh2 development <libssh2-devel@cool.haxx.se>
List-Id: libssh2 development <libssh2-devel.cool.haxx.se>
List-Unsubscribe: <http://cool.haxx.se/cgi-bin/mailman/options/libssh2-devel>, 
 <mailto:libssh2-devel-request@cool.haxx.se?subject=unsubscribe>
List-Archive: <http://cool.haxx.se/pipermail/libssh2-devel/>
List-Post: <mailto:libssh2-devel@cool.haxx.se>
List-Help: <mailto:libssh2-devel-request@cool.haxx.se?subject=help>
List-Subscribe: <http://cool.haxx.se/cgi-bin/mailman/listinfo/libssh2-devel>, 
 <mailto:libssh2-devel-request@cool.haxx.se?subject=subscribe>
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Errors-To: libssh2-devel-bounces@cool.haxx.se
Sender: "libssh2-devel" <libssh2-devel-bounces@cool.haxx.se>

2012/9/24 Alexander Lamaison:

> That struct is modelled on a standard Unix 'stat' buffer.  See some
> code here [1] that extracts the file type from it using the #defines
> in libssh2.
>
> [1] https://github.com/alamaison/swish/blob/master/ssh/sftp.hpp#L464
>
> Alex

Thank you.


-- 
Regards,
niXman
___________________________________________________
Dual-target(32 & 64 bit) MinGW compilers for 32 and 64 bit Windows:
http://sourceforge.net/projects/mingwbuilds/
_______________________________________________
libssh2-devel http://cool.haxx.se/cgi-bin/mailman/listinfo/libssh2-devel

