diff --git a/src/server/distrend.c b/src/server/distrend.c --- a/src/server/distrend.c +++ b/src/server/distrend.c @@ -608,6 +608,8 @@ void distrenjob_remove(struct general_in /* Grabs config info from confs */ int distrend_do_config(int argc, char *argv[], struct distrend_config **config) { + unsigned int counter; + cfg_opt_t myopts_listen[] = { CFG_SIMPLE_STR("type", NULL), @@ -625,6 +627,7 @@ int distrend_do_config(int argc, char *a }; struct distrenjob *distrenjob; + cfg_t *cfg_listen; int tmp; @@ -642,7 +645,20 @@ int distrend_do_config(int argc, char *a *config = malloc(sizeof(struct distrend_config)); myopts[1].simple_value = &(*config)->datadir; - options_init(argc, argv, &(*config)->mycfg, myopts, "daemon", &(*config)->options); + if(options_init(argc, argv, &(*config)->mycfg, myopts, "daemon", &(*config)->options)) + return 1; + + /** + grab listen blocks: + */ + (*config)->listens = malloc(sizeof(struct distrend_listen) * (cfg_size((*config)->mycfg, "listen") + 1)); + for(counter = 0; counter < cfg_size((*config)->mycfg, "listen"); counter ++) + { + cfg_listen = cfg_getnsec((*config)->mycfg, "listen", counter); + (*config)->listens[counter].port = cfg_getint(cfg_listen, "port"); + (*config)->listens[counter].sock = -1; + } + memset(&(*config)->listens[counter], '\0', sizeof(struct distrend_listen)); fprintf(stderr, "using %s as datadir\n", (*config)->datadir); @@ -1117,7 +1133,8 @@ int main(int argc, char *argv[]) } cont = 1; - distrend_do_config(argc, argv, &config); + if(distrend_do_config(argc, argv, &config)) + return 1; if(start_data(&general_info, config->datadir)) {