# HG changeset patch # User Binki # Date 2009-11-29 23:22:14 # Node ID 038a38cef284590e835234c530451e1cecec3285 # Parent 29bb47ae5ba94a7bb137c7557d082eb7fe1b730a listen block eating, config parse error handling diff --git a/src/common/options.c b/src/common/options.c --- a/src/common/options.c +++ b/src/common/options.c @@ -173,7 +173,7 @@ int options_init(int argc, char *argv[], CFGF_MULTI | CFGF_TITLE), CFG_SEC(myname, myopts, - 0), + CFGF_NONE), CFG_FUNC("include", &cfg_include), CFG_END() @@ -192,6 +192,8 @@ int options_init(int argc, char *argv[], case CFG_PARSE_ERROR: + fprintf(stderr, "error parsing configuration file, exiting\n"); + free((*allopts)->data); free(*allopts); free(configfile); 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)) {