X-Git-Url: http://git.tuebingen.mpg.de/?p=paraslash.git;a=blobdiff_plain;f=server.c;h=ae8848b6856732ae7d1d7fb034953f64b682aad1;hp=7cb6e5200fa696471e7baaf5a4ee121cdef47755;hb=7d28108f4691e0e7df199fd89f386cafeb3466c7;hpb=cd5857fba9718ecf12dec5bba800f48851d8ab42 diff --git a/server.c b/server.c index 7cb6e520..ae8848b6 100644 --- a/server.c +++ b/server.c @@ -207,8 +207,12 @@ void parse_config_or_die(int override) daemon_open_log_or_die(); } - daemon_init_colors_or_die(conf.color_arg, color_arg_auto, color_arg_no, - conf.logfile_given, conf.log_color_arg, conf.log_color_given); + if (daemon_init_colors_or_die(conf.color_arg, color_arg_auto, color_arg_no, + conf.logfile_given)) { + int i; + for (i = 0; i < conf.log_color_given; i++) + daemon_set_log_color_or_die(conf.log_color_arg[i]); + } daemon_set_flag(DF_LOG_PID); daemon_set_flag(DF_LOG_LL); daemon_set_flag(DF_LOG_TIME); @@ -453,7 +457,7 @@ static void server_init(int argc, char **argv) .check_ambiguity = 0, .print_errors = 1 }; - int afs_socket; + int afs_socket, daemon_pipe = -1; valid_fd_012(); init_random_seed_or_die(); @@ -463,6 +467,7 @@ static void server_init(int argc, char **argv) version_handle_flag("server", conf.version_given); if (conf.help_given || conf.detailed_help_given) print_help_and_die(); + daemon_set_priority(conf.priority_arg); daemon_drop_privileges_or_die(conf.user_arg, conf.group_arg); /* parse config file, open log and set defaults */ parse_config_or_die(0); @@ -472,7 +477,7 @@ static void server_init(int argc, char **argv) init_user_list(user_list_file); /* become daemon */ if (conf.daemon_given) - daemonize(true /* parent waits for SIGTERM */); + daemon_pipe = daemonize(true /* parent waits for us */); PARA_NOTICE_LOG("initializing audio format handlers\n"); afh_init(); @@ -498,8 +503,13 @@ static void server_init(int argc, char **argv) PARA_NOTICE_LOG("initializing virtual streaming system\n"); init_vss_task(afs_socket, &sched); init_server_command_task(argc, argv); - if (conf.daemon_given) - kill(getppid(), SIGTERM); + if (daemon_pipe >= 0) { + if (write(daemon_pipe, "\0", 1) < 0) { + PARA_EMERG_LOG("daemon_pipe: %s", strerror(errno)); + exit(EXIT_FAILURE); + } + close(daemon_pipe); + } PARA_NOTICE_LOG("server init complete\n"); }