You are viewing a plain text version of this content. The canonical link for it is here.
Posted to cvs@httpd.apache.org by tr...@apache.org on 2006/04/11 19:28:03 UTC

svn commit: r393264 - in /httpd/httpd/branches/2.0.x: STATUS modules/experimental/util_ldap.c

Author: trawick
Date: Tue Apr 11 10:27:53 2006
New Revision: 393264

URL: http://svn.apache.org/viewcvs?rev=393264&view=rev
Log:
Backport from trunk and 2.2.x:

  mod_ldap: Brad's pool fixes to fix a race condition during
  first request as well as thread-safety issues between threads
  handling different vhosts at steady state

Submitted by: bnicholes
Reviewed by:  trawick, gregames


Modified:
    httpd/httpd/branches/2.0.x/STATUS
    httpd/httpd/branches/2.0.x/modules/experimental/util_ldap.c

Modified: httpd/httpd/branches/2.0.x/STATUS
URL: http://svn.apache.org/viewcvs/httpd/httpd/branches/2.0.x/STATUS?rev=393264&r1=393263&r2=393264&view=diff
==============================================================================
--- httpd/httpd/branches/2.0.x/STATUS (original)
+++ httpd/httpd/branches/2.0.x/STATUS Tue Apr 11 10:27:53 2006
@@ -150,21 +150,6 @@
          http://svn.apache.org/viewcvs?rev=386821&view=rev
        +1: wrowe, trawick
 
-    *) mod_ldap: Brad's pool fixes to fix a race condition during
-       first request as well as thread-safety issues between threads
-       handling different vhosts at steady state
-       trunk revision:
-         http://svn.apache.org/viewcvs.cgi?view=rev&rev=386477
-         (there's some server config merge logic which does not apply
-         to 2.0)
-       2.0 patch is at
-         http://people.apache.org/~trawick/20_ldap_pool.patch
-       Add also Greg's apr_pool_create comment:
-         http://svn.apache.org/viewcvs?rev=393028&view=rev
-         (not gonna create a new 20_ldap_pool.patch to integrate
-         that comment; should be applied separately)
-       +1: trawick, gregames, bnicholes
-
     *) mod_proxy: Fix PR 11971 (HTTP proxy header "Via" with wrong hostname
                   if ServerName not set or UseCanonicalName Off) by
                   backporting r102320.

Modified: httpd/httpd/branches/2.0.x/modules/experimental/util_ldap.c
URL: http://svn.apache.org/viewcvs/httpd/httpd/branches/2.0.x/modules/experimental/util_ldap.c?rev=393264&r1=393263&r2=393264&view=diff
==============================================================================
--- httpd/httpd/branches/2.0.x/modules/experimental/util_ldap.c (original)
+++ httpd/httpd/branches/2.0.x/modules/experimental/util_ldap.c Tue Apr 11 10:27:53 2006
@@ -394,9 +394,6 @@
 
 #if APR_HAS_THREADS
     /* mutex lock this function */
-    if (!st->mutex) {
-        apr_thread_mutex_create(&st->mutex, APR_THREAD_MUTEX_DEFAULT, st->pool);
-    }
     apr_thread_mutex_lock(st->mutex);
 #endif
 
@@ -1387,7 +1384,13 @@
     util_ldap_state_t *st = 
         (util_ldap_state_t *)apr_pcalloc(p, sizeof(util_ldap_state_t));
 
-    st->pool = p;
+    /* Create a per vhost pool for mod_ldap to use, serialized with 
+     * st->mutex (also one per vhost) 
+     */
+    apr_pool_create(&st->pool, p);
+#if APR_HAS_THREADS
+    apr_thread_mutex_create(&st->mutex, APR_THREAD_MUTEX_DEFAULT, st->pool);
+#endif
 
     st->cache_bytes = 100000;
     st->search_cache_ttl = 600000000;
@@ -1444,7 +1447,7 @@
         /* If the cache file already exists then delete it.  Otherwise we are
          * going to run into problems creating the shared memory. */
         if (st->cache_file) {
-            char *lck_file = apr_pstrcat (st->pool, st->cache_file, ".lck", NULL);
+            char *lck_file = apr_pstrcat (ptemp, st->cache_file, ".lck", NULL);
             apr_file_remove(st->cache_file, ptemp);
             apr_file_remove(lck_file, ptemp);
         }