From: Howard Chu Date: Wed, 30 May 2012 02:46:17 +0000 (-0700) Subject: Additional fix for threaded slapadd X-Git-Url: https://git.sur5r.net/?a=commitdiff_plain;h=68ffed7130c6cdb6e5dc62a9ad19a2a902115cae;p=openldap 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. --- 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;