]> git.sur5r.net Git - openldap/commitdiff
Rework order of things to allow restart in oneshot mode.
authorRandy Kunkee <kunkee@openldap.org>
Wed, 26 Apr 2000 09:24:12 +0000 (09:24 +0000)
committerRandy Kunkee <kunkee@openldap.org>
Wed, 26 Apr 2000 09:24:12 +0000 (09:24 +0000)
servers/slurpd/main.c

index ab029f26c2b8f2aeb9160bc2680d22f92303f9a2..5a5a61fdb1d6fd146d4fd670a386de7db066792d 100644 (file)
@@ -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;