aboutsummaryrefslogtreecommitdiff
path: root/src/or
diff options
context:
space:
mode:
authorNick Mathewson <nickm@torproject.org>2014-05-22 20:00:22 -0400
committerNick Mathewson <nickm@torproject.org>2014-05-22 20:00:22 -0400
commit85f49abfbe50d29e4314ed0a3b436f3b14162d00 (patch)
treec5388e680b8bb05bdc4156622195741e8b08d729 /src/or
parentffc1fde01fb4fc752aa54de0282cf027bdb738cf (diff)
downloadtor-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.c41
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;