aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorNick Mathewson <nickm@torproject.org>2005-07-11 17:35:36 +0000
committerNick Mathewson <nickm@torproject.org>2005-07-11 17:35:36 +0000
commit50a206e800e6a9cee121ad6193bfc48db89910e8 (patch)
tree0ae7414246d061d7a4fdfc12b14e8f4e99e22324 /src
parent658e1196d0ac44af1190b36b78a700654c4f2609 (diff)
downloadtor-50a206e800e6a9cee121ad6193bfc48db89910e8.tar
tor-50a206e800e6a9cee121ad6193bfc48db89910e8.tar.gz
Do not reverse command-line configuration options; Use new minimal-listener-close code; Add code to canonicalize configuration names.
svn:r4529
Diffstat (limited to 'src')
-rw-r--r--src/or/config.c26
-rw-r--r--src/or/or.h1
2 files changed, 18 insertions, 9 deletions
diff --git a/src/or/config.c b/src/or/config.c
index 619a90b8a..ecf572092 100644
--- a/src/or/config.c
+++ b/src/or/config.c
@@ -389,7 +389,7 @@ options_act(void)
if (accounting_is_enabled(options))
configure_accounting(time(NULL));
- if (!we_are_hibernating() && retry_all_listeners(1) < 0) {
+ if (!we_are_hibernating() && retry_all_listeners(0) < 0) {
log_fn(LOG_ERR,"Failed to bind one of the listener ports.");
return -1;
}
@@ -429,8 +429,8 @@ expand_abbrev(const char *option, int command_line)
static struct config_line_t *
config_get_commandlines(int argc, char **argv)
{
- struct config_line_t *new;
struct config_line_t *front = NULL;
+ struct config_line_t **new = &front;
char *s;
int i = 1;
@@ -447,19 +447,19 @@ config_get_commandlines(int argc, char **argv)
continue;
}
- new = tor_malloc(sizeof(struct config_line_t));
+ *new = tor_malloc_zero(sizeof(struct config_line_t));
s = argv[i];
while (*s == '-')
s++;
- new->key = tor_strdup(expand_abbrev(s, 1));
- new->value = tor_strdup(argv[i+1]);
-
+ (*new)->key = tor_strdup(expand_abbrev(s, 1));
+ (*new)->value = tor_strdup(argv[i+1]);
+ (*new)->next = NULL;
log(LOG_DEBUG,"Commandline: parsed keyword '%s', value '%s'",
- new->key, new->value);
- new->next = front;
- front = new;
+ (*new)->key, (*new)->value);
+
+ new = &((*new)->next);
i += 2;
}
return front;
@@ -694,6 +694,14 @@ config_option_is_recognized(const char *key)
return (var != NULL);
}
+/** Return the canonical name of a configuration option. */
+const char *
+config_option_get_canonical_name(const char *key)
+{
+ config_var_t *var = config_find_option(key);
+ return var->name;
+}
+
/** Return a canonicalized list of the options assigned for key.
*/
struct config_line_t *
diff --git a/src/or/or.h b/src/or/or.h
index 4084d3913..e4abc28ba 100644
--- a/src/or/or.h
+++ b/src/or/or.h
@@ -1337,6 +1337,7 @@ int config_parse_addr_policy(struct config_line_t *cfg,
void config_append_default_exit_policy(addr_policy_t **policy);
void addr_policy_free(addr_policy_t *p);
int config_option_is_recognized(const char *key);
+const char *config_option_get_canonical_name(const char *key);
struct config_line_t *config_get_assigned_option(or_options_t *options,
const char *key);
char *config_dump_options(or_options_t *options, int minimal);