[Fedora-directory-commits] ldapserver/ldap/servers/plugins/dna dna.c, 1.5, 1.6
Nathan Kinder (nkinder)
fedora-directory-commits at redhat.com
Wed Jul 30 18:17:28 UTC 2008
Author: nkinder
Update of /cvs/dirsec/ldapserver/ldap/servers/plugins/dna
In directory cvs-int.fedora.redhat.com:/tmp/cvs-serv32691/ldap/servers/plugins/dna
Modified Files:
dna.c
Log Message:
Resolves: 456968
Summary: Use a separate new value lock for each DNA managed range.
Index: dna.c
===================================================================
RCS file: /cvs/dirsec/ldapserver/ldap/servers/plugins/dna/dna.c,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -r1.5 -r1.6
--- dna.c 30 Jul 2008 17:43:40 -0000 1.5
+++ dna.c 30 Jul 2008 18:17:26 -0000 1.6
@@ -114,6 +114,7 @@
Slapi_Filter *slapi_filter;
char *generate;
char *scope;
+ Slapi_Mutex *new_value_lock;
};
static PRCList *dna_global_config = NULL;
@@ -123,11 +124,6 @@
static char *_PluginDN = NULL;
-/*
- * new value lock
- */
-static Slapi_Mutex *g_new_value_lock;
-
/**
*
* DNA plug-in management functions
@@ -332,9 +328,8 @@
"--> dna_start\n");
g_dna_cache_lock = PR_NewRWLock(PR_RWLOCK_RANK_NONE, "dna");
- g_new_value_lock = slapi_new_mutex();
- if (!g_dna_cache_lock || !g_new_value_lock) {
+ if (!g_dna_cache_lock) {
slapi_log_error(SLAPI_LOG_FATAL, DNA_PLUGIN_SUBSYSTEM,
"dna_start: lock creation failed\n");
@@ -570,9 +565,15 @@
"----------> dnaMaxValue [%ld]\n", value, 0, 0);
slapi_ch_free_string(&value);
- } else
+ } else {
entry->maxval = -1;
+ }
+ /* create the new value lock for this range */
+ entry->new_value_lock = slapi_new_mutex();
+ if (!entry->new_value_lock) {
+ goto bail;
+ }
/**
* Finally add the entry to the list
@@ -666,6 +667,9 @@
if (e->scope)
slapi_ch_free_string(&e->scope);
+ if (e->new_value_lock)
+ slapi_destroy_mutex(e->new_value_lock);
+
slapi_ch_free((void **) entry);
}
@@ -954,7 +958,7 @@
* with itself so we lock here
*/
- slapi_lock_mutex(g_new_value_lock);
+ slapi_lock_mutex(config_entry->new_value_lock);
for (attempts = 0; attempts < 3; attempts++) {
@@ -1104,7 +1108,7 @@
done:
- slapi_unlock_mutex(g_new_value_lock);
+ slapi_unlock_mutex(config_entry->new_value_lock);
if (LDAP_SUCCESS != ret)
slapi_ch_free_string(&old_value);
More information about the Fedora-directory-commits
mailing list