From 9d7f9a1b9120cb40b668a06847181eb9ddb164e2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Carlos=20Mart=C3=ADn=20Nieto?= Date: Fri, 22 May 2015 19:50:10 +0200 Subject: Lock around encrypted I/O OpenSSL and often whatever libssh2 is using require their own set-up for concurrent operations to be safe. This means that by default, using both of these libraries in a threaded context is unsafe. Lock by default, and allow the user to tell us that they've set up threading for the underlying libraries. --- include/git2/sys/openssl.h | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) (limited to 'include/git2/sys/openssl.h') diff --git a/include/git2/sys/openssl.h b/include/git2/sys/openssl.h index b41c55c6d..5a5fc8f03 100644 --- a/include/git2/sys/openssl.h +++ b/include/git2/sys/openssl.h @@ -28,11 +28,27 @@ GIT_BEGIN_DECL * likely sets up locking. You should very strongly prefer that over * this function. * + * This calls `git_openssl_set_threadsafe()` enabling concurrent + * OpenSSL operations. + * * @return 0 on success, -1 if there are errors or if libgit2 was not * built with OpenSSL and threading support. */ GIT_EXTERN(int) git_openssl_set_locking(void); +/** + * Mark the OpenSSL code as thread-safe + * + * By default we take a lock around OpenSSL operations. If you have + * set up OpenSSL threading in your application, you may call this + * function to avoid taking these locks, which would enable concurrent + * work. + * + * These locks are only used if the library was built with threading + * support. + */ +GIT_EXTERN(void) git_openssl_set_threadsafe(void); + GIT_END_DECL #endif -- cgit v1.2.1