]> granicus.if.org Git - curl/commitdiff
SSH: use libssh2_session_handshake()
authorDaniel Stenberg <daniel@haxx.se>
Wed, 20 Oct 2010 21:31:34 +0000 (23:31 +0200)
committerDaniel Stenberg <daniel@haxx.se>
Wed, 20 Oct 2010 21:31:34 +0000 (23:31 +0200)
In libssh2 1.2.8, libssh2_session_handshake() replaces
libssh2_session_startup() to fix the previous portability problem with
the socket type that was too small for win64 and thus easily could cause
crashes and more.

configure.ac
lib/ssh.c

index 28a1955700fee21f29efb0cc53e593b0fb16ed18..224ca2d584c67d8750f814fa1a13b2686406da2c 100644 (file)
@@ -2019,8 +2019,9 @@ if test X"$OPT_LIBSSH2" != Xno; then
        dnl libssh2_version is a post 1.0 addition
        dnl libssh2_init and libssh2_exit were added in 1.2.5
        dnl libssh2_scp_send64 was added in 1.2.6
+       dnl libssh2_session_handshake was added in 1.2.8
        AC_CHECK_FUNCS( libssh2_version libssh2_init libssh2_exit \
-                       libssh2_scp_send64 )
+                       libssh2_scp_send64 libssh2_session_handshake)
 
        LD_LIBRARY_PATH="$LD_LIBRARY_PATH:$DIR_SSH2"
        export LD_LIBRARY_PATH
index ee63a7bd66261db499c396d0ce4ce43b88be1e9e..862ce76f689249887e284f870e617476138e8c2a 100644 (file)
--- a/lib/ssh.c
+++ b/lib/ssh.c
@@ -496,6 +496,13 @@ static int sshkeycallback(CURL *easy,
                                              (libssh2_uint64_t)d, 0, 0)
 #endif
 
+/*
+ * libssh2 1.2.8 fixed the problem with 32bit ints used for sockets on win64.
+ */
+#ifdef HAVE_LIBSSH2_SESSION_HANDSHAKE
+#define libssh2_session_startup(x,y) libssh2_session_handshake(x,y)
+#endif
+
 /*
  * ssh_statemach_act() runs the SSH state machine as far as it can without
  * blocking and without reaching the end.  The data the pointer 'block' points