]> git.sur5r.net Git - openldap/commitdiff
Additional fix for threaded slapadd
authorHoward Chu <hyc@openldap.org>
Wed, 30 May 2012 02:46:17 +0000 (19:46 -0700)
committerQuanah Gibson-Mount <quanah@openldap.org>
Wed, 30 May 2012 20:25:41 +0000 (13:25 -0700)
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

index ec0eb011d23f88f040d640be15eea684debdf6ff..034e9414040f9660bf14c6b33e5817e09cddb59f 100644 (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)
@@ -404,6 +406,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;
@@ -447,7 +450,7 @@ slapadd( int argc, char **argv )
                entry_free( erec.e );
        }
 
-       if ( slap_tool_thread_max > 1 ) {
+       if ( ldif_threaded ) {
                ldap_pvt_thread_mutex_lock( &add_mutex );
                add_stop = 1;
                trec.ready = 0;