X-Git-Url: https://git.sur5r.net/?a=blobdiff_plain;f=bacula%2Fsrc%2Ffiled%2Ffiled.c;h=37a1d3547cecf098e8de2b5de7e829efffca6aba;hb=1107141f6e05c9473ace82dfc397cba6b9506dee;hp=3d8e788d22ecd4ea7e410224f1e93b6a6901b3ad;hpb=137f3636336f7057cbf709341a773afaea5a2eeb;p=bacula%2Fbacula diff --git a/bacula/src/filed/filed.c b/bacula/src/filed/filed.c index 3d8e788d22..37a1d3547c 100644 --- a/bacula/src/filed/filed.c +++ b/bacula/src/filed/filed.c @@ -7,7 +7,7 @@ * */ /* - Copyright (C) 2000-2004 Kern Sibbald and John Walker + Copyright (C) 2000-2005 Kern Sibbald This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as @@ -62,9 +62,10 @@ static pthread_t server_tid; static void usage() { - fprintf(stderr, _( + Pmsg0(-1, _( +"Copyright (C) 2000-2005 Kern Sibbald\n" "\nVersion: " VERSION " (" BDATE ")\n\n" -"Usage: bacula-fd [-f -s] [-c config_file] [-d debug_level]\n" +"Usage: bacula-fd [-f -s] [-c config_file] [-d debug_level]\n" " -c use as configuration file\n" " -dnn set debug level to nn\n" " -f run in foreground (for debugging)\n" @@ -75,14 +76,14 @@ static void usage() " -u userid\n" " -v verbose user messages\n" " -? print this message.\n" -"\n")); +"\n")); exit(1); } -/********************************************************************* +/********************************************************************* * - * Main Bacula Unix Client Program + * Main Bacula Unix Client Program * */ #if defined(HAVE_CYGWIN) || defined(HAVE_WIN32) @@ -115,7 +116,7 @@ int main (int argc, char *argv[]) case 'd': /* debug level */ debug_level = atoi(optarg); if (debug_level <= 0) { - debug_level = 1; + debug_level = 1; } break; @@ -150,7 +151,7 @@ int main (int argc, char *argv[]) default: usage(); - } + } } argc -= optind; argv += optind; @@ -159,13 +160,14 @@ int main (int argc, char *argv[]) if (configfile != NULL) free(configfile); configfile = bstrdup(*argv); - argc--; + argc--; argv++; } if (argc) { usage(); } + server_tid = pthread_self(); if (!no_signals) { init_signals(terminate_filed); } else { @@ -191,8 +193,8 @@ int main (int argc, char *argv[]) me = (CLIENT *)GetNextRes(R_CLIENT, NULL); UnlockRes(); if (!me) { - Emsg1(M_ABORT, 0, _("No File daemon resource defined in %s\n\ -Without that I don't know who I am :-(\n"), configfile); + 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, NULL, me->hdr.name); if (!me->messages) { @@ -219,8 +221,8 @@ Without that I don't know who I am :-(\n"), configfile); } /* Maximum 1 daemon at a time */ - create_pid_file(me->pid_directory, "bacula-fd", me->FDport); - read_state_file(me->working_directory, "bacula-fd", me->FDport); + create_pid_file(me->pid_directory, "bacula-fd", get_first_port_host_order(me->FDaddrs)); + read_state_file(me->working_directory, "bacula-fd", get_first_port_host_order(me->FDaddrs)); drop(uid, gid); @@ -237,17 +239,23 @@ Without that I don't know who I am :-(\n"), configfile); server_tid = pthread_self(); if (inetd_request) { - /* Socket is on fd 0 */ - struct sockaddr_in client_addr; - memset(&client_addr, 0, sizeof(client_addr)); - BSOCK *bs = init_bsock(NULL, 0, "client", "unknown client", me->FDport, - &client_addr); + /* Socket is on fd 0 */ + struct sockaddr client_addr; + int port = -1; + socklen_t client_addr_len = sizeof(client_addr); + if (getsockname(0, &client_addr, &client_addr_len) == 0) { + /* MA BUG 6 remove ifdefs */ + port = sockaddr_get_port_net_order(&client_addr); + } + BSOCK *bs = init_bsock(NULL, 0, "client", "unknown client", port, &client_addr); handle_client_request((void *)bs); } else { /* Become server, and handle requests */ - Dmsg1(10, "filed: listening on port %d\n", me->FDport); - bnet_thread_server(me->FDaddr, me->FDport, me->MaxConcurrentJobs, - &dir_workq, handle_client_request); + IPADDR *p; + foreach_dlist(p, me->FDaddrs) { + Dmsg1(10, "filed: listening on port %d\n", p->get_port_host_order()); + } + bnet_thread_server(me->FDaddrs, me->MaxConcurrentJobs, &dir_workq, handle_client_request); } terminate_filed(0); @@ -257,13 +265,13 @@ Without that I don't know who I am :-(\n"), configfile); void terminate_filed(int sig) { bnet_stop_thread_server(server_tid); - write_state_file(me->working_directory, "bacula-fd", me->FDport); - delete_pid_file(me->pid_directory, "bacula-fd", me->FDport); + write_state_file(me->working_directory, "bacula-fd", get_first_port_host_order(me->FDaddrs)); + delete_pid_file(me->pid_directory, "bacula-fd", get_first_port_host_order(me->FDaddrs)); if (configfile != NULL) { free(configfile); } if (debug_level > 5) { - print_memory_pool_stats(); + print_memory_pool_stats(); } free_config_resources(); term_msg();