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.
This commit is contained in:
Howard Chu 2012-05-29 19:46:17 -07:00
parent 74e8e39840
commit 68ffed7130

View File

@ -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;