]> git.sur5r.net Git - bacula/bacula/blobdiff - bacula/src/filed/filed.c
Server address binding + bscan updates -- see kes25Sep02
[bacula/bacula] / bacula / src / filed / filed.c
index 5a40ade9fb3b070c587ec66ccda239745347c2ff..851e3b2b191ed97cd7de2d4cd75cc9d3497ad23f 100644 (file)
@@ -3,6 +3,8 @@
  *
  *    Kern Sibbald, March MM
  *
+ *   Version $Id$
+ *
  */
 /*
    Copyright (C) 2000, 2001, 2002 Kern Sibbald and John Walker
@@ -49,6 +51,8 @@ static char *configfile = NULL;
 static int foreground = 0;
 static workq_t dir_workq;            /* queue of work from Director */
 
+CLIENT *me;                          /* my resource */
+
 static void usage()
 {
    fprintf(stderr, _(
@@ -78,11 +82,11 @@ int main (int argc, char *argv[])
    int ch;
    int no_signals = FALSE;
    int test_config = FALSE;
-   CLIENT *me;                       /* my resource */
    DIRRES *director;
 
    init_stack_dump();
    my_name_is(argc, argv, "filed");
+   init_msg(NULL, NULL);
    daemon_start_time = time(NULL);
 
    memset(&last_job, 0, sizeof(last_job));
@@ -143,8 +147,6 @@ int main (int argc, char *argv[])
       configfile = bstrdup(CONFIG_FILE);
    }
 
-
-   init_msg(NULL, NULL);
    parse_config(configfile);
 
    LockRes();
@@ -162,7 +164,17 @@ int main (int argc, char *argv[])
       Emsg1(M_ABORT, 0, _("No File daemon resource defined in %s\n\
 Without that I don't know who I am :-(\n"), configfile);
    } else {
-      my_name_is(0, (char **)NULL, me->hdr.name);
+      my_name_is(0, NULL, me->hdr.name);
+      if (!me->messages) {
+        LockRes();
+        me->messages = (MSGS *)GetNextRes(R_MSGS, NULL);
+        UnlockRes();
+        if (!me->messages) {
+             Emsg1(M_ABORT, 0, _("No Messages resource defined in %s\n"), configfile);
+        }
+      }
+      close_msg(NULL);               /* close temp message handler */
+      init_msg(NULL, me->messages);   /* open user specified message handler */
    }
    working_directory = me->working_directory;
 
@@ -175,15 +187,20 @@ Without that I don't know who I am :-(\n"), configfile);
       init_stack_dump();             /* set new pid */
    }
 
+   create_pid_file(me->pid_directory, "bacula-fd", me->FDport);
+
 #ifdef BOMB
    me += 1000000;
 #endif
 
+   set_thread_concurrency(10);
+
    start_watchdog();                 /* start watchdog thread */
 
    /* Become server, and handle requests */
    Dmsg1(10, "filed: listening on port %d\n", me->FDport);
-   bnet_thread_server(me->FDport, 10, &dir_workq, handle_client_request);
+   bnet_thread_server(me->FDaddr, me->FDport, me->MaxConcurrentJobs, 
+                     &dir_workq, handle_client_request);
 
    exit(0);                          /* should never get here */
 }
@@ -198,9 +215,10 @@ void terminate_filed(int sig)
    if (debug_level > 5) {
       print_memory_pool_stats(); 
    }
+   delete_pid_file(me->pid_directory, "bacula-fd", me->FDport);
    free_config_resources();
-   close_memory_pool();              /* free memory in pool */
    term_msg();
+   close_memory_pool();              /* release free memory in pool */
    sm_dump(False);                   /* dump orphaned buffers */
    exit(1);
 }