]> git.sur5r.net Git - bacula/bacula/blobdiff - bacula/src/dird/dird.c
Commit backports from 2.3.x
[bacula/bacula] / bacula / src / dird / dird.c
index d34acd8efbbc1cb7b69033d8606160c9db3d88c7..45ae5a68184278bcb5c0f00e057da302cd722ca2 100644 (file)
@@ -228,15 +228,17 @@ int main (int argc, char *argv[])
       Jmsg((JCR *)NULL, M_ERROR_TERM, 0, _("Please correct configuration file: %s\n"), configfile);
    }
 
-   if (background) {
-      daemon_start();
-      init_stack_dump();              /* grab new pid */
+   if (!test_config) {                /* we don't need to do this block in test mode */
+      if (background) {
+         daemon_start();
+         init_stack_dump();              /* grab new pid */
+      }
+   
+      /* Create pid must come after we are a daemon -- so we have our final pid */
+      create_pid_file(director->pid_directory, "bacula-dir", get_first_port_host_order(director->DIRaddrs));
+      read_state_file(director->working_directory, "bacula-dir", get_first_port_host_order(director->DIRaddrs));
    }
 
-   /* Create pid must come after we are a daemon -- so we have our final pid */
-   create_pid_file(director->pid_directory, "bacula-dir", get_first_port_host_order(director->DIRaddrs));
-   read_state_file(director->working_directory, "bacula-dir", get_first_port_host_order(director->DIRaddrs));
-
    drop(uid, gid);                    /* reduce privileges if requested */
 
    if (!check_catalog()) {
@@ -317,6 +319,7 @@ void terminate_dird(int sig)
    static bool already_here = false;
 
    if (already_here) {                /* avoid recursive temination problems */
+      bmicrosleep(2, 0);              /* yield */
       exit(1);
    }
    already_here = true;
@@ -324,7 +327,6 @@ void terminate_dird(int sig)
    generate_daemon_event(NULL, "Exit");
    write_state_file(director->working_directory, "bacula-dir", get_first_port_host_order(director->DIRaddrs));
    delete_pid_file(director->pid_directory, "bacula-dir", get_first_port_host_order(director->DIRaddrs));
-// signal(SIGCHLD, SIG_IGN);          /* don't worry about children now */
    term_scheduler();
    term_job_server();
    if (runjob) {