summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLennart Poettering <lennart@poettering.net>2006-04-02 15:42:49 +0000
committerLennart Poettering <lennart@poettering.net>2006-04-02 15:42:49 +0000
commit8ca40f040a9b36ee8e9b0ad500026054678be53a (patch)
treebcab68312814bf8099fbf535d0e78ae55b34fbef
parent0c818c9938840a887432a1f6bb4150171865c7c9 (diff)
use neon's native thread safe SSL support
git-svn-id: file:///home/lennart/svn/public/fusedav/trunk@27 e35a362c-bbd6-0310-a59f-a4efcb1729c4
-rw-r--r--src/Makefile.am3
-rw-r--r--src/fusedav.c11
-rw-r--r--src/openssl-thread.c67
-rw-r--r--src/openssl-thread.h27
4 files changed, 8 insertions, 100 deletions
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 <config.h>
-#endif
-
-#include <pthread.h>
-#include <openssl/crypto.h>
-
-#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