diff options
author | Nick Mathewson <nickm@torproject.org> | 2004-10-15 05:09:48 +0000 |
---|---|---|
committer | Nick Mathewson <nickm@torproject.org> | 2004-10-15 05:09:48 +0000 |
commit | 01eacbca9ebf217bf1c8c5f883266092b4365cec (patch) | |
tree | 96ab4194129747ea6f2ae2a640bd3848258f3ab6 /src/or | |
parent | 88e0c080cf5493e2841a392f77daeef3db6a289d (diff) | |
download | tor-01eacbca9ebf217bf1c8c5f883266092b4365cec.tar tor-01eacbca9ebf217bf1c8c5f883266092b4365cec.tar.gz |
Make RecommendedVersions a CONFIG_TYPE_LINELIST option, and have it tolerate whitespace a little better.
svn:r2528
Diffstat (limited to 'src/or')
-rw-r--r-- | src/or/config.c | 4 | ||||
-rw-r--r-- | src/or/dirserv.c | 17 | ||||
-rw-r--r-- | src/or/or.h | 5 |
3 files changed, 21 insertions, 5 deletions
diff --git a/src/or/config.c b/src/or/config.c index 8edce5121..c071b413d 100644 --- a/src/or/config.c +++ b/src/or/config.c @@ -279,7 +279,7 @@ config_assign(or_options_t *options, struct config_line_t *list) config_compare(list, "RouterFile", CONFIG_TYPE_STRING, &options->RouterFile) || config_compare(list, "RunAsDaemon", CONFIG_TYPE_BOOL, &options->RunAsDaemon) || config_compare(list, "RunTesting", CONFIG_TYPE_BOOL, &options->RunTesting) || - config_compare(list, "RecommendedVersions",CONFIG_TYPE_STRING, &options->RecommendedVersions) || + config_compare(list, "RecommendedVersions",CONFIG_TYPE_LINELIST, &options->RecommendedVersions) || config_compare(list, "RendNodes", CONFIG_TYPE_STRING, &options->RendNodes) || config_compare(list, "RendExcludeNodes",CONFIG_TYPE_STRING, &options->RendExcludeNodes) || @@ -466,7 +466,6 @@ free_options(or_options_t *options) tor_free(options->RendNodes); tor_free(options->RendExcludeNodes); tor_free(options->OutboundBindAddress); - tor_free(options->RecommendedVersions); tor_free(options->User); tor_free(options->Group); tor_free(options->HttpProxy); @@ -477,6 +476,7 @@ free_options(or_options_t *options) config_free_lines(options->ExitPolicy); config_free_lines(options->SocksPolicy); config_free_lines(options->DirServers); + config_free_lines(options->RecommendedVersions); if (options->FirewallPorts) { SMARTLIST_FOREACH(options->FirewallPorts, char *, cp, tor_free(cp)); smartlist_free(options->FirewallPorts); diff --git a/src/or/dirserv.c b/src/or/dirserv.c index dcfa207d0..f414350bd 100644 --- a/src/or/dirserv.c +++ b/src/or/dirserv.c @@ -559,6 +559,7 @@ dirserv_dump_directory_to_string(char *s, size_t maxlen, { char *cp, *eos; char *identity_pkey; /* Identity key, DER64-encoded. */ + char *recommended_versions; char digest[20]; char signature[128]; char published[33]; @@ -589,6 +590,20 @@ dirserv_dump_directory_to_string(char *s, size_t maxlen, } } #endif + + { + smartlist_t *versions; + struct config_line_t *ln; + versions = smartlist_create(); + for (ln = options.RecommendedVersions; ln; ln = ln->next) { + smartlist_split_string(versions, ln->value, ",", + SPLIT_SKIP_SPACE|SPLIT_IGNORE_BLANK, 0); + } + recommended_versions = smartlist_join_strings(versions,",",0); + SMARTLIST_FOREACH(versions,char *,s,tor_free(s)); + smartlist_free(versions); + } + dirserv_remove_old_servers(ROUTER_MAX_AGE); published_on = time(NULL); format_iso_time(published, published_on); @@ -598,7 +613,7 @@ dirserv_dump_directory_to_string(char *s, size_t maxlen, "recommended-software %s\n" "running-routers %s\n" "opt dir-signing-key %s\n\n", - published, options.RecommendedVersions, cp, identity_pkey); + published, recommended_versions, cp, identity_pkey); tor_free(cp); tor_free(identity_pkey); diff --git a/src/or/or.h b/src/or/or.h index 1fe05447d..ff2a2957d 100644 --- a/src/or/or.h +++ b/src/or/or.h @@ -858,8 +858,9 @@ typedef struct { struct config_line_t *DirBindAddress; /** Local address to bind outbound sockets */ char *OutboundBindAddress; - char *RecommendedVersions; /**< Directory server only: which versions of - * Tor should we tell users to run? */ + struct config_line_t *RecommendedVersions; + /**< Directory server only: which versions of + * Tor should we tell users to run? */ char *User; /**< Name of user to run Tor as. */ char *Group; /**< Name of group to run Tor as. */ double PathlenCoinWeight; /**< Parameter used to configure average path |