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.
#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
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;
/* 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);
}