From libssh2-devel-bounces@cool.haxx.se Tue Sep 4 05:50:31 2012 Return-Path: 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 ; Tue, 4 Sep 2012 05:49:20 +0200 Received: by pbbrp2 with SMTP id rp2so8162534pbb.41 for ; 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 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 List-Id: libssh2 development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: multipart/mixed; boundary="===============2036458546==" Errors-To: libssh2-devel-bounces@cool.haxx.se Sender: "libssh2-devel" --===============2036458546== Content-Type: text/html; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit 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 don't have the retail version of Visual Studio 2010.

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.

Thanks,
Andrew.
--===============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: 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 ; Tue, 4 Sep 2012 08:45:00 +0200 Received: by vcbgb22 with SMTP id gb22so6547344vcb.41 for ; 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: Subject: SSH timeout From: anirudh nair 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 List-Id: libssh2 development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: multipart/mixed; boundary="===============2112116081==" Errors-To: libssh2-devel-bounces@cool.haxx.se Sender: "libssh2-devel" --===============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

Is it advisable to persist the SSH session ob= ject(LIBSSH2_SESSION). Are there chances for the=A0
session to ti= meout. Can I set the session not to timeout at all?

Thanks
Anirudh
--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: 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 ; Tue, 4 Sep 2012 11:57:23 +0200 Received: by qcsg15 with SMTP id g15so4155474qcs.41 for ; 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: Subject: Re: Visual C++ 2010 Express edition cannot open and convert libssh2 win32 project file From: Alexander Lamaison To: libssh2 development X-BeenThere: libssh2-devel@cool.haxx.se X-Mailman-Version: 2.1.15 Precedence: list Reply-To: libssh2 development List-Id: libssh2 development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Errors-To: libssh2-devel-bounces@cool.haxx.se Sender: "libssh2-devel" On 4 September 2012 04:49, Noah 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: 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 ; Tue, 4 Sep 2012 12:05:48 +0200 Received: by qadc11 with SMTP id c11so2840807qad.20 for ; 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: References: Date: Tue, 4 Sep 2012 11:05:43 +0100 X-Google-Sender-Auth: 7Bkjk_So38pJU9otj-uHceLS_Vw Message-ID: Subject: Re: SSH timeout From: Alexander Lamaison To: libssh2 development X-BeenThere: libssh2-devel@cool.haxx.se X-Mailman-Version: 2.1.15 Precedence: list Reply-To: libssh2 development List-Id: libssh2 development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Errors-To: libssh2-devel-bounces@cool.haxx.se Sender: "libssh2-devel" On 4 September 2012 07:44, anirudh nair 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: 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 ; 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 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 Subject: Re: Visual C++ 2010 Express edition cannot open and convert libssh2 win32 project file References: <50457A33.2040905@gmail.com> In-Reply-To: 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 List-Id: libssh2 development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="iso-8859-1"; Format="flowed" Errors-To: libssh2-devel-bounces@cool.haxx.se Sender: "libssh2-devel" 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: 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 ; Tue, 4 Sep 2012 13:08:14 +0200 Received: by dadr6 with SMTP id r6so3911924dad.41 for ; 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 User-Agent: Mozilla/5.0 (Windows NT 6.1; rv:15.0) Gecko/20120824 Thunderbird/15.0 MIME-Version: 1.0 To: libssh2 development Subject: Re: Visual C++ 2010 Express edition cannot open and convert libssh2 win32 project file References: <50457A33.2040905@gmail.com> In-Reply-To: X-BeenThere: libssh2-devel@cool.haxx.se X-Mailman-Version: 2.1.15 Precedence: list Reply-To: libssh2 development List-Id: libssh2 development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: multipart/mixed; boundary="===============0694470758==" Errors-To: libssh2-devel-bounces@cool.haxx.se Sender: "libssh2-devel" --===============0694470758== Content-Type: text/html; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit 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.

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.





On 4/09/2012 7:57 PM, Alexander Lamaison wrote:
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


--===============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: 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 ; 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" 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 List-Id: libssh2 development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Errors-To: libssh2-devel-bounces@cool.haxx.se Sender: "libssh2-devel" #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: libssh2 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: 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 ; 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" 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 List-Id: libssh2 development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Errors-To: libssh2-devel-bounces@cool.haxx.se Sender: "libssh2-devel" #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: libssh2 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: 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 ; Mon, 10 Sep 2012 14:22:41 +0200 Received: by vbmv11 with SMTP id v11so2638766vbm.41 for ; 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: Subject: Re: [libssh2] #248: A small patch to handle private key in memory From: Joe Turpin To: trac@libssh2.stuge.se, libssh2 development X-BeenThere: libssh2-devel@cool.haxx.se X-Mailman-Version: 2.1.15 Precedence: list Reply-To: libssh2 development List-Id: libssh2 development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: multipart/mixed; boundary="===============1459978928==" Errors-To: libssh2-devel-bounces@cool.haxx.se Sender: "libssh2-devel" --===============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 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: > libssh2 > 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:


On Mon, Sep 10, 2012 at 5:14 AM, li= bssh2 Trac <trac@libssh2.stuge.se> wrote:
#248: A small patch to handle private key in memory
--------------------------+-------------------
=A0 Reporter: =A0intron =A0 =A0 =A0 | =A0 =A0 =A0Owner: =A0 =A0 =A0 Type: =A0enhancement =A0| =A0 =A0 Status: =A0new
=A0 Priority: =A0normal =A0 =A0 =A0 | =A0Milestone: =A01.4.3
=A0Component: =A0API =A0 =A0 =A0 =A0 =A0| =A0 =A0Version: =A01.4.2
Resolution: =A0 =A0 =A0 =A0 =A0 =A0 =A0 | =A0 Keywords:
Blocked By: =A0 =A0 =A0 =A0 =A0 =A0 =A0 | =A0 =A0 Blocks:
--------------------------+-------------------

Comment (by alamaison):

=A0I'd like to see this feature in libssh2 but as a new API function, n= ot
=A0using this magic string. =A0In fact, =A0libssh2_userauth_publickey might= give
=A0you all you need to implement this without modifying libssh2 at all.
=A0Though, of course, it would be nicer to have it included in the API for<= br> =A0others to benefit.

=A0Also, any solution should address libgcrypt as well.

--
Ticket URL: <https://trac.libssh2.org/ticket/248#comment:1>

--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: 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 ; Mon, 10 Sep 2012 14:42:06 +0200 Received: by qcsg15 with SMTP id g15so1127581qcs.41 for ; 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: References: <043.48c1af7833dd360b0e68e04fd78bedf2@libssh2.stuge.se> <058.9c12b5a7a3cfd02f0299f4c7f317223f@libssh2.stuge.se> Date: Mon, 10 Sep 2012 13:42:00 +0100 X-Google-Sender-Auth: CzNm8Bj6dudYOiirCfVURCEOPR4 Message-ID: Subject: Re: [libssh2] #248: A small patch to handle private key in memory From: Alexander Lamaison To: libssh2 development X-BeenThere: libssh2-devel@cool.haxx.se X-Mailman-Version: 2.1.15 Precedence: list Reply-To: libssh2 development List-Id: libssh2 development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Errors-To: libssh2-devel-bounces@cool.haxx.se Sender: "libssh2-devel" >> 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 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: 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 ; 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" 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 List-Id: libssh2 development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Errors-To: libssh2-devel-bounces@cool.haxx.se Sender: "libssh2-devel" #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: libssh2 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: 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 ; 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" 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 List-Id: libssh2 development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Errors-To: libssh2-devel-bounces@cool.haxx.se Sender: "libssh2-devel" #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: libssh2 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: 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 ; 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 ; 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 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 List-Id: libssh2 development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-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" 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: 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 ; 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 ; 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 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 List-Id: libssh2 development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-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" --- 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: 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 ; 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 ; 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 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 List-Id: libssh2 development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-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" 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: 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 ; 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 ; 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 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 List-Id: libssh2 development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-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" --- 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: 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 ; 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 ; 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 X-X-Sender: dast@giant.haxx.se To: libssh2 development 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: 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 List-Id: libssh2 development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-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" 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: 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 ; Thu, 13 Sep 2012 16:06:20 +0200 Received: by iayy25 with SMTP id y25so2403344iay.41 for ; 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: References: Date: Thu, 13 Sep 2012 15:06:13 +0100 Message-ID: Subject: Re: SSH timeout From: Paulo Caetano To: libssh2 development X-BeenThere: libssh2-devel@cool.haxx.se X-Mailman-Version: 2.1.15 Precedence: list Reply-To: libssh2 development List-Id: libssh2 development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Errors-To: libssh2-devel-bounces@cool.haxx.se Sender: "libssh2-devel" On Tue, Sep 4, 2012 at 11:05 AM, Alexander Lamaison wrote: > On 4 September 2012 07:44, anirudh nair 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: 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 ; Thu, 13 Sep 2012 17:47:04 +0200 Received: by vbbfq11 with SMTP id fq11so767661vbb.16 for ; 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: References: <043.48c1af7833dd360b0e68e04fd78bedf2@libssh2.stuge.se> <058.9c12b5a7a3cfd02f0299f4c7f317223f@libssh2.stuge.se> Date: Thu, 13 Sep 2012 11:46:59 -0400 Message-ID: Subject: Re: [libssh2] #248: A small patch to handle private key in memory From: Joe Turpin To: libssh2 development X-BeenThere: libssh2-devel@cool.haxx.se X-Mailman-Version: 2.1.15 Precedence: list Reply-To: libssh2 development List-Id: libssh2 development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Errors-To: libssh2-devel-bounces@cool.haxx.se Sender: "libssh2-devel" On Mon, Sep 10, 2012 at 8:42 AM, Alexander Lamaison wrote: > 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: 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 ; 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 Message-ID: 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 List-Id: libssh2 development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: multipart/mixed; boundary="===============0736292306==" Errors-To: libssh2-devel-bounces@cool.haxx.se Sender: "libssh2-devel" 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 Hello everybody.

While trying to compile libssh2 1.4.2 on Linux I am getting this error 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 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:
./configure --prefix=3D/ama/wh/bin/h= ttpd-1447/libssh2 --with-openssl --without-libgcrypt --with-libssl-prefix=3D/ama/wh/bin/httpd= -1447/openssl

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?

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

3D"Amadeus




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.  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.  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.

Amadeus Data Processing GmbH
Gesch=E4ftsf=FChrer: Eberhard Haag
Sitz der Gesellschaft: Erding
HR M=FCnchen 48 199
Berghamer Strasse 6
85435 Erding
Germany
--=_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: 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 ; 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 Subject: Want to static compile libssh2 and libcrypto both? To: "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 , libssh2 development List-Id: libssh2 development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: multipart/mixed; boundary="===============1389050825==" Errors-To: libssh2-devel-bounces@cool.haxx.se Sender: "libssh2-devel" --===============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

In my project, I= can statically link libssh2 or libcrypto, but not both?   When I= try both, I get a bunch of undefined reference error from libssh2.a for op= enssl functions.   It seems like libcrypto is not statically link= ed in libssh2.a.   What is the right way to build libssh2.a where= libcrypto is statically linked in?   If I build my project with libcr= ytpo as shared or dynamic lib, everything is golden.

one of the many errors(sorry for any typos):   
=
undefined reference 'EVP_get_digestbyname' in function 'hostkey_m= ethod_ssh_dss_dtor'
file not found: /usr/local/lib/libssh2.a(host= key.o)

---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: 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 ; 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 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 List-Id: libssh2 development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Errors-To: libssh2-devel-bounces@cool.haxx.se Sender: "libssh2-devel" 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: 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 ; 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 ; 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 X-X-Sender: dast@giant.haxx.se To: libssh2 development Subject: Re: Cannot build libssh2 In-Reply-To: Message-ID: References: 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 List-Id: libssh2 development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-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" 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: 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 ; 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: References: To: libssh2 development Cc: libssh2 development , "libssh2-devel" 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: From: Hiran Chaudhuri 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 List-Id: libssh2 development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: multipart/mixed; boundary="===============0633673170==" Errors-To: libssh2-devel-bounces@cool.haxx.se Sender: "libssh2-devel" 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 | 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 On Sun, 16 Sep 2012, Dani= el 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 something on
>> the 'standard' path?
>
>Dig into the config.log file after the failure and see the details of what
>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 resides in the path that I specified.
So the file /ama/wh/b= in/httpd-1447/openssl/include/openssl/ssl.h exists, and /ama/wh/bin/httpd-1447/openssl is the path I specified.<= /tt>

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   conft= est.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"<= /tt>
| #define PACKAGE=5FTARNAME "libssh2"
| #define PACKAGE=5FVERSION "-"
| #define PACKAGE=5FSTRING "libssh2 -"
| #define PACKAGE=5FBUGREPORT "libssh2-devel@co= ol.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 ()
| {
|
|   ;
|   return 0;
| }
configure:13799: result: no
configure:14357: error: cannot find OpenSSL or Libgc= rypt,
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
<= br> http://www.amadeus.com

3D"Amadeus




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.  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.  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.

Amadeus Data Processing GmbH
Gesch=E4ftsf=FChrer: Eberhard Haag
Sitz der Gesellschaft: Erding
HR M=FCnchen 48 199
Berghamer Strasse 6
85435 Erding
Germany
--=_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: 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 ; 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 To: libssh2-devel@cool.haxx.se Subject: Re: Cannot build libssh2 Mail-Followup-To: libssh2-devel@cool.haxx.se References: MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: X-BeenThere: libssh2-devel@cool.haxx.se X-Mailman-Version: 2.1.15 Precedence: list Reply-To: libssh2 development List-Id: libssh2 development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Errors-To: libssh2-devel-bounces@cool.haxx.se Sender: "libssh2-devel" 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: 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 ; 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 ; 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 ; 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 To: "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: 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 List-Id: libssh2 development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: multipart/mixed; boundary="===============0235728127==" Errors-To: libssh2-devel-bounces@cool.haxx.se Sender: "libssh2-devel" --===============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

Hi there,

 

I’m trying to compile libssh2 under x64 on Vis= ual Studio 2010 but am not having much luck at the moment.

 

I added the curl include path to the configuration w= hich eliminates the missing curl.h references.  Then unfortunately I g= et 2229 errors.

 

Many thanks in advance for any help.  I’v= e put an excerpt of some of the errors below…

 

Error      201  &= nbsp;      error C2081: 'key_exchange_state_t' : n= ame in formal parameter list illegal      &nb= sp;   c:\pop\libcurl_x64\libssh2-1.4.2\libssh2-1.4.2\src\libssh2_= priv.h      1010     &nbs= p; 1            = ;  libssh2

Error      864  &= nbsp;      error C2143: syntax error : missing ')'= before '*'  c:\ pop \libcurl_x64\libssh2-1.4.2\libssh2-1.4.2\src\cryp= to.h            = ;    99         = ;  1           =    libssh2

Error      870  &= nbsp;      error C2143: syntax error : missing ')'= before '*'  c:\ pop \libcurl_x64\libssh2-1.4.2\libssh2-1.4.2\src\cryp= to.h            = ;    104         1&n= bsp;            = ; libssh2

Error      901  &= nbsp;      error C2143: syntax error : missing ')'= before '*'  c:\ pop \libcurl_x64\libssh2-1.4.2\libssh2-1.4.2\src\libs= sh2_priv.h 842         1  = ;            libssh2=

Error      910  &= nbsp;      error C2143: syntax error : missing ')'= before '*'  c:\ pop \libcurl_x64\libssh2-1.4.2\libssh2-1.4.2\src\libs= sh2_priv.h 1010       1   &nbs= p;          libssh2=

Error      930  &= nbsp;      error C2143: syntax error : missing ')'= before '*'  c:\ pop \libcurl_x64\libssh2-1.4.2\libssh2-1.4.2\src\cryp= to.h            = ;    47         = ;  1           =    libssh2

Error      934  &= nbsp;      error C2143: syntax error : missing ')'= before '*'  c:\ pop \libcurl_x64\libssh2-1.4.2\libssh2-1.4.2\src\cryp= to.h            = ;    63         = ;  1           =    libssh2

Error      940  &= nbsp;      error C2143: syntax error : missing ')'= before '*'  c:\ pop \libcurl_x64\libssh2-1.4.2\libssh2-1.4.2\src\cryp= to.h            = ;    67         = ;  1           =    libssh2

 

Nick.

--_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: 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 ; Mon, 17 Sep 2012 11:55:05 +0200 Received: by qcsg15 with SMTP id g15so4638889qcs.41 for ; 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: References: Date: Mon, 17 Sep 2012 10:54:59 +0100 X-Google-Sender-Auth: XqDArQuQm9O5A_wpKbDjAxPYSgE Message-ID: Subject: Re: Compiling libssh2 under x64 with Visual Studio 2010 From: Alexander Lamaison To: libssh2 development 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 List-Id: libssh2 development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="windows-1252" Errors-To: libssh2-devel-bounces@cool.haxx.se Sender: "libssh2-devel" 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 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: 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 ; 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 ; 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 ; 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 To: "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: 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 List-Id: libssh2 development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Errors-To: libssh2-devel-bounces@cool.haxx.se Sender: "libssh2-devel" 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 To: libssh2 development Subject: Re: Compiling libssh2 under x64 with Visual Studio 2010 Message-ID: Content-Type: text/plain; charset=windows-1252 On 17 September 2012 10:32, Nick Pateman 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: 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 ; 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 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: MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: X-BeenThere: libssh2-devel@cool.haxx.se X-Mailman-Version: 2.1.15 Precedence: list Reply-To: libssh2 development List-Id: libssh2 development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Errors-To: libssh2-devel-bounces@cool.haxx.se Sender: "libssh2-devel" 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: 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 ; Mon, 17 Sep 2012 12:24:16 +0200 Received: by qcsg15 with SMTP id g15so4654795qcs.41 for ; 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: References: Date: Mon, 17 Sep 2012 11:24:10 +0100 X-Google-Sender-Auth: Qodc4iVMHn2QZbnO2Zdai5JR2os Message-ID: Subject: Re: Compiling libssh2 under x64 with Visual Studio 2010 From: Alexander Lamaison To: libssh2 development X-BeenThere: libssh2-devel@cool.haxx.se X-Mailman-Version: 2.1.15 Precedence: list Reply-To: libssh2 development List-Id: libssh2 development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Errors-To: libssh2-devel-bounces@cool.haxx.se Sender: "libssh2-devel" On 17 September 2012 11:15, Nick Pateman 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: 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 ; 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 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: MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: X-BeenThere: libssh2-devel@cool.haxx.se X-Mailman-Version: 2.1.15 Precedence: list Reply-To: libssh2 development List-Id: libssh2 development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Errors-To: libssh2-devel-bounces@cool.haxx.se Sender: "libssh2-devel" 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: 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 ; 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: <20120917085922.11594.qmail@stuge.se> To: libssh2 development 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: From: Hiran Chaudhuri 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 List-Id: libssh2 development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: multipart/mixed; boundary="===============0651070039==" Errors-To: libssh2-devel-bounces@cool.haxx.se Sender: "libssh2-devel" 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 On 17 Sep 2012 Peter Stuge wrote:
>It is ridiculous and embarrassing for your emplo= yer that you send
>claims of confidentiality to a public mailing list.

To some degree my personal view and that of my emplo= yer may differ, 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 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

3D"Amadeus





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.  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.  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.

Amadeus Data Processing GmbH
Gesch=E4ftsf=FChrer: Eberhard Haag
Sitz der Gesellschaft: Erding
HR M=FCnchen 48 199
Berghamer Strasse 6
85435 Erding
Germany
--=_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 6ll4PTizHpwXenfk2N3uL9Rspq3MZ7djvfYs7ptVlH15yq7bnZDzjAmx4aCdK/za2sY1WYg8E4y4 dIcQjXqH9biYJEcUZRvWXCZX6T4Uw+sHVc7pH1hx7K7rXYBDHZVTjLB6jrGafu+2vcuozcyrEwrc t5llbC8R3/daP66xOqdOHVb+s4vL/QxxV5Pb61zP+k5U+g57+tYnT+nWSXYTjZnA+FBAxWO/42zY /wD6ykYCUImvkrj/ALso8YP/AHKBIxlIfv3wf3hLgS/U3M6jnWZ1vULrX3UWbBQT7GzJ27f3vzVb yujddzy69/VLMFxn0sfHEMYPzPVfua61/wC+qf1Zsbj9a+sDXmG12iwnym0lXumZ/U+vUuy8e1uD hF7mVbWiy5wadrnudZ+iq/7asSyWJylHhjGo6kaDij8oVCjCMZXI+rQHfhluj+qXUc7qGDlY2e/f fiWuodc0w4/ytw/Ob+8qXQa+odQzOpUZHUsoNw7vTqLHtBiXfT3Mdu+iifUZrmP6uxzi8ty3Audy SN3udCl9Uv8AlXrn/hn+L0Z1E5qAFcJGndEbIxWTrxA69mWZ1Pq31dyKndQs+39LudsORtDbaif9 Js9ljVDrVuV/zj6di4+bfVjZ4cbG1vEaD2uq3Ndt3I/18tqZ9XrGPgvtsY2od907vb/ZasvPxrx1 f6tYzrHUXNx9jrGwXNcGe7+cD2o4wCBMgAkZInTQ8MeIT4VZCQTGyQDAjXUcUvlt6KnpWVj5ldje oZF1Ba9ttNzgeR7LK3Maz3NWZ9VcjOyOpdUZk5Vt9eFb6NLHkRG6wbnbQNzv0a1MTpmVj9ROVdm2 ZVZqNYZaGgtcXNfuZ6Ta2e7b+6sn6pEM6116l2ln2jdt8t1vu/6SYDcMmolUY61/WXnScNDGzLS/ 6qT645ObiHBfiZNlHr3imwMIgtP50OB96L1vMsr6h03ozcl+NVlbjdkh0WEMHsqZb+Y+1/56rfXr 6HS//DjVq9a6P07rbPseSSL6QLK3sMPZulod/Vf6aUTERxGQ09dkD/Fl/goIkZZADr6aF/40f8Ja npmXidUqtqyr7sJ1b2203WGwNf7fTe0v9/7y1VyXR7Os9F67T0LNu+14eUx7sa130m7Guf3935m3 011qjyggiyJWLjIfpRX4iCDQMddYn9EqSSSUbIpJJJJT/9Dtn/VZ7OqXdQwM+3COUd19bGtcHE6u Ld/8r3fQS/5q+j1RnUsLNtot27MjcBabP3nF1n0XP/qoOdm9TwupXs9acWl1djHWTtaMpzqv1jZH 6vh+lY9nv/wtX+jSZ9ab4ayyuv1bHVtpjcBa1112PbfQD7vS9Omq5n/GqT3snfpw7D5fFZ7UO3Xi 3O7qYfTMjG6hk5j8o2jK276iwADYNlexwP7ql07pGN063Lto+lmWm1+nGn0BH5jXb3f21nW9X6qO ndMzSaq3ZdzfXYGOI9N7XurpaXO9trnBjN/76BifWbPvFHqtoxmZFgb67zubX7S92NbWy325G72V +o+n/ik0zkb13AB/wdkiAFabEn/G3buD9XHYvUcrOdlG77dIyaiwBpB/dg7m7UDp/wBVLOnufVj9 SyGYL3F32ZsA69vW1c3+xsVbF6z1iillRFdzsh5FFlgeS0HKZifp9ff+jv8AUZs9P6CmPrLnuIrd XU2xpbWa4eH3F1r8ax2H7vZ6LWeq7f6v/oxO96euu9DYfo/Kj2oaabX1P6W7b6b9Wn9Lzb7sHMdX jZB3HGLA4B2u39I47/bKDgfVfM6fkX5GL1N7X5Tt126pjgXEl26Cf5Sq4v1j6hRRVX6YybGNDfRI d9otBqff9qY76Potez0/5v8AtqbfrTnDfDKMob2Y9b6Q8A331ttxmOD3O/R+purtS96etkHioGxH Xh7q9qGmm2o1OlulX9Xq7Mxmb1LIs6hfTrS2wNbUw/vMorG3d/WQ+p/V27P6lT1EZz6LMbTHaxjS G/vTu+nuQ+ofWDJxOqOw2ilwrFB9Ihxtt9Z7q7fQ2n/Atb6v0bEDB+sfUc+5lFDKhvsIFzmuj0/S +0M/RMsftu3ezY61AZZg3fSttK8le3Eiq63v183Uq6bnfbKcjKznZDKN22kVtY0ucNu9+z6W1Az/ AKuNu6h+1MHJfgZpG2x7AHNeP+Eqd9LhUMT6w9VdTRY5tOQ0V4zryxrmvc+82seyv3OZW+l9Pv8A 5f8Ao0Xp3Xuq5tmKz0qGtyLIe+S4taK33WVFldj9lzHN2fpdn/FJDJIGwa0rYVX91JxxIojre+t+ bLP+qdnUfRty+oW2ZVL97LdrQ0R+ayhv6NvuVzI6PlWZjOoU5zqcplIodDGureAXPJspd/Kd+bYt VJL3Z6a7XWg6o9uOum/iejmYnR3sz/2lnZBy8trTXUdorZW0/S9KoF3uf++5600kk2UjLUrhEDZS 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: 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 ; 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 ; 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 ; 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 To: "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: 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 List-Id: libssh2 development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Errors-To: libssh2-devel-bounces@cool.haxx.se Sender: "libssh2-devel" 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 To: libssh2 development Subject: Re: Compiling libssh2 under x64 with Visual Studio 2010 Message-ID: Content-Type: text/plain; charset=windows-1252 On 17 September 2012 10:32, Nick Pateman 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 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 To: libssh2 development Subject: Re: Compiling libssh2 under x64 with Visual Studio 2010 Message-ID: Content-Type: text/plain; charset=ISO-8859-1 On 17 September 2012 11:15, Nick Pateman 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 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: 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 ; 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 To: libssh2-devel@cool.haxx.se Subject: Re: Cannot build libssh2 Mail-Followup-To: libssh2-devel@cool.haxx.se References: <20120917085922.11594.qmail@stuge.se> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: X-BeenThere: libssh2-devel@cool.haxx.se X-Mailman-Version: 2.1.15 Precedence: list Reply-To: libssh2 development List-Id: libssh2 development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Errors-To: libssh2-devel-bounces@cool.haxx.se Sender: "libssh2-devel" 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: 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 ; 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 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: MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: X-BeenThere: libssh2-devel@cool.haxx.se X-Mailman-Version: 2.1.15 Precedence: list Reply-To: libssh2 development List-Id: libssh2 development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Errors-To: libssh2-devel-bounces@cool.haxx.se Sender: "libssh2-devel" 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: 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 ; 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 ; 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 ; 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 To: "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: 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 List-Id: libssh2 development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Errors-To: libssh2-devel-bounces@cool.haxx.se Sender: "libssh2-devel" 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 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: 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 ; Tue, 18 Sep 2012 13:52:58 +0200 Received: by qcsg15 with SMTP id g15so5690323qcs.41 for ; 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: References: Date: Tue, 18 Sep 2012 12:52:51 +0100 X-Google-Sender-Auth: CBSCAnru24mfmd6SpYmMa5dBqec Message-ID: Subject: Re: Compiling libssh2 under x64 with Visual Studio 2010 From: Alexander Lamaison To: libssh2 development 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 List-Id: libssh2 development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Errors-To: libssh2-devel-bounces@cool.haxx.se Sender: "libssh2-devel" On 18 September 2012 12:17, Nick Pateman 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: 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 ; 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 ; 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: Subject: libssh2_channel_wait_closed(...) issue From: Chris Harris 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 List-Id: libssh2 development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: multipart/mixed; boundary="===============1619912048==" Errors-To: libssh2-devel-bounces@cool.haxx.se Sender: "libssh2-devel" --===============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 #ifdef HAVE_WINSOCK2_H # include #endif #ifdef HAVE_SYS_SOCKET_H # include #endif #ifdef HAVE_NETINET_IN_H # include #endif #ifdef HAVE_SYS_SELECT_H # include #endif # ifdef HAVE_UNISTD_H #include #endif #ifdef HAVE_ARPA_INET_H # include #endif #include #include #include #include #include #include #include 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:""); /***** * 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.


Regards,

Chris

=

/*
=A0* Sample showing how to use libssh= 2 to execute a command remotely.
=A0*
=A0* The sample c= ode has fixed values for host name, user name, password
=A0* and command to run.
=A0*
=A0* Run it like thi= s:
=A0*
=A0* $ ./ssh2_exec 127.0.0.1 user password &quo= t;uptime"
=A0*
=A0*/

#inc= lude "libssh2_config.h"
#include <libssh2.h>

#ifdef HAVE_WINSOC= K2_H
# include <winsock2.h>
#endif
#ifd= ef HAVE_SYS_SOCKET_H
# include <sys/socket.h>
#endif
#ifdef HAVE_NETINET_IN_H
# include <netinet/i= n.h>
#endif
#ifdef HAVE_SYS_SELECT_H
# inc= lude <sys/select.h>
#endif
# ifdef HAVE_UNISTD_H<= /div>
#include <unistd.h>
#endif
#ifdef HAVE_ARPA_= INET_H
# include <arpa/inet.h>
#endif
<= br>
#include <sys/time.h>
#include <sys/types.= h>
#include <stdlib.h>
#include <fcntl.h>
#include <errno.h>
#include <stdio.h>
#inc= lude <ctype.h>

static int waitsocket(int soc= ket_fd, LIBSSH2_SESSION *session)
{
=A0 =A0 struct timeval timeout;
=A0 =A0 int rc;<= /div>
=A0 =A0 fd_set fd;
=A0 =A0 fd_set *writefd =3D NULL;
=A0 =A0 fd_set *readfd =3D NULL;
=A0 =A0 int dir;

=A0 =A0 timeout.tv_sec =3D 10;
=A0 =A0 timeout.tv_usec =3D 0;

=A0 =A0 FD_ZER= O(&fd);

=A0 =A0 FD_SET(socket_fd, &fd);

=A0 =A0 /* now make sure we wait in the correct dire= ction */
=A0 =A0 dir =3D libssh2_session_block_directions(session);
<= br>
=A0 =A0 if(dir & LIBSSH2_SESSION_BLOCK_INBOUND)
=A0 =A0 =A0 =A0 readfd =3D &fd;

=A0 =A0 if(di= r & LIBSSH2_SESSION_BLOCK_OUTBOUND)
=A0 =A0 =A0 =A0 writefd =3D &fd;

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

=A0 =A0 return rc;
}

vo= id exec(int sock, LIBSSH2_SESSION *session, const char *commandline)
{
=A0LIBSSH2_CHANNEL *channel;
=A0int rc;
=A0int exitcode;
=A0char *exitsignal=3D(char *)"none"= ;
=A0int bytecount =3D 0;

/* Exec non-bl= ocking on the remove host */
=A0while( (channel =3D libssh2_channel_open_session(session)) =3D=3D N= ULL &&
=A0 =A0 =A0 =A0 libssh2_session_last_error(session= ,NULL,NULL,0) =3D=3D
=A0 =A0 =A0 =A0 LIBSSH2_ERROR_EAGAIN )
=
=A0{
=A0 =A0 =A0waitsocket(sock, session);
=A0}
=A0if( channel =3D=3D NULL )
=A0{
= =A0 =A0 =A0rc =3D libssh2_session_last_error(session,NULL,NULL,0);
=A0 =A0 =A0fprintf(stderr,"Error: %d\n", rc);
=A0 =A0= =A0exit( 1 );
=A0}
=A0while( (rc =3D libssh2_channel_exec(channel, commandline)) =3D=3D
=A0 =A0 =A0 =A0 LIBSSH2_ERROR_EAGAIN )
=A0{
= =A0 =A0 =A0waitsocket(sock, session);
=A0}
=A0if( rc != =3D 0 )
=A0{
=A0 =A0 =A0fprintf(stderr,"Error\n");
=A0 =A0 =A0exit( = 1 );
=A0}
=A0for( ;; )
=A0{
=A0 =A0= =A0/* loop until we block */
=A0 =A0 =A0int rc;
=A0 = =A0 =A0do
=A0 =A0 =A0{
=A0 =A0 =A0 =A0 =A0char buffer[0x4000];
=A0 =A0 =A0 =A0 =A0rc =3D= libssh2_channel_read( channel, buffer, sizeof(buffer) );
=A0 =A0= =A0 =A0 =A0if( rc > 0 )
=A0 =A0 =A0 =A0 =A0{
=A0 = =A0 =A0 =A0 =A0 =A0 =A0int i;
=A0 =A0 =A0 =A0 =A0 =A0 =A0bytecoun= t +=3D rc;
=A0 =A0 =A0 =A0 =A0 =A0 =A0fprintf(stderr, "We read:\n");
=A0 =A0 =A0 =A0 =A0 =A0 =A0for( i=3D0; i < rc; ++i )
= =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0fputc( buffer[i], stderr);
=A0= =A0 =A0 =A0 =A0 =A0 =A0fprintf(stderr, "\n");
=A0 =A0 =A0 =A0 =A0}
=A0 =A0 =A0 =A0 =A0else {
=A0= =A0 =A0 =A0 =A0 =A0 =A0if( rc !=3D LIBSSH2_ERROR_EAGAIN )
=A0 = =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0/* no need to output this for the EAGAIN cas= e */
=A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0fprintf(stderr, "lib= ssh2_channel_read returned %d\n", rc);
=A0 =A0 =A0 =A0 =A0}
=A0 =A0 =A0}
=A0 =A0 =A0while= ( rc > 0 );

=A0 =A0 =A0/* this is due to blocki= ng that would occur otherwise so we loop on
=A0 =A0 =A0 =A0 this = condition */
=A0 =A0 =A0if( rc =3D=3D LIBSSH2_ERROR_EAGAIN )
=A0 =A0 =A0{
=A0 =A0 =A0 =A0 =A0waitsocket(sock, session);
=A0 =A0 =A0}
=A0 =A0 =A0else
=A0 =A0 =A0 =A0 = =A0break;
=A0}
=A0exitcode =3D 127;
=A0while(= (rc =3D libssh2_channel_close(channel)) =3D=3D LIBSSH2_ERROR_EAGAIN )
=A0 =A0 =A0waitsocket(sock, session);

=A0whil= e( (rc =3D libssh2_channel_wait_closed(channel)) =3D=3D LIBSSH2_ERROR_EAGAI= N )
=A0 =A0 =A0waitsocket(sock, session);

=A0if( rc =3D=3D 0 )
=A0{
=A0 =A0 =A0exitcode =3D libssh2_channel_get_exit_status= ( channel );
=A0 =A0 =A0libssh2_channel_get_exit_signal(channel, = &exitsignal,
=A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 = =A0 =A0 =A0 =A0 =A0 =A0 =A0NULL, NULL, NULL, NULL, NULL);
=A0}

=A0if (exitsignal)
=A0 =A0 =A0= printf("\nGot signal: %s\n", exitsignal);
=A0else
=
=A0 =A0 =A0printf("\nEXIT: %d bytecount: %d\n", exitcode, by= tecount);

=A0libssh2_channel_free(channel);
=A0channel = =3D NULL;
}

int main(int argc, char *arg= v[])
{
=A0 =A0 const char *hostname =3D "127.0.0.1= ";
=A0 =A0 const char *commandline =3D "uptime";
=A0 = =A0 const char *username =A0 =A0=3D "user";
=A0 =A0 con= st char *password =A0 =A0=3D "password";
=A0 =A0 unsign= ed long hostaddr;
=A0 =A0 int sock;
=A0 =A0 struct sockaddr_in sin;
=A0 = =A0 const char *fingerprint;
=A0 =A0 LIBSSH2_SESSION *session;
=A0 =A0 int rc;
=A0 =A0 size_t len;
=A0 =A0 LIB= SSH2_KNOWNHOSTS *nh;
=A0 =A0 int type;

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

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

=A0 =A0 rc =3D libssh2= _init (0);
=A0 =A0 if (rc !=3D 0) {
=A0 =A0 =A0 =A0 fpr= intf (stderr, "libssh2 initialization failed (%d)\n", rc);
=A0 =A0 =A0 =A0 return 1;
=A0 =A0 }

=A0 =A0 hostaddr =3D inet_addr(hostname);

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

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

=A0 =A0 /* Create a session instanc= e */
=A0 =A0 session =3D libssh2_session_init();
=A0 = =A0 if (!session)
=A0 =A0 =A0 =A0 return -1;

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

=
=A0 =A0 /* ... start it up. This will trade welcome banners, exchange = keys,
=A0 =A0 =A0* and setup crypto, compression, and MAC layers<= /div>
=A0 =A0 =A0*/
=A0 =A0 while ((rc =3D libssh2_session_handshake(se= ssion, sock)) =3D=3D
=A0 =A0 =A0 =A0 =A0 =A0LIBSSH2_ERROR_EAGAIN)= ;
=A0 =A0 if (rc) {
=A0 =A0 =A0 =A0 fprintf(stderr, &qu= ot;Failure establishing SSH session: %d\n", rc);
=A0 =A0 =A0 =A0 return -1;
=A0 =A0 }

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

=A0 =A0 /* read all hosts from here */
=A0 = =A0 libssh2_knownhost_readfile(nh, "known_hosts",
=A0 = =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0LIBSSH2_KNOWNHOS= T_FILE_OPENSSH);

=A0 =A0 /* store all known hosts to here */
=A0 =A0 libssh2_known= host_writefile(nh, "dumpfile",
=A0 =A0 =A0 =A0 =A0 =A0 = =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 LIBSSH2_KNOWNHOST_FILE_OPENSSH);

=A0 =A0 fingerprint =3D libssh2_session_hostkey(sess= ion, &len, &type);
=A0 =A0 if(fingerprint) {
=A0 =A0 =A0 =A0 struct libssh2_kno= wnhost *host;
#if LIBSSH2_VERSION_NUM >=3D 0x010206
= =A0 =A0 =A0 =A0 /* introduced in 1.2.6 */
=A0 =A0 =A0 =A0 int che= ck =3D libssh2_knownhost_checkp(nh, hostname, 22,
=A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 = =A0 =A0 =A0 =A0 =A0 =A0fingerprint, len,
=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|
=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,
=A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 = =A0 =A0 =A0 =A0 =A0 =A0&host);
#else
=A0 =A0 =A0 = =A0 /* 1.2.5 or older */
=A0 =A0 =A0 =A0 int check =3D libssh2_kn= ownhost_check(nh, hostname,
=A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 = =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 fingerprint, len,
=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|
=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,
=A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 = =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 &host);
#endif
=A0 =A0 =A0 =A0 fprintf(stderr, "Host check: %d,= key: %s\n", check,
=A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 (check &= lt;=3D LIBSSH2_KNOWNHOST_CHECK_MISMATCH)?
=A0 =A0 =A0 =A0 =A0 =A0= =A0 =A0 host->key:"<none>");

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

=A0 =A0 if ( strlen(password) !=3D 0 ) {
=A0 =A0 =A0 =A0 /* We could authenticate via password */
=A0 =A0 =A0 =A0 while ((rc =3D libssh2_userauth_password(session, user= name, password)) =3D=3D
=A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0LIBSSH2_ER= ROR_EAGAIN);
=A0 =A0 =A0 =A0 if (rc) {
=A0 =A0 =A0 =A0 = =A0 =A0 fprintf(stderr, "Authentication by password failed.\n");<= /div>
=A0 =A0 =A0 =A0 =A0 =A0 goto shutdown;
=A0 =A0 =A0 =A0 }
=A0 =A0 }
=A0 =A0 else {
=A0 =A0 =A0 =A0 /* Or b= y public key */
=A0 =A0 =A0 =A0 while ((rc =3D libssh2_userauth_p= ublickey_fromfile(session, username,
=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"/home/user/"
=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".ssh/id_rsa.pub",=
=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"/home/user/"<= /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".ssh/id_rsa",
=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
= =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0LIBSSH2_ERROR_EAGAIN);
=A0 =A0 =A0 =A0 if (rc) {
=A0 =A0 =A0 =A0 =A0 =A0 fprintf(st= derr, "\tAuthentication by public key failed\n");
=A0 = =A0 =A0 =A0 =A0 =A0 goto shutdown;
=A0 =A0 =A0 =A0 }
= =A0 =A0 }

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

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

shutdown:

=A0 =A0 libssh2_sess= ion_disconnect(session,
=A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 = =A0 =A0 =A0 =A0 =A0 =A0"Normal Shutdown, Thank you for playing");=
=A0 =A0 libssh2_session_free(session);

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

=A0 = =A0 libssh2_exit();

=A0 =A0 return 0;
}

--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: 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 ; 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 ) 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 User-Agent: Mozilla/5.0 (X11; Linux i686; rv:15.0) Gecko/20120827 Thunderbird/15.0 MIME-Version: 1.0 To: libssh2 development Subject: Re: libssh2_channel_wait_closed(...) issue References: In-Reply-To: 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 List-Id: libssh2 development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="iso-8859-1"; Format="flowed" Errors-To: libssh2-devel-bounces@cool.haxx.se Sender: "libssh2-devel" 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: 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 ; 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 ; 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 X-X-Sender: dast@giant.haxx.se To: libssh2 development Subject: Re: libssh2_channel_wait_closed(...) issue In-Reply-To: <505A5B66.30207@yahoo.ca> Message-ID: References: <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 List-Id: libssh2 development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-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" 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: 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 ; 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 ; 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: References: <505A5B66.30207@yahoo.ca> Date: Thu, 20 Sep 2012 10:06:51 -0400 Message-ID: Subject: Re: libssh2_channel_wait_closed(...) issue From: Chris Harris To: libssh2 development 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 List-Id: libssh2 development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: multipart/mixed; boundary="===============0035426993==" Errors-To: libssh2-devel-bounces@cool.haxx.se Sender: "libssh2-devel" --===============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 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 >> >> 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 > --f46d042f9492855da604ca22a2f1 Content-Type: text/html; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable Maxime &=A0Daniel,
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.

Regards,=A0

Chris

On Thu, Sep 20, 2012 at 4:20 AM, Daniel Stenberg <danie= l@haxx.se> wrote:
On Wed, 19 Sep 2012, Maxim= e Larocque wrote:

I had a similar trouble with libssh2 1.4.2, and I submitted a patch to corr= ect this:

http://tra= c.libssh2.org/ticket/245

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

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't spot anything really wrong standing out so it wil= l 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 mer= ge things into git and future releases with more confidence and speed.

--

=A0/ daniel.haxx.se=
_______________________________________________
libssh2-devel http://cool.haxx.se/cgi-bin/mailman/list= info/libssh2-devel

--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: 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 ; Fri, 21 Sep 2012 16:10:47 +0200 Received: by padbi1 with SMTP id bi1so421094pad.41 for ; 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: Subject: Direct tcp ip channel - session handshake From: Jiri 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 List-Id: libssh2 development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: multipart/mixed; boundary="===============1816336357==" Errors-To: libssh2-devel-bounces@cool.haxx.se Sender: "libssh2-devel" --===============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
Hi, I am a beginner in network programming and now I have problem with= using direct tcp channel.
Using direct_tcp_example is everything work= ing good and I'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.

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
on redirected por= t, 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 usin= g threads or somethink like that? Thanks a lot!

Ex= ample code:
...
forwardsock =3D accept(listensock, (struc= t sockaddr *)&sin, &sinlen); =A0//now is listensock in nonblocking = mode
con->channel =3D libssh2_channel_direct_tcpip_ex(con->session, r= emote_desthost,remote_destport, shost, sport);

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

libssh2_session_set_blocking(con->session, 0);
=

//channel is ready and now I trying connect to localhos= t
struct conn c1; //own structure
c1.hostname =3D "= ;127.0.0.1";
c1.username =3D "root";
c1.password =3D "pass= word";
c1.port =3D 2222; //local listenport
c1.ses= sion =3D NULL;
c1.sftp_session =3D NULL;
c1.sftp_alive = =3D 1;

struct conn *st1 =3D &c1;

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

=
// all works fine but this method return -37
x =3D libssh2_s= ession_handshake(st1->session, st1->socket);
printf("h= andshake %i\n", x);
--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: 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 ; 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 To: libssh2-devel@cool.haxx.se Subject: Re: Direct tcp ip channel - session handshake Mail-Followup-To: libssh2-devel@cool.haxx.se References: MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: X-BeenThere: libssh2-devel@cool.haxx.se X-Mailman-Version: 2.1.15 Precedence: list Reply-To: libssh2 development List-Id: libssh2 development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Errors-To: libssh2-devel-bounces@cool.haxx.se Sender: "libssh2-devel" 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: 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 ; 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 ) 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 User-Agent: Mozilla/5.0 (X11; Linux i686; rv:15.0) Gecko/20120827 Thunderbird/15.0 MIME-Version: 1.0 To: libssh2 development Subject: Re: Direct tcp ip channel - session handshake References: In-Reply-To: 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 List-Id: libssh2 development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="iso-8859-1"; Format="flowed" Errors-To: libssh2-devel-bounces@cool.haxx.se Sender: "libssh2-devel" 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: 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 ; Sun, 23 Sep 2012 14:43:41 +0200 Received: by dadz9 with SMTP id z9so52407dad.41 for ; 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: <20120921144035.23485.qmail@stuge.se> Date: Sun, 23 Sep 2012 14:43:33 +0200 Message-ID: Subject: Re: Direct tcp ip channel - session handshake From: Jiri To: libssh2 development X-BeenThere: libssh2-devel@cool.haxx.se X-Mailman-Version: 2.1.15 Precedence: list Reply-To: libssh2 development List-Id: libssh2 development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: multipart/mixed; boundary="===============1436723058==" Errors-To: libssh2-devel-bounces@cool.haxx.se Sender: "libssh2-devel" --===============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
>=A0What is your question exactly?

My goal is to connect = to the PublicHost and from there to the=A0InternalHost - thus creating a connection to the host in a loc= al network=A0while working wi= th it as during the connection to a public server. I=A0have created a connection to the PublicHost, th= ere listensocket (set=A0to a = non-blocking mode) and direct tcp channel were established. Then
I create connection to the "loc= alhost" with a redirected port - socket=A0is created as well as the session but the program stops d= uring=A0handshake. I would li= ke to know if there is any general procedure of
how to achieve this using libssh2.


--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: 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 ; 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 To: libssh2-devel@cool.haxx.se Subject: Re: Direct tcp ip channel - session handshake Mail-Followup-To: libssh2-devel@cool.haxx.se References: <20120921144035.23485.qmail@stuge.se> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: X-BeenThere: libssh2-devel@cool.haxx.se X-Mailman-Version: 2.1.15 Precedence: list Reply-To: libssh2 development List-Id: libssh2 development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Errors-To: libssh2-devel-bounces@cool.haxx.se Sender: "libssh2-devel" 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: 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 ; Sun, 23 Sep 2012 16:43:34 +0200 Received: by pbbrp8 with SMTP id rp8so1495004pbb.41 for ; 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: <20120921144035.23485.qmail@stuge.se> <20120923130943.8394.qmail@stuge.se> Date: Sun, 23 Sep 2012 16:43:27 +0200 Message-ID: Subject: Re: Direct tcp ip channel - session handshake From: Jiri To: libssh2 development X-BeenThere: libssh2-devel@cool.haxx.se X-Mailman-Version: 2.1.15 Precedence: list Reply-To: libssh2 development List-Id: libssh2 development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: multipart/mixed; boundary="===============0210895744==" Errors-To: libssh2-devel-bounces@cool.haxx.se Sender: "libssh2-devel" --===============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
>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=A0conne= ctions that your application has open.

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

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

con->channe= l =3D libssh2_channel_direct_tcpip_ex(con->session, remote_desthost,remo= te_destport, shost, sport);
libssh2_session_set_blocking(con->= session, 0);

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

init_sock(st1);=
init_session(st1);

int x =3D libssh2_se= ssion_handshake(st1->session, st1->socket);
printf("ha= ndshake %i\n", x);

--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: 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 ; 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 To: libssh2-devel@cool.haxx.se Subject: Re: Direct tcp ip channel - session handshake Mail-Followup-To: libssh2-devel@cool.haxx.se References: <20120921144035.23485.qmail@stuge.se> <20120923130943.8394.qmail@stuge.se> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: X-BeenThere: libssh2-devel@cool.haxx.se X-Mailman-Version: 2.1.15 Precedence: list Reply-To: libssh2 development List-Id: libssh2 development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Errors-To: libssh2-devel-bounces@cool.haxx.se Sender: "libssh2-devel" 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: 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 ; Sun, 23 Sep 2012 18:02:40 +0200 Received: by pbbrp8 with SMTP id rp8so1559531pbb.41 for ; 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: <20120921144035.23485.qmail@stuge.se> <20120923130943.8394.qmail@stuge.se> <20120923151034.17979.qmail@stuge.se> Date: Sun, 23 Sep 2012 18:02:34 +0200 Message-ID: Subject: Re: Direct tcp ip channel - session handshake From: Jiri To: libssh2 development 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 List-Id: libssh2 development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: libssh2-devel-bounces@cool.haxx.se Sender: "libssh2-devel" --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 > 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.
I'm sending the program in the atachment. It= doesn't include all the parts I'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!

2012/9/23 Peter Stuge <= peter@stuge.se><= /span>
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/li= bssh2-devel



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

--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: 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 ; 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 To: libssh2-devel@cool.haxx.se Subject: Re: Direct tcp ip channel - session handshake Mail-Followup-To: libssh2-devel@cool.haxx.se References: <20120921144035.23485.qmail@stuge.se> <20120923130943.8394.qmail@stuge.se> <20120923151034.17979.qmail@stuge.se> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: X-BeenThere: libssh2-devel@cool.haxx.se X-Mailman-Version: 2.1.15 Precedence: list Reply-To: libssh2 development List-Id: libssh2 development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Errors-To: libssh2-devel-bounces@cool.haxx.se Sender: "libssh2-devel" 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: 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 ; Mon, 24 Sep 2012 14:46:51 +0200 Received: by ieak10 with SMTP id k10so9043849iea.41 for ; 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: Subject: Check if LIBSSH2_SFTP_ATTRIBUTES points to a directory. From: niXman 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 List-Id: libssh2 development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Errors-To: libssh2-devel-bounces@cool.haxx.se Sender: "libssh2-devel" 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: 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 ; Mon, 24 Sep 2012 15:17:23 +0200 Received: by qcsl39 with SMTP id l39so223927qcs.41 for ; 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: References: Date: Mon, 24 Sep 2012 14:17:17 +0100 X-Google-Sender-Auth: IhjiYdxGurjrLREDeOEB6-rQk9k Message-ID: Subject: Re: Check if LIBSSH2_SFTP_ATTRIBUTES points to a directory. From: Alexander Lamaison To: libssh2 development X-BeenThere: libssh2-devel@cool.haxx.se X-Mailman-Version: 2.1.15 Precedence: list Reply-To: libssh2 development List-Id: libssh2 development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Errors-To: libssh2-devel-bounces@cool.haxx.se Sender: "libssh2-devel" On 24 September 2012 13:46, niXman 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: 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 ; Mon, 24 Sep 2012 15:20:37 +0200 Received: by ieak10 with SMTP id k10so9145038iea.41 for ; 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: References: Date: Mon, 24 Sep 2012 17:20:32 +0400 Message-ID: Subject: Re: Check if LIBSSH2_SFTP_ATTRIBUTES points to a directory. From: niXman To: libssh2 development X-BeenThere: libssh2-devel@cool.haxx.se X-Mailman-Version: 2.1.15 Precedence: list Reply-To: libssh2 development List-Id: libssh2 development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Errors-To: libssh2-devel-bounces@cool.haxx.se Sender: "libssh2-devel" 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