From 181d071363719aa9341f2c0c5a3aca9002d64ac3 Mon Sep 17 00:00:00 2001 From: Martin Willi Date: Thu, 24 Oct 2013 13:45:31 +0200 Subject: [PATCH] rwlock: Don't use buggy pthread_rwlock on OS X Recursive read locks don't seem to work properly, at least on 10.9. --- src/libstrongswan/threading/rwlock.c | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/libstrongswan/threading/rwlock.c b/src/libstrongswan/threading/rwlock.c index c0f8ec891..770061bad 100644 --- a/src/libstrongswan/threading/rwlock.c +++ b/src/libstrongswan/threading/rwlock.c @@ -27,6 +27,13 @@ #include "mutex.h" #include "lock_profiler.h" +#ifdef __APPLE__ +/* while pthread_rwlock_rdlock(3) says that it supports multiple read locks, + * this does not seem to be true. After releasing the a recursive rdlock, + * a subsequent wrlock fails... */ +# undef HAVE_PTHREAD_RWLOCK_INIT +#endif + typedef struct private_rwlock_t private_rwlock_t; typedef struct private_rwlock_condvar_t private_rwlock_condvar_t;