From: Joe Orton Date: Tue, 9 Aug 2005 07:26:54 +0000 (+0000) Subject: Merge r105412 from trunk: X-Git-Tag: 2.0.55~95 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=89d57810d2b8f9b484a393d6a29781f48df7e200;p=thirdparty%2Fapache%2Fhttpd.git Merge r105412 from trunk: * modules/ldap/util_ldap.c (util_ldap_child_init): Don't segfault if the cache has been disabled (when _cache_lock == NULL). (util_ldap_post_config): Set mutex permissions if necessary. Reviewed by: jorton, minfrin, wrowe git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/branches/2.0.x@231006 13f79535-47bb-0310-9956-ffa450edef68 --- diff --git a/STATUS b/STATUS index 6f2692cfe93..c8682bb88e9 100644 --- a/STATUS +++ b/STATUS @@ -312,13 +312,6 @@ PATCHES PROPOSED TO BACKPORT FROM TRUNK: http://svn.apache.org/viewcvs.cgi?rev=209539&view=rev +1: pquerna - *) mod_ldap: Initialize mutex permissions properly so that - locking actually works. - http://svn.apache.org/viewcvs?rev=105412&view=rev - rediff for 2.0.x: http://people.apache.org/~jorton/ap_ldapmutex20.diff - +1: jorton, minfrin, wrowe - wrowe asks: where is AP_NEED_SET_MUTEX_PERMS when you need it? - PATCHES TO BACKPORT THAT ARE ON HOLD OR NOT GOING ANYWHERE SOON: *) Remove LDAP toolkit specific code from util_ldap and mod_auth_ldap. diff --git a/modules/experimental/util_ldap.c b/modules/experimental/util_ldap.c index 075bbb5b4ea..9a744457844 100644 --- a/modules/experimental/util_ldap.c +++ b/modules/experimental/util_ldap.c @@ -41,6 +41,11 @@ #ifndef APU_HAS_LDAP #error mod_ldap requires APR-util to have LDAP support built in +#endif + +#if !defined(OS2) && !defined(WIN32) && !defined(BEOS) && !defined(NETWARE) +#include "unixd.h" +#define UTIL_LDAP_SET_MUTEX_PERMS #endif /* defines for certificate file types @@ -1466,6 +1471,15 @@ static int util_ldap_post_config(apr_pool_t *p, apr_pool_t *plog, return result; } +#ifdef UTIL_LDAP_SET_MUTEX_PERMS + result = unixd_set_global_mutex_perms(st->util_ldap_cache_lock); + if (result != APR_SUCCESS) { + ap_log_error(APLOG_MARK, APLOG_CRIT, result, s, + "LDAP cache: failed to set mutex permissions"); + return result; + } +#endif + /* merge config in all vhost */ s_vhost = s->next; while (s_vhost) { @@ -1650,8 +1664,9 @@ static int util_ldap_post_config(apr_pool_t *p, apr_pool_t *plog, static void util_ldap_child_init(apr_pool_t *p, server_rec *s) { apr_status_t sts; - util_ldap_state_t *st = - (util_ldap_state_t *)ap_get_module_config(s->module_config, &ldap_module); + util_ldap_state_t *st = ap_get_module_config(s->module_config, &ldap_module); + + if (!st->util_ldap_cache_lock) return; sts = apr_global_mutex_child_init(&st->util_ldap_cache_lock, st->lock_file, p); if (sts != APR_SUCCESS) {