From 8ca40f040a9b36ee8e9b0ad500026054678be53a Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Sun, 2 Apr 2006 15:42:49 +0000 Subject: [PATCH] use neon's native thread safe SSL support git-svn-id: file:///home/lennart/svn/public/fusedav/trunk@27 e35a362c-bbd6-0310-a59f-a4efcb1729c4 --- src/Makefile.am | 3 +- src/fusedav.c | 11 +++++--- src/openssl-thread.c | 67 -------------------------------------------- src/openssl-thread.h | 27 ------------------ 4 files changed, 8 insertions(+), 100 deletions(-) delete mode 100644 src/openssl-thread.c delete mode 100644 src/openssl-thread.h diff --git a/src/Makefile.am b/src/Makefile.am index b74d7c0..b91759d 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -21,8 +21,7 @@ bin_PROGRAMS=fusedav fusedav_SOURCES=fusedav.c fusedav.h \ statcache.c statcache.h \ filecache.c filecache.h \ - session.c session.h \ - openssl-thread.c openssl-thread.h + session.c session.h fusedav_CFLAGS = $(AM_CFLAGS) $(NEON_CFLAGS) $(FUSE_CFLAGS) -DFUSE_USE_VERSION=25 fusedav_LDADD = -lpthread $(NEON_LIBS) $(FUSE_LIBS) diff --git a/src/fusedav.c b/src/fusedav.c index 2d04c51..a0723b1 100644 --- a/src/fusedav.c +++ b/src/fusedav.c @@ -52,7 +52,6 @@ #include "statcache.h" #include "filecache.h" #include "session.h" -#include "openssl-thread.h" #include "fusedav.h" const ne_propname query_properties[] = { @@ -1386,8 +1385,13 @@ int main(int argc, char *argv[]) { goto finish; } - openssl_thread_setup(); - + if (!ne_has_support(NE_FEATURE_SSL) || + !ne_has_support(NE_FEATURE_TS_SSL) || + !ne_has_support(NE_FEATURE_LFS)) { + fprintf(stderr, "fusedav requires libneon built with SSL, SSL thread safety and LFS enabled.\n"); + goto finish; + } + mask = umask(0); umask(mask); @@ -1508,7 +1512,6 @@ finish: file_cache_close_all(); cache_free(); session_free(); - openssl_thread_cleanup(); return ret; } diff --git a/src/openssl-thread.c b/src/openssl-thread.c deleted file mode 100644 index 9c0af73..0000000 --- a/src/openssl-thread.c +++ /dev/null @@ -1,67 +0,0 @@ -/* $Id$ */ - -/*** - This file is part of fusedav. - - fusedav is free software; you can redistribute it and/or modify it - under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - fusedav is distributed in the hope that it will be useful, but WITHOUT - ANY WARRANTY; without even the implied warranty of MERCHANTABILITY - or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public - License for more details. - - You should have received a copy of the GNU General Public License - along with fusedav; if not, write to the Free Software Foundation, - Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -***/ - -#ifdef HAVE_CONFIG_H -#include -#endif - -#include -#include - -#include "fusedav.h" -#include "openssl-thread.h" - -static pthread_mutex_t *mutexes; - -static void pthreads_locking_callback(int mode, int n, __unused const char *file, __unused int line) { - if (mode & CRYPTO_LOCK) - pthread_mutex_lock(mutexes+n); - else - pthread_mutex_unlock(mutexes+n); -} - -static unsigned long pthreads_thread_id(void) { - return (unsigned long) pthread_self(); -} - -void openssl_thread_setup(void) { - int i, l; - - mutexes = OPENSSL_malloc((l = CRYPTO_num_locks()) * sizeof(pthread_mutex_t)); - - for (i = 0; i < l; i++) - pthread_mutex_init(mutexes+i, NULL); - - CRYPTO_set_id_callback(pthreads_thread_id); - CRYPTO_set_locking_callback(pthreads_locking_callback); -} - -void openssl_thread_cleanup(void) { - int i, l; - - CRYPTO_set_locking_callback(NULL); - - l = CRYPTO_num_locks(); - for (i = 0; i < l; i++) - pthread_mutex_destroy(mutexes+i); - - OPENSSL_free(mutexes); -} - diff --git a/src/openssl-thread.h b/src/openssl-thread.h deleted file mode 100644 index 9ba91d0..0000000 --- a/src/openssl-thread.h +++ /dev/null @@ -1,27 +0,0 @@ -#ifndef fooopensslhfoo -#define fooopensslhfoo - -/* $Id$ */ - -/*** - This file is part of fusedav. - - fusedav is free software; you can redistribute it and/or modify it - under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - fusedav is distributed in the hope that it will be useful, but WITHOUT - ANY WARRANTY; without even the implied warranty of MERCHANTABILITY - or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public - License for more details. - - You should have received a copy of the GNU General Public License - along with fusedav; if not, write to the Free Software Foundation, - Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -***/ - -void openssl_thread_setup(void); -void openssl_thread_cleanup(void); - -#endif -- 2.30.2