From: Randy Kunkee Date: Wed, 26 Apr 2000 09:24:12 +0000 (+0000) Subject: Rework order of things to allow restart in oneshot mode. X-Git-Tag: LDBM_PRE_GIANT_RWLOCK~3056 X-Git-Url: https://git.sur5r.net/?a=commitdiff_plain;h=75467fb3404f7e08fc5469f1b6e59546031fe328;p=openldap Rework order of things to allow restart in oneshot mode. --- diff --git a/servers/slurpd/main.c b/servers/slurpd/main.c index ab029f26c2..5a5a61fdb1 100644 --- a/servers/slurpd/main.c +++ b/servers/slurpd/main.c @@ -102,13 +102,6 @@ main( if ( ! (sglob->no_detach || sglob->one_shot_mode) ) lutil_detach( 0, 0 ); - /* - * Start threads - one thread for each replica - */ - for ( i = 0; sglob->replicas[ i ] != NULL; i++ ) { - start_replica_thread( sglob->replicas[ i ]); - } - /* * Start the main file manager thread (in fm.c). */ @@ -121,10 +114,26 @@ main( } + /* + * wait for fm to finish if in oneshot mode + */ + if ( sglob->one_shot_mode ) { + ldap_pvt_thread_join( sglob->fm_tid, (void *) NULL ); + } + + /* + * Start threads - one thread for each replica + */ + for ( i = 0; sglob->replicas[ i ] != NULL; i++ ) { + start_replica_thread( sglob->replicas[ i ]); + } + /* * Wait for the fm thread to finish. */ - ldap_pvt_thread_join( sglob->fm_tid, (void *) NULL ); + if ( !sglob->one_shot_mode ) { + ldap_pvt_thread_join( sglob->fm_tid, (void *) NULL ); + } /* * Wait for the replica threads to finish. @@ -133,8 +142,8 @@ main( ldap_pvt_thread_join( sglob->replicas[ i ]->ri_tid, (void *) NULL ); } - /* destroy the thread package */ - ldap_pvt_thread_destroy(); + /* destroy the thread package */ + ldap_pvt_thread_destroy(); Debug( LDAP_DEBUG_ANY, "slurpd: terminated.\n", 0, 0, 0 ); return 0;