X-Git-Url: http://git.tuebingen.mpg.de/?p=paraslash.git;a=blobdiff_plain;f=server.c;h=1805c92b62de84d7131bf71c905dc3d8d23a0d93;hp=2f66dc4da17833b2ac32464746645e978d8752c8;hb=b0cad48a864fe3f621138e717ff025060c396fad;hpb=d7cda933daa35663b2b9b61d62cb514afa37fd18 diff --git a/server.c b/server.c index 2f66dc4d..1805c92b 100644 --- a/server.c +++ b/server.c @@ -33,6 +33,7 @@ #include "db.h" #include "server.h" #include "afs.h" +#include "afh.h" /* FIXME */ #include "config.h" #include "close_on_fork.h" #include "send.h" @@ -61,8 +62,8 @@ char *user_list = NULL; extern void dccp_send_init(struct sender *); 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++) { @@ -460,14 +450,11 @@ repeat: continue; if (!senders[i].pre_select) continue; - senders[i].pre_select(mmd->audio_format >= 0? - &afl[mmd->audio_format] : NULL, - &max_fileno, - &rfds, &wfds); + senders[i].pre_select( &max_fileno, &rfds, &wfds); } 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); @@ -483,14 +470,10 @@ repeat: continue; if (!senders[i].post_select) continue; - senders[i].post_select(mmd->audio_format >= 0? - &afl[mmd->audio_format] : NULL, - &rfds, &wfds); - } - if (!ret) { - afs_send_chunk(); - status_refresh(); + senders[i].post_select(&rfds, &wfds); } + afs_send_chunk(); + status_refresh(); if (FD_ISSET(signal_pipe, &rfds)) { int sig; sig = para_next_signal();