X-Git-Url: http://git.tuebingen.mpg.de/?p=paraslash.git;a=blobdiff_plain;f=server.c;h=c2ede7aa92566337c8d5644d1913da5b247ff512;hp=8275ccd0646adaacbd257ab08edcdeedb7e95c7d;hb=828d7e8cd8577775cb81b8c9abcd5d96a7483d9b;hpb=b2917b2a0a68f84da34e7435ad697d798a0260da diff --git a/server.c b/server.c index 8275ccd0..c2ede7aa 100644 --- a/server.c +++ b/server.c @@ -57,6 +57,7 @@ struct misc_meta_data *mmd; */ struct gengetopt_args_info conf; 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[]; @@ -65,12 +66,12 @@ extern struct audio_format afl[]; struct audio_file_selector dblist[] = { { .name = "random", - .init = random_dbtool_init, + .init = random_selector_init, .update_audio_file = NULL, }, { - .name = "plm", - .init = plm_dbtool_init, + .name = "playlist", + .init = playlist_selector_init, .update_audio_file = NULL, .pre_select = NULL, .post_select = NULL, @@ -78,7 +79,7 @@ struct audio_file_selector dblist[] = { #ifdef HAVE_MYSQL { .name = "mysql", - .init = mysql_dbtool_init, + .init = mysql_selector_init, .update_audio_file = NULL, .pre_select = NULL, .post_select = NULL, @@ -95,6 +96,10 @@ struct sender senders[] = { .name = "http", .init = http_send_init, }, + { + .name = "dccp", + .init = dccp_send_init, + }, #ifdef HAVE_ORTP { .name = "ortp", @@ -174,7 +179,7 @@ static void shm_init(void) goto err_out; mmd_mutex = ret; - mmd->dbt_num = 0; + mmd->selector_num = 0; mmd->num_played = 0; mmd->num_commands = 0; mmd->events = 0; @@ -277,11 +282,11 @@ static void setup_signal_handling(void) } } -static void init_dbtool(void) +static void init_selector(void) { int i, ret; - mmd->dbt_change = -1; /* no change nec., set to new dbt num by com_cdt */ + mmd->selector_change = -1; /* no change nec., set to new num by com_chs */ if (!conf.selector_given) goto random; for (i = 0; dblist[i].name; i++) { @@ -294,12 +299,12 @@ static void init_dbtool(void) PARA_WARNING_LOG("%s", PARA_STRERROR(-ret)); break; } - mmd->dbt_num = i; + mmd->selector_num = i; return; } PARA_WARNING_LOG("%s", "falling back to the random selector\n"); random: - mmd->dbt_num = 0; + mmd->selector_num = 0; dblist[0].init(&dblist[0]); /* always successful */ } @@ -317,7 +322,7 @@ static void init_random_seed(void) int fd, ret = -1, len = sizeof(unsigned int); unsigned int seed; - fd = open("/dev/random", O_RDONLY); + fd = open("/dev/urandom", O_RDONLY); if (fd < 0) goto out; ret = -2; @@ -352,7 +357,7 @@ static unsigned do_inits(int argc, char **argv) /* become daemon */ if (conf.daemon_given) daemon_init(); - init_dbtool(); + init_selector(); PARA_NOTICE_LOG("%s", "initializing audio file sender\n"); /* audio file sender */ afs_init(); @@ -370,21 +375,21 @@ static unsigned do_inits(int argc, char **argv) return sockfd; } -static void handle_dbt_change(void) +static void change_selector(void) { - int ret, old = mmd->dbt_num, new = mmd->dbt_change; + int ret, old = mmd->selector_num, new = mmd->selector_change; dblist[old].shutdown(); ret = dblist[new].init(&dblist[new]); - mmd->dbt_change = -1; /* reset */ + mmd->selector_change = -1; /* reset */ if (ret >= 0) { - mmd->dbt_num = new; + mmd->selector_num = new; return; } /* init failed */ PARA_ERROR_LOG("%s -- switching to the random selector\n", PARA_STRERROR(-ret)); dblist[0].init(&dblist[0]); - mmd->dbt_num = 0; + mmd->selector_num = 0; } /* @@ -396,8 +401,8 @@ static void handle_sighup(void) close_log(logfile); /* gets reopened if necessary by parse_config */ logfile = NULL; parse_config(1); /* reopens log */ - mmd->dbt_change = mmd->dbt_num; /* do not change selector */ - handle_dbt_change(); /* reload selector */ + mmd->selector_change = mmd->selector_num; /* do not change selector.. */ + change_selector(); /* .. just reload */ } static void status_refresh(void) @@ -459,8 +464,8 @@ repeat: &max_fileno, &rfds, &wfds); } - if (dblist[mmd->dbt_num].pre_select) { - ret = dblist[mmd->dbt_num].pre_select(&rfds, &wfds); + if (dblist[mmd->selector_num].pre_select) { + ret = dblist[mmd->selector_num].pre_select(&rfds, &wfds); max_fileno = MAX(max_fileno, ret); } mmd_unlock(); @@ -469,10 +474,10 @@ repeat: err = errno; //PARA_DEBUG_LOG("%s: select returned %i\n", __func__, ret); mmd_lock(); - if (mmd->dbt_change >= 0) - handle_dbt_change(); - if (dblist[mmd->dbt_num].post_select) - dblist[mmd->dbt_num].post_select(&rfds, &wfds); + if (mmd->selector_change >= 0) + change_selector(); + if (dblist[mmd->selector_num].post_select) + dblist[mmd->selector_num].post_select(&rfds, &wfds); if (ret < 0 && err == EINTR) goto repeat; if (ret < 0) { @@ -507,7 +512,7 @@ repeat: case SIGTERM: PARA_EMERG_LOG("terminating on signal %d\n", sig); kill(0, SIGTERM); - dblist[mmd->dbt_num].shutdown(); + dblist[mmd->selector_num].shutdown(); mutex_destroy(mmd_mutex); shm_detach(mmd); shm_destroy(mmd_shm_id);