SSH: init and cleanup libssh2 in global_init/cleanup
authorDaniel Stenberg <daniel@haxx.se>
Sun, 25 Apr 2010 22:36:25 +0000 (00:36 +0200)
committerDaniel Stenberg <daniel@haxx.se>
Sun, 25 Apr 2010 22:36:25 +0000 (00:36 +0200)
The necessary libssh2 functions require libssh2 1.2.5 or later.

CHANGES
lib/easy.c

diff --git a/CHANGES b/CHANGES
index 573bc63..b41c269 100644 (file)
--- a/CHANGES
+++ b/CHANGES
@@ -6,6 +6,11 @@
 
                                   Changelog
 
+Daniel Stenberg (26 Apr 2010)
+- Make use of the libssh2_init/exit functions that libssh2 added in version
+  1.2.5. Using them will improve how libcurl works in threaded situations when
+  SCP and SFTP are transfered.
+
 Daniel Stenberg (25 Apr 2010)
 - Based on work by Kamil Dudka, I've introduced the new configure option
   --enable-threaded-resolver. When used, the configure script will check for
index 35fb018..53f417f 100644 (file)
@@ -287,6 +287,13 @@ CURLcode curl_global_init(long flags)
   }
 #endif
 
+#if defined(USE_LIBSSH2) && defined(HAVE_LIBSSH2_INIT)
+  if(libssh2_init(0)) {
+    DEBUGF(fprintf(stderr, "Error: libssh2_init failed\n"));
+    return CURLE_FAILED_INIT;
+  }
+#endif
+
   init_flags  = flags;
 
   /* Preset pseudo-random number sequence. */
@@ -355,6 +362,10 @@ void curl_global_cleanup(void)
   amiga_cleanup();
 #endif
 
+#if defined(USE_LIBSSH2) && defined(HAVE_LIBSSH2_EXIT)
+  (void)libssh2_exit();
+#endif
+
   init_flags  = 0;
 }