Refactor purpose_needs_anonymity to use switch statement

This commit is contained in:
Chelsea H. Komlo 2016-10-18 19:04:22 -05:00
parent 195ccce94e
commit 471b0c5175
No known key found for this signature in database
GPG Key ID: 1138332F98B52EE7
3 changed files with 28 additions and 11 deletions

View File

@ -1,3 +1,5 @@
o Code simplification and refactoring: o Code simplification and refactoring:
- Remove redundant behavior of is_sensitive_dir_purpose, refactor to use - Remove redundant behavior of is_sensitive_dir_purpose, refactor to use
only purpose_needs_anonymity only purpose_needs_anonymity
- Refactor large if statement in purpose_needs_anonymity to use switch
statement instead.

View File

@ -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 return 1; /* if no circuits yet, this might break bootstrapping, but it's
* needed to be safe. */ * needed to be safe. */
if (dir_purpose == DIR_PURPOSE_UPLOAD_DIR || switch (dir_purpose)
dir_purpose == DIR_PURPOSE_UPLOAD_VOTE || {
dir_purpose == DIR_PURPOSE_UPLOAD_SIGNATURES || case DIR_PURPOSE_UPLOAD_DIR:
dir_purpose == DIR_PURPOSE_FETCH_STATUS_VOTE || case DIR_PURPOSE_UPLOAD_VOTE:
dir_purpose == DIR_PURPOSE_FETCH_DETACHED_SIGNATURES || case DIR_PURPOSE_UPLOAD_SIGNATURES:
dir_purpose == DIR_PURPOSE_FETCH_CONSENSUS || case DIR_PURPOSE_FETCH_STATUS_VOTE:
dir_purpose == DIR_PURPOSE_FETCH_CERTIFICATE || case DIR_PURPOSE_FETCH_DETACHED_SIGNATURES:
dir_purpose == DIR_PURPOSE_FETCH_SERVERDESC || case DIR_PURPOSE_FETCH_CONSENSUS:
dir_purpose == DIR_PURPOSE_FETCH_EXTRAINFO || case DIR_PURPOSE_FETCH_CERTIFICATE:
dir_purpose == DIR_PURPOSE_FETCH_MICRODESC) case DIR_PURPOSE_FETCH_SERVERDESC:
case DIR_PURPOSE_FETCH_EXTRAINFO:
case DIR_PURPOSE_FETCH_MICRODESC:
return 0; return 0;
default:
break;
}
return 1; return 1;
} }

View File

@ -3252,6 +3252,15 @@ test_dir_http_handling(void *args)
tor_free(url); tor_free(url);
} }
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 static void
test_dir_purpose_needs_anonymity_returns_true_for_bridges(void *arg) test_dir_purpose_needs_anonymity_returns_true_for_bridges(void *arg)
{ {
@ -5500,6 +5509,7 @@ struct testcase_t dir_tests[] = {
DIR(dirserv_set_routerstatus_testing, 0), DIR(dirserv_set_routerstatus_testing, 0),
DIR(http_handling, 0), DIR(http_handling, 0),
DIR(purpose_needs_anonymity_returns_true_for_bridges, 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_returns_true_for_sensitive_purpose, 0),
DIR(purpose_needs_anonymity_ret_false_for_non_sensitive_conn, 0), DIR(purpose_needs_anonymity_ret_false_for_non_sensitive_conn, 0),
DIR(fetch_type, 0), DIR(fetch_type, 0),