You are viewing a plain text version of this content. The canonical link for it is here.
Posted to cvs@httpd.apache.org by bn...@apache.org on 2002/02/08 19:29:17 UTC
cvs commit: httpd-ldap/ldap-aaa mod_auth_ldap.c
bnicholes 02/02/08 10:29:17
Modified: ldap-cache util_ldap_cache.h util_ldap.c
ldap-aaa mod_auth_ldap.c
Log:
Updated to use the newer locking APIs
Revision Changes Path
1.2 +2 -2 httpd-ldap/ldap-cache/util_ldap_cache.h
Index: util_ldap_cache.h
===================================================================
RCS file: /home/cvs/httpd-ldap/ldap-cache/util_ldap_cache.h,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- util_ldap_cache.h 16 Oct 2001 21:29:08 -0000 1.1
+++ util_ldap_cache.h 8 Feb 2002 18:29:17 -0000 1.2
@@ -68,7 +68,7 @@
* LDAP Cache Manager
*/
-#include <apr_shmem.h>
+#include <apr_shm.h>
typedef struct util_cache_node_t {
void *payload; /* Pointer to the payload */
@@ -105,7 +105,7 @@
apr_shmem_t *util_ldap_shm;
#endif
util_ald_cache_t *util_ldap_cache;
-apr_lock_t *util_ldap_cache_lock;
+apr_thread_rwlock_t *util_ldap_cache_lock;
#ifndef WIN32
#define ALD_MM_FILE_MODE ( S_IRUSR|S_IWUSR )
1.2 +33 -34 httpd-ldap/ldap-cache/util_ldap.c
Index: util_ldap.c
===================================================================
RCS file: /home/cvs/httpd-ldap/ldap-cache/util_ldap.c,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- util_ldap.c 16 Oct 2001 21:29:08 -0000 1.1
+++ util_ldap.c 8 Feb 2002 18:29:17 -0000 1.2
@@ -64,7 +64,6 @@
#ifdef APU_HAS_LDAP
-#include <apr_lock.h>
#include <apr_strings.h>
#include "ap_config.h"
@@ -193,7 +192,7 @@
*/
/* mark our connection as available for reuse */
- apr_lock_release(ldc->lock);
+ apr_thread_mutex_unlock(ldc->lock);
}
@@ -215,7 +214,7 @@
}
/* release the lock we were using */
- apr_lock_release(ldc->lock);
+ apr_thread_mutex_unlock(ldc->lock);
return APR_SUCCESS;
}
@@ -378,15 +377,15 @@
/* mutex lock this function */
if (!st->mutex) {
- apr_lock_create(&st->mutex, APR_MUTEX, APR_INTRAPROCESS, NULL, st->pool);
+ apr_thread_mutex_create(&st->mutex, APR_THREAD_MUTEX_DEFAULT, st->pool);
}
- apr_lock_acquire(st->mutex);
+ apr_thread_mutex_lock(st->mutex);
/* Search for an exact connection match in the list that is not
* being used.
*/
for (l=st->connections,p=NULL; l; l=l->next) {
- if ( (APR_SUCCESS == apr_lock_tryacquire(l->lock))
+ if ( (APR_SUCCESS == apr_thread_mutex_trylock(l->lock))
&& l->port == port
&& strcmp(l->host, host) == 0
&& ( (!l->binddn && !binddn) || (l->binddn && binddn && !strcmp(l->binddn, binddn)) )
@@ -408,7 +407,7 @@
*/
if (!l) {
for (l=st->connections,p=NULL; l; l=l->next) {
- if ( (APR_SUCCESS == apr_lock_tryacquire(l->lock))
+ if ( (APR_SUCCESS == apr_thread_mutex_trylock(l->lock))
&& l->port == port
&& strcmp(l->host, host) == 0
&& l->deref == deref
@@ -444,8 +443,8 @@
*/
/* create the details to the pool in st */
l = apr_pcalloc(st->pool, sizeof(util_ldap_connection_t));
- apr_lock_create(&l->lock, APR_MUTEX, APR_INTRAPROCESS, NULL, st->pool);
- apr_lock_acquire(l->lock);
+ apr_thread_mutex_create(&l->lock, APR_THREAD_MUTEX_DEFAULT, st->pool);
+ apr_thread_mutex_lock(l->lock);
l->pool = st->pool;
l->bound = 0;
l->host = apr_pstrdup(st->pool, host);
@@ -465,7 +464,7 @@
}
}
- apr_lock_release(st->mutex);
+ apr_thread_mutex_unlock(st->mutex);
return l;
}
@@ -500,17 +499,17 @@
/* read lock this function */
if (!util_ldap_cache_lock) {
- apr_lock_create(&util_ldap_cache_lock, APR_READWRITE, APR_INTRAPROCESS, NULL, st->pool);
+ apr_thread_rwlock_create(&util_ldap_cache_lock, st->pool);
}
/* get cache entry (or create one) */
- apr_lock_acquire_rw(util_ldap_cache_lock, APR_WRITER);
+ apr_thread_rwlock_wrlock(util_ldap_cache_lock);
curnode.url = url;
curl = util_ald_cache_fetch(util_ldap_cache, &curnode);
if (curl == NULL) {
curl = util_ald_create_caches(st, url);
}
- apr_lock_release(util_ldap_cache_lock);
+ apr_thread_rwlock_unlock(util_ldap_cache_lock);
/* a simple compare? */
if (!compare_dn_on_server) {
@@ -526,7 +525,7 @@
}
/* no - it's a server side compare */
- apr_lock_acquire_rw(util_ldap_cache_lock, APR_READER);
+ apr_thread_rwlock_rdlock(util_ldap_cache_lock);
/* is it in the compare cache? */
newnode.reqdn = (char *)reqdn;
@@ -534,13 +533,13 @@
if (node != NULL) {
/* If it's in the cache, it's good */
/* unlock this read lock */
- apr_lock_release(util_ldap_cache_lock);
+ apr_thread_rwlock_unlock(util_ldap_cache_lock);
ldc->reason = "DN Comparison TRUE (cached)";
return LDAP_COMPARE_TRUE;
}
/* unlock this read lock */
- apr_lock_release(util_ldap_cache_lock);
+ apr_thread_rwlock_unlock(util_ldap_cache_lock);
start_over:
if (failures++ > 10) {
@@ -579,11 +578,11 @@
}
else {
/* compare successful - add to the compare cache */
- apr_lock_acquire_rw(util_ldap_cache_lock, APR_READER);
+ apr_thread_rwlock_rdlock(util_ldap_cache_lock);
newnode.reqdn = (char *)reqdn;
newnode.dn = (char *)dn;
util_ald_cache_insert(curl->dn_compare_cache, &newnode);
- apr_lock_release(util_ldap_cache_lock);
+ apr_thread_rwlock_unlock(util_ldap_cache_lock);
ldc->reason = "DN Comparison TRUE (checked on server)";
result = LDAP_COMPARE_TRUE;
}
@@ -619,20 +618,20 @@
/* read lock this function */
if (!util_ldap_cache_lock) {
- apr_lock_create(&util_ldap_cache_lock, APR_READWRITE, APR_INTRAPROCESS, NULL, st->pool);
+ apr_thread_rwlock_create(&util_ldap_cache_lock, st->pool);
}
/* get cache entry (or create one) */
- apr_lock_acquire_rw(util_ldap_cache_lock, APR_WRITER);
+ apr_thread_rwlock_wrlock(util_ldap_cache_lock);
curnode.url = url;
curl = util_ald_cache_fetch(util_ldap_cache, &curnode);
if (curl == NULL) {
curl = util_ald_create_caches(st, url);
}
- apr_lock_release(util_ldap_cache_lock);
+ apr_thread_rwlock_unlock(util_ldap_cache_lock);
/* make a comparison to the cache */
- apr_lock_acquire_rw(util_ldap_cache_lock, APR_READER);
+ apr_thread_rwlock_rdlock(util_ldap_cache_lock);
curtime = apr_time_now();
the_compare_node.dn = (char *)dn;
@@ -651,7 +650,7 @@
else {
/* ...and it is good */
/* unlock this read lock */
- apr_lock_release(util_ldap_cache_lock);
+ apr_thread_rwlock_unlock(util_ldap_cache_lock);
if (LDAP_COMPARE_TRUE == compare_nodep->result) {
ldc->reason = "Comparison true (cached)";
return compare_nodep->result;
@@ -671,7 +670,7 @@
}
}
/* unlock this read lock */
- apr_lock_release(util_ldap_cache_lock);
+ apr_thread_rwlock_unlock(util_ldap_cache_lock);
start_over:
@@ -698,11 +697,11 @@
(LDAP_COMPARE_FALSE == result) ||
(LDAP_NO_SUCH_ATTRIBUTE == result)) {
/* compare completed; caching result */
- apr_lock_acquire_rw(util_ldap_cache_lock, APR_WRITER);
+ apr_thread_rwlock_wrlock(util_ldap_cache_lock);
the_compare_node.lastcompare = curtime;
the_compare_node.result = result;
util_ald_cache_insert(curl->compare_cache, &the_compare_node);
- apr_lock_release(util_ldap_cache_lock);
+ apr_thread_rwlock_unlock(util_ldap_cache_lock);
if (LDAP_COMPARE_TRUE == result) {
ldc->reason = "Comparison true (adding to cache)";
return LDAP_COMPARE_TRUE;
@@ -742,19 +741,19 @@
/* read lock this function */
if (!util_ldap_cache_lock) {
- apr_lock_create(&util_ldap_cache_lock, APR_READWRITE, APR_INTRAPROCESS, NULL, st->pool);
+ apr_thread_rwlock_create(&util_ldap_cache_lock, st->pool);
}
/* Get the cache node for this url */
- apr_lock_acquire_rw(util_ldap_cache_lock, APR_WRITER);
+ apr_thread_rwlock_wrlock(util_ldap_cache_lock);
curnode.url = url;
curl = (util_url_node_t *)util_ald_cache_fetch(util_ldap_cache, &curnode);
if (curl == NULL) {
curl = util_ald_create_caches(st, url);
}
- apr_lock_release(util_ldap_cache_lock);
+ apr_thread_rwlock_unlock(util_ldap_cache_lock);
- apr_lock_acquire_rw(util_ldap_cache_lock, APR_READER);
+ apr_thread_rwlock_rdlock(util_ldap_cache_lock);
the_search_node.username = filter;
search_nodep = util_ald_cache_fetch(curl->search_cache, &the_search_node);
if (search_nodep != NULL && search_nodep->bindpw) {
@@ -778,13 +777,13 @@
/* ...and entry is valid */
*binddn = search_nodep->dn;
*retvals = search_nodep->vals;
- apr_lock_release(util_ldap_cache_lock);
+ apr_thread_rwlock_unlock(util_ldap_cache_lock);
ldc->reason = "Authentication successful (cached)";
return LDAP_SUCCESS;
}
}
/* unlock this read lock */
- apr_lock_release(util_ldap_cache_lock);
+ apr_thread_rwlock_unlock(util_ldap_cache_lock);
/*
@@ -893,7 +892,7 @@
/*
* Add the new username to the search cache.
*/
- apr_lock_acquire_rw(util_ldap_cache_lock, APR_WRITER);
+ apr_thread_rwlock_wrlock(util_ldap_cache_lock);
the_search_node.username = filter;
the_search_node.dn = *binddn;
the_search_node.bindpw = bindpw;
@@ -901,7 +900,7 @@
the_search_node.vals = vals;
util_ald_cache_insert(curl->search_cache, &the_search_node);
ldap_msgfree(res);
- apr_lock_release(util_ldap_cache_lock);
+ apr_thread_rwlock_unlock(util_ldap_cache_lock);
ldc->reason = "Authentication successful";
return LDAP_SUCCESS;
1.2 +4 -4 httpd-ldap/ldap-aaa/mod_auth_ldap.c
Index: mod_auth_ldap.c
===================================================================
RCS file: /home/cvs/httpd-ldap/ldap-aaa/mod_auth_ldap.c,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- mod_auth_ldap.c 16 Oct 2001 21:29:08 -0000 1.1
+++ mod_auth_ldap.c 8 Feb 2002 18:29:17 -0000 1.2
@@ -81,7 +81,7 @@
/* per directory configuration */
typedef struct {
apr_pool_t *pool; /* Pool that this config is allocated from */
- apr_lock_t *lock; /* Lock for this config */
+ apr_thread_mutex_t *lock; /* Lock for this config */
int auth_authoritative; /* Is this auth method the one and only? */
int enabled; /* Is auth_ldap enabled in this directory? */
@@ -370,12 +370,12 @@
*/
if (sec->groupattr->nelts == 0) {
struct mod_auth_ldap_groupattr_entry_t *grp;
- apr_lock_acquire(sec->lock);
+ apr_thread_mutex_lock(sec->lock);
grp = apr_array_push(sec->groupattr);
grp->name = "member";
grp = apr_array_push(sec->groupattr);
grp->name = "uniquemember";
- apr_lock_release(sec->lock);
+ apr_thread_mutex_unlock(sec->lock);
}
if (!reqs_arr) {
@@ -575,7 +575,7 @@
(mod_auth_ldap_config_t *)apr_pcalloc(p, sizeof(mod_auth_ldap_config_t));
sec->pool = p;
- apr_lock_create(&sec->lock, APR_MUTEX, APR_INTRAPROCESS, NULL, p);
+ apr_thread_mutex_create(&sec->lock, APR_THREAD_MUTEX_DEFAULT, p);
sec->auth_authoritative = 1;
sec->enabled = 1;
sec->groupattr = apr_array_make(p, GROUPATTR_MAX_ELTS,