Commit 2c792d1e authored by Nick Mathewson's avatar Nick Mathewson 🎃
Browse files

In typed_var_kvassign, include config names in error messages.

This should improve the usability of our configuration error messages.
parent 7e7aff9b
...@@ -24,6 +24,7 @@ ...@@ -24,6 +24,7 @@
#include "lib/log/log.h" #include "lib/log/log.h"
#include "lib/log/util_bug.h" #include "lib/log/util_bug.h"
#include "lib/malloc/malloc.h" #include "lib/malloc/malloc.h"
#include "lib/string/printf.h"
#include "lib/string/util_string.h" #include "lib/string/util_string.h"
#include "lib/confmgt/var_type_def_st.h" #include "lib/confmgt/var_type_def_st.h"
...@@ -75,7 +76,15 @@ typed_var_kvassign(void *target, const config_line_t *line, ...@@ -75,7 +76,15 @@ typed_var_kvassign(void *target, const config_line_t *line,
return def->fns->kv_parse(target, line, errmsg, def->params); return def->fns->kv_parse(target, line, errmsg, def->params);
} }
return typed_var_assign(target, line->value, errmsg, def); int rv = typed_var_assign(target, line->value, errmsg, def);
if (rv < 0 && *errmsg != NULL) {
/* typed_var_assign() didn't know the line's keyword, but we do.
* Let's add it to the error message. */
char *oldmsg = *errmsg;
tor_asprintf(errmsg, "Could not parse %s: %s", line->key, oldmsg);
tor_free(oldmsg);
}
return rv;
} }
/** /**
......
...@@ -4269,7 +4269,8 @@ test_options_trial_assign(void *arg) ...@@ -4269,7 +4269,8 @@ test_options_trial_assign(void *arg)
v = options_trial_assign(lines, 0, &msg); v = options_trial_assign(lines, 0, &msg);
tt_int_op(v, OP_EQ, SETOPT_ERR_PARSE); tt_int_op(v, OP_EQ, SETOPT_ERR_PARSE);
tt_str_op(msg, OP_EQ, tt_str_op(msg, OP_EQ,
"Unrecognized value ambidextrous. Allowed values are 0 and 1."); "Could not parse UseBridges: Unrecognized value ambidextrous. "
"Allowed values are 0 and 1.");
tor_free(msg); tor_free(msg);
config_free_lines(lines); config_free_lines(lines);
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment