From 68ffed7130c6cdb6e5dc62a9ad19a2a902115cae Mon Sep 17 00:00:00 2001 From: Howard Chu Date: Tue, 29 May 2012 19:46:17 -0700 Subject: [PATCH] Additional fix for threaded slapadd If slapadd'ing a config DB and tool-threads is set in the config LDIF, the checks for slap_tool_thread_max will be invalid. --- servers/slapd/slapadd.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/servers/slapd/slapadd.c b/servers/slapd/slapadd.c index 1cf5ceab48..58041d3026 100644 --- a/servers/slapd/slapadd.c +++ b/servers/slapd/slapadd.c @@ -302,11 +302,13 @@ getrec_thr(void *ctx) return NULL; } +static int ldif_threaded; + static int getrec(Erec *erec) { int rc; - if ( slap_tool_thread_max < 2 ) + if ( !ldif_threaded ) return getrec0(erec); while (!trec.ready) @@ -405,6 +407,7 @@ slapadd( int argc, char **argv ) ldap_pvt_thread_mutex_init( &add_mutex ); ldap_pvt_thread_cond_init( &add_cond ); ldap_pvt_thread_create( &thr, 0, getrec_thr, NULL ); + ldif_threaded = 1; } erec.nextline = 0; @@ -452,7 +455,7 @@ slapadd( int argc, char **argv ) prev = erec.e; } - if ( slap_tool_thread_max > 1 ) { + if ( ldif_threaded ) { ldap_pvt_thread_mutex_lock( &add_mutex ); add_stop = 1; trec.ready = 0;