*/
/* mark our connection as available for reuse */
- apr_thread_mutex_unlock(ldc->lock);
+#if APR_HAS_THREADS
+ apr_thread_mutex_unlock(ldc->lock);
+#endif
}
Unlocking an unheld lock causes problems on NetWare. The
other option would be to assume that close connection did
its job. */
+#if APR_HAS_THREADS
apr_thread_mutex_trylock(ldc->lock);
apr_thread_mutex_unlock(ldc->lock);
+#endif
return APR_SUCCESS;
}
&ldap_module);
+#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
/* 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_thread_mutex_trylock(l->lock))
- && l->port == port
+#if APR_HAS_THREADS
+ if ( (APR_SUCCESS == apr_thread_mutex_trylock(l->lock)) &&
+#else
+ if (
+#endif
+ l->port == port
&& strcmp(l->host, host) == 0
&& ( (!l->binddn && !binddn) || (l->binddn && binddn && !strcmp(l->binddn, binddn)) )
&& ( (!l->bindpw && !bindpw) || (l->bindpw && bindpw && !strcmp(l->bindpw, bindpw)) )
*/
if (!l) {
for (l=st->connections,p=NULL; l; l=l->next) {
- if ( (APR_SUCCESS == apr_thread_mutex_trylock(l->lock))
- && l->port == port
+#if APR_HAS_THREADS
+ if ( (APR_SUCCESS == apr_thread_mutex_trylock(l->lock)) &&
+#else
+ if (
+#endif
+ l->port == port
&& strcmp(l->host, host) == 0
&& l->deref == deref
#ifdef APU_HAS_LDAP_NETSCAPE_SSL
*/
/* create the details to the pool in st */
l = apr_pcalloc(st->pool, sizeof(util_ldap_connection_t));
+#if APR_HAS_THREADS
apr_thread_mutex_create(&l->lock, APR_THREAD_MUTEX_DEFAULT, st->pool);
apr_thread_mutex_lock(l->lock);
+#endif
l->pool = st->pool;
l->bound = 0;
l->host = apr_pstrdup(st->pool, host);
}
}
+#if APR_HAS_THREADS
apr_thread_mutex_unlock(st->mutex);
+#endif
return l;
}
(util_ldap_state_t *)ap_get_module_config(r->server->module_config,
&ldap_module);
-
/* read lock this function */
- if (!util_ldap_cache_lock) {
- apr_thread_rwlock_create(&util_ldap_cache_lock, st->pool);
- }
+ LDAP_CACHE_LOCK_CREATE(st->pool);
/* get cache entry (or create one) */
- apr_thread_rwlock_wrlock(util_ldap_cache_lock);
+ LDAP_CACHE_WRLOCK();
+
curnode.url = url;
curl = util_ald_cache_fetch(util_ldap_cache, &curnode);
if (curl == NULL) {
curl = util_ald_create_caches(st, url);
}
- apr_thread_rwlock_unlock(util_ldap_cache_lock);
+ LDAP_CACHE_UNLOCK();
/* a simple compare? */
if (!compare_dn_on_server) {
}
/* no - it's a server side compare */
- apr_thread_rwlock_rdlock(util_ldap_cache_lock);
+ LDAP_CACHE_RDLOCK();
/* is it in the compare cache? */
newnode.reqdn = (char *)reqdn;
if (node != NULL) {
/* If it's in the cache, it's good */
/* unlock this read lock */
- apr_thread_rwlock_unlock(util_ldap_cache_lock);
+ LDAP_CACHE_UNLOCK();
ldc->reason = "DN Comparison TRUE (cached)";
return LDAP_COMPARE_TRUE;
}
/* unlock this read lock */
- apr_thread_rwlock_unlock(util_ldap_cache_lock);
+ LDAP_CACHE_UNLOCK();
start_over:
if (failures++ > 10) {
}
else {
/* compare successful - add to the compare cache */
- apr_thread_rwlock_rdlock(util_ldap_cache_lock);
+ LDAP_CACHE_RDLOCK();
newnode.reqdn = (char *)reqdn;
newnode.dn = (char *)dn;
util_ald_cache_insert(curl->dn_compare_cache, &newnode);
- apr_thread_rwlock_unlock(util_ldap_cache_lock);
+ LDAP_CACHE_UNLOCK();
ldc->reason = "DN Comparison TRUE (checked on server)";
result = LDAP_COMPARE_TRUE;
}
(util_ldap_state_t *)ap_get_module_config(r->server->module_config,
&ldap_module);
-
/* read lock this function */
- if (!util_ldap_cache_lock) {
- apr_thread_rwlock_create(&util_ldap_cache_lock, st->pool);
- }
+ LDAP_CACHE_LOCK_CREATE(st->pool);
/* get cache entry (or create one) */
- apr_thread_rwlock_wrlock(util_ldap_cache_lock);
+ LDAP_CACHE_WRLOCK();
curnode.url = url;
curl = util_ald_cache_fetch(util_ldap_cache, &curnode);
if (curl == NULL) {
curl = util_ald_create_caches(st, url);
}
- apr_thread_rwlock_unlock(util_ldap_cache_lock);
+ LDAP_CACHE_UNLOCK();
/* make a comparison to the cache */
- apr_thread_rwlock_rdlock(util_ldap_cache_lock);
+ LDAP_CACHE_RDLOCK();
curtime = apr_time_now();
the_compare_node.dn = (char *)dn;
else {
/* ...and it is good */
/* unlock this read lock */
- apr_thread_rwlock_unlock(util_ldap_cache_lock);
+ LDAP_CACHE_UNLOCK();
if (LDAP_COMPARE_TRUE == compare_nodep->result) {
ldc->reason = "Comparison true (cached)";
return compare_nodep->result;
}
}
/* unlock this read lock */
- apr_thread_rwlock_unlock(util_ldap_cache_lock);
-
+ LDAP_CACHE_UNLOCK();
start_over:
if (failures++ > 10) {
(LDAP_COMPARE_FALSE == result) ||
(LDAP_NO_SUCH_ATTRIBUTE == result)) {
/* compare completed; caching result */
- apr_thread_rwlock_wrlock(util_ldap_cache_lock);
+ LDAP_CACHE_WRLOCK();
the_compare_node.lastcompare = curtime;
the_compare_node.result = result;
util_ald_cache_insert(curl->compare_cache, &the_compare_node);
- apr_thread_rwlock_unlock(util_ldap_cache_lock);
+ LDAP_CACHE_UNLOCK();
if (LDAP_COMPARE_TRUE == result) {
ldc->reason = "Comparison true (adding to cache)";
return LDAP_COMPARE_TRUE;
&ldap_module);
/* read lock this function */
- if (!util_ldap_cache_lock) {
- apr_thread_rwlock_create(&util_ldap_cache_lock, st->pool);
- }
+ LDAP_CACHE_LOCK_CREATE(st->pool);
/* Get the cache node for this url */
- apr_thread_rwlock_wrlock(util_ldap_cache_lock);
+ LDAP_CACHE_WRLOCK();
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_thread_rwlock_unlock(util_ldap_cache_lock);
+ LDAP_CACHE_UNLOCK();
- apr_thread_rwlock_rdlock(util_ldap_cache_lock);
+ LDAP_CACHE_RDLOCK();
the_search_node.username = filter;
search_nodep = util_ald_cache_fetch(curl->search_cache, &the_search_node);
if (search_nodep != NULL && search_nodep->bindpw) {
/* ...and entry is valid */
*binddn = search_nodep->dn;
*retvals = search_nodep->vals;
- apr_thread_rwlock_unlock(util_ldap_cache_lock);
+ LDAP_CACHE_UNLOCK();
ldc->reason = "Authentication successful (cached)";
return LDAP_SUCCESS;
}
}
/* unlock this read lock */
- apr_thread_rwlock_unlock(util_ldap_cache_lock);
-
+ LDAP_CACHE_UNLOCK();
/*
* At this point, there is no valid cached search, so lets do the search.
/*
* Add the new username to the search cache.
*/
- apr_thread_rwlock_wrlock(util_ldap_cache_lock);
+ LDAP_CACHE_WRLOCK();
the_search_node.username = filter;
the_search_node.dn = *binddn;
the_search_node.bindpw = bindpw;
the_search_node.vals = vals;
util_ald_cache_insert(curl->search_cache, &the_search_node);
ldap_msgfree(res);
- apr_thread_rwlock_unlock(util_ldap_cache_lock);
+ LDAP_CACHE_UNLOCK();
ldc->reason = "Authentication successful";
return LDAP_SUCCESS;