X-Git-Url: http://git.tuebingen.mpg.de/?p=paraslash.git;a=blobdiff_plain;f=server.c;h=caa32d8ef3f77e94d68aa57cdc7283c41725cb07;hp=2f66dc4da17833b2ac32464746645e978d8752c8;hb=f2fa810c4bac275b4dc3ea9cd8b48d77e204618d;hpb=d7cda933daa35663b2b9b61d62cb514afa37fd18 diff --git a/server.c b/server.c index 2f66dc4d..caa32d8e 100644 --- a/server.c +++ b/server.c @@ -63,6 +63,7 @@ extern void http_send_init(struct sender *); extern void ortp_send_init(struct sender *); extern struct audio_format afl[]; +/* TODO: This is better handled by autoconf */ /** the list of supported audio file selectors */ struct audio_file_selector selectors[] = { { @@ -135,15 +136,7 @@ void para_log(int ll, const char* fmt,...) if (ll < conf.loglevel_arg) return; - if (!logfile) { - if (ll < WARNING) - outfd = stdout; - else - outfd = stderr; - } else - outfd = logfile; - if (conf.daemon_given && !logfile) - return; + outfd = logfile? logfile : stderr; time(&t1); tm = localtime(&t1); strftime(str, MAXLINE, "%b %d %H:%M:%S", tm); @@ -269,7 +262,6 @@ static void setup_signal_handling(void) int ret = 0; signal_pipe = para_signal_init(); -// fcntl(signal_pipe, F_SETFL, O_NONBLOCK); PARA_NOTICE_LOG("%s", "setting up signal handlers\n"); ret += para_install_sighandler(SIGINT); ret += para_install_sighandler(SIGTERM); @@ -349,7 +341,7 @@ static unsigned do_inits(int argc, char **argv) init_random_seed(); /* parse command line options */ cmdline_parser(argc, argv, &conf); - para_drop_privileges(conf.user_arg); + para_drop_privileges(conf.user_arg, conf.group_arg); /* parse config file, open log and set defaults */ parse_config(0); log_welcome("para_server", conf.loglevel_arg); @@ -445,14 +437,12 @@ int main(int argc, char *argv[]) valid_fd_012(); sockfd = do_inits(argc, argv); repeat: - /* check socket and signal pipe in any case */ FD_ZERO(&rfds); FD_ZERO(&wfds); - FD_SET(sockfd, &rfds); - max_fileno = sockfd; - FD_SET(signal_pipe, &rfds); - max_fileno = MAX(max_fileno, signal_pipe); - + max_fileno = -1; + /* check socket and signal pipe in any case */ + para_fd_set(sockfd, &rfds, &max_fileno); + para_fd_set(signal_pipe, &rfds, &max_fileno); timeout = afs_preselect(); status_refresh(); for (i = 0; senders[i].name; i++) { @@ -467,7 +457,7 @@ repeat: } if (selectors[mmd->selector_num].pre_select) { ret = selectors[mmd->selector_num].pre_select(&rfds, &wfds); - max_fileno = MAX(max_fileno, ret); + max_fileno = PARA_MAX(max_fileno, ret); } mmd_unlock(); ret = para_select(max_fileno + 1, &rfds, &wfds, timeout); @@ -487,10 +477,8 @@ repeat: &afl[mmd->audio_format] : NULL, &rfds, &wfds); } - if (!ret) { - afs_send_chunk(); - status_refresh(); - } + afs_send_chunk(); + status_refresh(); if (FD_ISSET(signal_pipe, &rfds)) { int sig; sig = para_next_signal();