X-Git-Url: http://git.tuebingen.mpg.de/?p=paraslash.git;a=blobdiff_plain;f=server.c;h=68434e94e56820c81bb14de76b6759bc645cce29;hp=6c2cbb8758bc5f98e12ca69198ebfb069c595e77;hb=36feca1700d044452991cfb506fb803ac3c32e60;hpb=3943f98061a55f373991ecb2e4429ec02baf0555 diff --git a/server.c b/server.c index 6c2cbb87..68434e94 100644 --- a/server.c +++ b/server.c @@ -100,6 +100,7 @@ int mmd_mutex; static char *user_list_file = NULL; static struct sched sched; +static struct signal_task *signal_task; /** The task responsible for server command handling. */ struct server_command_task { @@ -227,12 +228,6 @@ out: exit(EXIT_FAILURE); } -static void signal_pre_select(struct sched *s, void *context) -{ - struct signal_task *st = context; - para_fd_set(st->fd, &s->rfds, &s->max_fileno); -} - /* * called when server gets SIGHUP or when client invokes hup command. */ @@ -301,22 +296,18 @@ cleanup: static void init_signal_task(void) { - static struct signal_task signal_task_struct, - *st = &signal_task_struct; - - PARA_NOTICE_LOG("setting up signal handling\n"); - st->fd = para_signal_init(); /* always successful */ + signal_task = signal_init_or_die(); para_install_sighandler(SIGINT); para_install_sighandler(SIGTERM); para_install_sighandler(SIGHUP); para_install_sighandler(SIGCHLD); para_sigaction(SIGPIPE, SIG_IGN); - add_close_on_fork_list(st->fd); - st->task = task_register(&(struct task_info) { + add_close_on_fork_list(signal_task->fd); + signal_task->task = task_register(&(struct task_info) { .name = "signal", .pre_select = signal_pre_select, .post_select = signal_post_select, - .context = st, + .context = signal_task, }, &sched); } @@ -370,7 +361,7 @@ static int command_post_select(struct sched *s, void *context) free(chunk_table); alarm(ALARM_TIMEOUT); close_listed_fds(); - para_signal_shutdown(); + signal_shutdown(signal_task); /* * put info on who we are serving into argv[0] to make * client ip visible in top/ps