From 75467fb3404f7e08fc5469f1b6e59546031fe328 Mon Sep 17 00:00:00 2001 From: Randy Kunkee Date: Wed, 26 Apr 2000 09:24:12 +0000 Subject: [PATCH] Rework order of things to allow restart in oneshot mode. --- servers/slurpd/main.c | 29 +++++++++++++++++++---------- 1 file changed, 19 insertions(+), 10 deletions(-) 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; -- 2.39.5