]> git.sur5r.net Git - bacula/bacula/blobdiff - bacula/src/dird/dird.c
kes Fix display of Recycle flag after update volume=foo recycle=yes.
[bacula/bacula] / bacula / src / dird / dird.c
index d97b31fd334b837d6f5c9f31e9587ebea2109672..8f596ca73591676cb97314a078bf96519fdcccd7 100644 (file)
@@ -7,8 +7,8 @@
    many others, a complete list can be found in the file AUTHORS.
    This program is Free Software; you can redistribute it and/or
    modify it under the terms of version two of the GNU General Public
-   License as published by the Free Software Foundation plus additions
-   that are listed in the file LICENSE.
+   License as published by the Free Software Foundation and included
+   in the file LICENSE.
 
    This program is distributed in the hope that it will be useful, but
    WITHOUT ANY WARRANTY; without even the implied warranty of
@@ -69,6 +69,7 @@ DIRRES *director;                     /* Director resource */
 int FDConnectTimeout;
 int SDConnectTimeout;
 char *configfile = NULL;
+void *start_heap;
 
 /* Globals Imported */
 extern int r_first, r_last;           /* first and last resources */
@@ -122,11 +123,12 @@ int main (int argc, char *argv[])
 {
    int ch;
    JCR *jcr;
-   int no_signals = FALSE;
-   int test_config = FALSE;
+   bool no_signals = false;
+   bool test_config = false;
    char *uid = NULL;
    char *gid = NULL;
 
+   start_heap = sbrk(0);
    setlocale(LC_ALL, "");
    bindtextdomain("bacula", LOCALEDIR);
    textdomain("bacula");
@@ -151,7 +153,7 @@ int main (int argc, char *argv[])
          if (debug_level <= 0) {
             debug_level = 1;
          }
-         Dmsg1(0, "Debug level = %d\n", debug_level);
+         Dmsg1(10, "Debug level = %d\n", debug_level);
          break;
 
       case 'f':                    /* run in foreground */
@@ -172,11 +174,11 @@ int main (int argc, char *argv[])
          break;
 
       case 's':                    /* turn off signals */
-         no_signals = TRUE;
+         no_signals = true;
          break;
 
       case 't':                    /* test config */
-         test_config = TRUE;
+         test_config = true;
          break;
 
       case 'u':                    /* set uid */
@@ -293,6 +295,14 @@ int main (int argc, char *argv[])
    return 0;
 }
 
+/*
+ * This allows the message handler to operate on the database
+ *   by using a pointer to this function. The pointer is
+ *   needed because the other daemons do not have access
+ *   to the database.  If the pointer is
+ *   not defined (other daemons), then writing the database
+ *   is disabled. 
+ */
 static void dir_sql_query(JCR *jcr, const char *cmd)
 {
    if (!jcr || !jcr->db) {
@@ -458,7 +468,7 @@ void reload_config(int sig)
    ok = parse_config(configfile, 0, M_ERROR);  /* no exit on error */
 
    Dmsg0(100, "Reloaded config file\n");
-   if (!ok || !check_resources()) {
+   if (!ok || !check_resources() || !check_catalog()) {
       rtable = find_free_reload_table_entry();    /* save new, bad table */
       if (rtable < 0) {
          Jmsg(NULL, M_ERROR, 0, _("Please correct configuration file: %s\n"), configfile);
@@ -494,7 +504,7 @@ void reload_config(int sig)
    set_working_directory(director->working_directory);
    FDConnectTimeout = director->FDConnectTimeout;
    SDConnectTimeout = director->SDConnectTimeout;
-   Dmsg0(0, "Director's configuration file reread.\n");
+   Dmsg0(10, "Director's configuration file reread.\n");
 
    /* Now release saved resources, if no jobs using the resources */
    if (njobs == 0) {
@@ -866,6 +876,7 @@ static bool check_catalog()
          if (db) {
             Jmsg(NULL, M_FATAL, 0, _("%s"), db_strerror(db));
             Pmsg1(000, "%s", db_strerror(db));
+            db_close_database(NULL, db);
          }
          OK = false;
          continue;