[tor-commits] [tor/master] Refactor purpose_needs_anonymity to use switch statement

nickm at torproject.org nickm at torproject.org
Wed Oct 19 22:05:28 UTC 2016


commit 471b0c5175521bb2bc49eb7e30d78f656a3a2843
Author: Chelsea H. Komlo <chelsea.komlo at gmail.com>
Date:   Tue Oct 18 19:04:22 2016 -0500

    Refactor purpose_needs_anonymity to use switch statement
---
 changes/ticket20077 |  2 ++
 src/or/directory.c  | 27 ++++++++++++++++-----------
 src/test/test_dir.c | 10 ++++++++++
 3 files changed, 28 insertions(+), 11 deletions(-)

diff --git a/changes/ticket20077 b/changes/ticket20077
index bc0e38e..d551069 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 8dc3095..abe1372 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 73a8a35..0f6166d 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),





More information about the tor-commits mailing list