[tor-commits] [tor/master] Refactor TestingDirAuthVote* into dirserv_set_routerstatus_testing
nickm at torproject.org
nickm at torproject.org
Tue Aug 18 13:56:11 UTC 2015
commit d1c94dcbea76d4ddd8ccf6c2c94f2fe99ea570e2
Author: teor <teor2345 at gmail.com>
Date: Fri Aug 14 12:09:00 2015 +1000
Refactor TestingDirAuthVote* into dirserv_set_routerstatus_testing
Make it easier to unit test TestingDirAuthVote{Exit,Guard,HSDir}
by refactoring the code which sets flags based on them into a
new function dirserv_set_routerstatus_testing.
---
src/or/dirserv.c | 54 ++++++++++++++++++++++++++++++++----------------------
src/or/dirserv.h | 2 ++
2 files changed, 34 insertions(+), 22 deletions(-)
diff --git a/src/or/dirserv.c b/src/or/dirserv.c
index f81d56a..58ab009 100644
--- a/src/or/dirserv.c
+++ b/src/or/dirserv.c
@@ -2187,31 +2187,41 @@ set_routerstatus_from_routerinfo(routerstatus_t *rs,
rs->ipv6_orport = ri->ipv6_orport;
}
- /* Iff we are in a testing network, use TestingDirAuthVoteExit,
- TestingDirAuthVoteGuard, and TestingDirAuthVoteHSDir to
- give out the Exit, Guard, and HSDir flags, respectively.
- But don't set the corresponding node flags. */
if (options->TestingTorNetwork) {
- if (routerset_contains_routerstatus(options->TestingDirAuthVoteExit,
- rs, 0)) {
- rs->is_exit = 1;
- } else if (options->TestingDirAuthVoteExitIsStrict) {
- rs->is_exit = 0;
- }
+ dirserv_set_routerstatus_testing(rs);
+ }
+}
- if (routerset_contains_routerstatus(options->TestingDirAuthVoteGuard,
- rs, 0)) {
- rs->is_possible_guard = 1;
- } else if (options->TestingDirAuthVoteGuardIsStrict) {
- rs->is_possible_guard = 0;
- }
+/** Use TestingDirAuthVoteExit, TestingDirAuthVoteGuard, and
+ * TestingDirAuthVoteHSDir to give out the Exit, Guard, and HSDir flags,
+ * respectively. But don't set the corresponding node flags.
+ * Should only be called if TestingTorNetwork is set. */
+STATIC void
+dirserv_set_routerstatus_testing(routerstatus_t *rs)
+{
+ const or_options_t *options = get_options();
- if (routerset_contains_routerstatus(options->TestingDirAuthVoteHSDir,
- rs, 0)) {
- rs->is_hs_dir = 1;
- } else if (options->TestingDirAuthVoteHSDirIsStrict) {
- rs->is_hs_dir = 0;
- }
+ tor_assert(options->TestingTorNetwork);
+
+ if (routerset_contains_routerstatus(options->TestingDirAuthVoteExit,
+ rs, 0)) {
+ rs->is_exit = 1;
+ } else if (options->TestingDirAuthVoteExitIsStrict) {
+ rs->is_exit = 0;
+ }
+
+ if (routerset_contains_routerstatus(options->TestingDirAuthVoteGuard,
+ rs, 0)) {
+ rs->is_possible_guard = 1;
+ } else if (options->TestingDirAuthVoteGuardIsStrict) {
+ rs->is_possible_guard = 0;
+ }
+
+ if (routerset_contains_routerstatus(options->TestingDirAuthVoteHSDir,
+ rs, 0)) {
+ rs->is_hs_dir = 1;
+ } else if (options->TestingDirAuthVoteHSDirIsStrict) {
+ rs->is_hs_dir = 0;
}
}
diff --git a/src/or/dirserv.h b/src/or/dirserv.h
index 8a4e68d..d07339b 100644
--- a/src/or/dirserv.h
+++ b/src/or/dirserv.h
@@ -109,6 +109,8 @@ int validate_recommended_package_line(const char *line);
#ifdef DIRSERV_PRIVATE
+STATIC void dirserv_set_routerstatus_testing(routerstatus_t *rs);
+
/* Put the MAX_MEASUREMENT_AGE #define here so unit tests can see it */
#define MAX_MEASUREMENT_AGE (3*24*60*60) /* 3 days */
More information about the tor-commits
mailing list