X-Git-Url: https://git.distorted.org.uk/~mdw/disorder/blobdiff_plain/b3756e27b1e5022b680949631730b45977ac11df..feda7bfaefd9e5fb705d6893f26428a3109e7226:/lib/configuration.c diff --git a/lib/configuration.c b/lib/configuration.c index 88cfbf2..932c54b 100644 --- a/lib/configuration.c +++ b/lib/configuration.c @@ -240,6 +240,7 @@ static int set_string(const struct config_state *cs, cs->path, cs->line, whoami->name); return -1; } + xfree(VALUE(cs->config, char *)); VALUE(cs->config, char *) = xstrdup(vec[0]); return 0; } @@ -520,8 +521,7 @@ static int set_rights(const struct config_state *cs, cs->path, cs->line, vec[0]); return -1; } - *ADDRESS(cs->config, char *) = vec[0]; - return 0; + return set_string(cs, whoami, nvec, vec); } static int set_netaddress(const struct config_state *cs, @@ -644,7 +644,7 @@ static const struct conftype type_namepart = { set_namepart, free_namepartlist }, type_transform = { set_transform, free_transformlist }, type_netaddress = { set_netaddress, free_netaddress }, - type_rights = { set_rights, free_none }; + type_rights = { set_rights, free_string }; /* specific validation routine */ @@ -1045,6 +1045,7 @@ static int validate_destaddr(const struct config_state attribute((unused)) *cs, disorder_error(0, "%s:%d: destination address required", cs->path, cs->line); return -1; } + xfree(na->address); return 0; } @@ -1105,6 +1106,7 @@ static const struct conf conf[] = { { C(replay_min), &type_integer, validate_non_negative }, { C2(restrict, restrictions), &type_restrict, validate_any }, { C(rtp_delay_threshold), &type_integer, validate_positive }, + { C(rtp_verbose), &type_boolean, validate_any }, { C(sample_format), &type_sample_format, validate_sample_format }, { C(scratch), &type_string_accum, validate_isreg }, { C(sendmail), &type_string, validate_isabspath }, @@ -1174,7 +1176,9 @@ static int config_set_args(const struct config_state *cs, vector_append(v, s); va_end(ap); vector_terminate(v); - return config_set(cs, v->nvec, v->vec); + int rc = config_set(cs, v->nvec, v->vec); + xfree(v->vec); + return rc; } /** @brief Error callback used by config_include() @@ -1417,7 +1421,7 @@ static void set_configfile(void) { * * @p c is indeterminate after this function is called. */ -static void config_free(struct config *c) { +void config_free(struct config *c) { int n; if(c) {