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/libssh2.h | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) create mode 100644 include/git2/sys/libssh2.h (limited to 'include/git2/sys/libssh2.h') diff --git a/include/git2/sys/libssh2.h b/include/git2/sys/libssh2.h new file mode 100644 index 000000000..ca1dec9fb --- /dev/null +++ b/include/git2/sys/libssh2.h @@ -0,0 +1,29 @@ +/* + * Copyright (C) the libgit2 contributors. All rights reserved. + * + * This file is part of libgit2, distributed under the GNU GPL v2 with + * a Linking Exception. For full terms see the included COPYING file. + */ +#ifndef INCLUDE_git_libssh2_h__ +#define INCLUDE_git_libssh2_h__ + +#include "git2/common.h" + +GIT_BEGIN_DECL + +/** + * Mark the libssh2 code as thread-safe + * + * By default we take a lock around libssh2 operations, as the + * thread-safety depends on the caller setting up the threading for + * the crytographic library it uses. If you have set up its threading, + * you may call this function to disable the lock, which would enable + * concurrent work. + * + * These locks are only used if the library was built with threading + * support. + */ +GIT_EXTERN(void) git_libssh2_set_threadsafe(void); + +GIT_END_DECL +#endif -- cgit v1.2.1