summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChelsea H. Komlo <chelsea.komlo@gmail.com>2016-10-18 19:04:22 -0500
committerChelsea H. Komlo <chelsea.komlo@gmail.com>2016-10-19 12:25:50 -0500
commit471b0c5175521bb2bc49eb7e30d78f656a3a2843 (patch)
tree1ab750249a93fcf5f9177f8b48cd11f79f726345
parent195ccce94e250a150e208f7a8fb9ba8375b6fe89 (diff)
downloadtor-471b0c5175521bb2bc49eb7e30d78f656a3a2843.tar.gz
tor-471b0c5175521bb2bc49eb7e30d78f656a3a2843.zip
Refactor purpose_needs_anonymity to use switch statement
-rw-r--r--changes/ticket200772
-rw-r--r--src/or/directory.c27
-rw-r--r--src/test/test_dir.c10
3 files changed, 28 insertions, 11 deletions
diff --git a/changes/ticket20077 b/changes/ticket20077
index bc0e38ed3c..d5510694ff 100644
--- a/changes/ticket20077
+++ b/changes/ticket20077
@@ -1,3 +1,5 @@
o Code simplification and refactoring:
- Remove redundant behavior of is_sensitive_dir_purpose, refactor to use
only purpose_needs_anonymity
+ - Refactor large if statement in purpose_needs_anonymity to use switch
+ statement instead.
diff --git a/src/or/directory.c b/src/or/directory.c
index 8dc30952a6..abe1372ec6 100644
--- a/src/or/directory.c
+++ b/src/or/directory.c
@@ -136,17 +136,22 @@ purpose_needs_anonymity(uint8_t dir_purpose, uint8_t router_purpose)
return 1; /* if no circuits yet, this might break bootstrapping, but it's
* needed to be safe. */
- if (dir_purpose == DIR_PURPOSE_UPLOAD_DIR ||
- dir_purpose == DIR_PURPOSE_UPLOAD_VOTE ||
- dir_purpose == DIR_PURPOSE_UPLOAD_SIGNATURES ||
- dir_purpose == DIR_PURPOSE_FETCH_STATUS_VOTE ||
- dir_purpose == DIR_PURPOSE_FETCH_DETACHED_SIGNATURES ||
- dir_purpose == DIR_PURPOSE_FETCH_CONSENSUS ||
- dir_purpose == DIR_PURPOSE_FETCH_CERTIFICATE ||
- dir_purpose == DIR_PURPOSE_FETCH_SERVERDESC ||
- dir_purpose == DIR_PURPOSE_FETCH_EXTRAINFO ||
- dir_purpose == DIR_PURPOSE_FETCH_MICRODESC)
- return 0;
+ switch (dir_purpose)
+ {
+ case DIR_PURPOSE_UPLOAD_DIR:
+ case DIR_PURPOSE_UPLOAD_VOTE:
+ case DIR_PURPOSE_UPLOAD_SIGNATURES:
+ case DIR_PURPOSE_FETCH_STATUS_VOTE:
+ case DIR_PURPOSE_FETCH_DETACHED_SIGNATURES:
+ case DIR_PURPOSE_FETCH_CONSENSUS:
+ case DIR_PURPOSE_FETCH_CERTIFICATE:
+ case DIR_PURPOSE_FETCH_SERVERDESC:
+ case DIR_PURPOSE_FETCH_EXTRAINFO:
+ case DIR_PURPOSE_FETCH_MICRODESC:
+ return 0;
+ default:
+ break;
+ }
return 1;
}
diff --git a/src/test/test_dir.c b/src/test/test_dir.c
index 73a8a355ac..0f6166d718 100644
--- a/src/test/test_dir.c
+++ b/src/test/test_dir.c
@@ -3253,6 +3253,15 @@ test_dir_http_handling(void *args)
}
static void
+test_dir_purpose_needs_anonymity_returns_true_by_default(void *arg)
+{
+ (void)arg;
+
+ tt_int_op(1, ==, purpose_needs_anonymity(0, 0));
+ done: ;
+}
+
+static void
test_dir_purpose_needs_anonymity_returns_true_for_bridges(void *arg)
{
(void)arg;
@@ -5500,6 +5509,7 @@ struct testcase_t dir_tests[] = {
DIR(dirserv_set_routerstatus_testing, 0),
DIR(http_handling, 0),
DIR(purpose_needs_anonymity_returns_true_for_bridges, 0),
+ DIR(purpose_needs_anonymity_returns_true_by_default, 0),
DIR(purpose_needs_anonymity_returns_true_for_sensitive_purpose, 0),
DIR(purpose_needs_anonymity_ret_false_for_non_sensitive_conn, 0),
DIR(fetch_type, 0),