diff options
author | Nick Mathewson <nickm@torproject.org> | 2014-05-22 20:00:22 -0400 |
---|---|---|
committer | Nick Mathewson <nickm@torproject.org> | 2014-05-22 20:00:22 -0400 |
commit | 85f49abfbe50d29e4314ed0a3b436f3b14162d00 (patch) | |
tree | c5388e680b8bb05bdc4156622195741e8b08d729 /src/or | |
parent | ffc1fde01fb4fc752aa54de0282cf027bdb738cf (diff) | |
download | tor-85f49abfbe50d29e4314ed0a3b436f3b14162d00.tar tor-85f49abfbe50d29e4314ed0a3b436f3b14162d00.tar.gz |
sandbox: refactor string-based option-unchanged tests to use a macro
There was too much code duplication in doing it the old way, and I
nearly made a copy-and-paste error in the last commit.
Diffstat (limited to 'src/or')
-rw-r--r-- | src/or/config.c | 41 |
1 files changed, 16 insertions, 25 deletions
diff --git a/src/or/config.c b/src/or/config.c index f0b559da2..10df83975 100644 --- a/src/or/config.c +++ b/src/or/config.c @@ -3722,10 +3722,22 @@ options_transition_allowed(const or_options_t *old, } if (sandbox_is_active()) { - if (! opt_streq(old->PidFile, new_val->PidFile)) { - *msg = tor_strdup("Can't change PidFile while Sandbox is active"); - return -1; - } +#define SB_NOCHANGE_STR(opt) \ + do { \ + if (! opt_streq(old->opt, new_val->opt)) { \ + *msg = tor_strdup("Can't change " #opt " while Sandbox is active"); \ + return -1; \ + } \ + } while (0) + + SB_NOCHANGE_STR(PidFile); + SB_NOCHANGE_STR(ServerDNSResolvConfFile); + SB_NOCHANGE_STR(DirPortFrontPage); + SB_NOCHANGE_STR(CookieAuthFile); + SB_NOCHANGE_STR(ExtORPortCookieAuthFile); + +#undef SB_NOCHANGE_STR + if (! config_lines_eq(old->Logs, new_val->Logs)) { *msg = tor_strdup("Can't change Logs while Sandbox is active"); return -1; @@ -3734,32 +3746,11 @@ options_transition_allowed(const or_options_t *old, *msg = tor_strdup("Can't change ConnLimit while Sandbox is active"); return -1; } - if (! opt_streq(old->ServerDNSResolvConfFile, - new_val->ServerDNSResolvConfFile)) { - *msg = tor_strdup("Can't change ServerDNSResolvConfFile" - " while Sandbox is active"); - return -1; - } if (server_mode(old) != server_mode(new_val)) { *msg = tor_strdup("Can't start/stop being a server while " "Sandbox is active"); return -1; } - if (! opt_streq(old->DirPortFrontPage, new_val->DirPortFrontPage)) { - *msg = tor_strdup("Can't change DirPortFrontPage" - " while Sandbox is active"); - return -1; - } - if (! opt_streq(old->CookieAuthFile, new_val->CookieAuthFile)) { - *msg = tor_strdup("Can't change CookieAuthFile while Sandbox is active"); - return -1; - } - if (! opt_streq(old->ExtORPortCookieAuthFile, - new_val->ExtORPortCookieAuthFile)) { - *msg = tor_strdup("Can't change ExtORPortCookieAuthFile" - " while Sandbox is active"); - return -1; - } } return 0; |