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,