commit 118bba7622ab15ea5c58ff32be178820150423ba Author: Chelsea H. Komlo chelsea.komlo@gmail.com Date: Wed Nov 2 09:45:02 2016 -0500
Refactor to remove unnecessary check in circuit_is_available_for_use --- changes/ticket18873 | 1 + src/or/circuituse.c | 6 ++---- src/test/test_circuituse.c | 20 +++++++++++++++++++- 3 files changed, 22 insertions(+), 5 deletions(-)
diff --git a/changes/ticket18873 b/changes/ticket18873 index e19a290..f1d9bef 100644 --- a/changes/ticket18873 +++ b/changes/ticket18873 @@ -4,3 +4,4 @@ - Refactor circuit_predict_and_launch_new for readability and testability. - Added unit tests for extracted functions. - Extracted magic numbers in circuituse.c into defined variables. + - Refactor circuit_is_available_for_use to remove unnecessary check diff --git a/src/or/circuituse.c b/src/or/circuituse.c index 9afe77b..6fb4f82 100644 --- a/src/or/circuituse.c +++ b/src/or/circuituse.c @@ -1033,15 +1033,13 @@ circuit_is_available_for_use(const circuit_t *circ) const origin_circuit_t *origin_circ; cpath_build_state_t *build_state;
- if (!CIRCUIT_IS_ORIGIN(circ)) - return 0; if (circ->marked_for_close) return 0; /* Don't mess with marked circs */ if (circ->timestamp_dirty) return 0; /* Only count clean circs */ if (circ->purpose != CIRCUIT_PURPOSE_C_GENERAL) - return 0;/* Only pay attention to general - purpose circs */ + return 0; /* Only pay attention to general purpose circuits. + General purpose circuits are always origin circuits. */
origin_circ = CONST_TO_ORIGIN_CIRCUIT(circ); if (origin_circ->unusable_for_new_conns) diff --git a/src/test/test_circuituse.c b/src/test/test_circuituse.c index 23f1f9c..edbc9f6 100644 --- a/src/test/test_circuituse.c +++ b/src/test/test_circuituse.c @@ -46,7 +46,21 @@ test_circuit_is_available_for_use_ret_false_for_non_general_purpose(void *arg) (void)arg;
circuit_t *circ = tor_malloc(sizeof(circuit_t)); - circ->purpose = CIRCUIT_PURPOSE_OR; + circ->purpose = CIRCUIT_PURPOSE_REND_POINT_WAITING; + + tt_int_op(0, ==, circuit_is_available_for_use(circ)); + + done: + tor_free(circ); +} + +static void +test_circuit_is_available_for_use_ret_false_for_non_general_origin(void *arg) +{ + (void)arg; + + circuit_t *circ = tor_malloc(sizeof(circuit_t)); + circ->purpose = CIRCUIT_PURPOSE_C_INTRODUCE_ACK_WAIT;
tt_int_op(0, ==, circuit_is_available_for_use(circ));
@@ -235,6 +249,10 @@ struct testcase_t circuituse_tests[] = { test_circuit_is_available_for_use_ret_false_for_non_general_purpose, TT_FORK, NULL, NULL }, + { "non_general", + test_circuit_is_available_for_use_ret_false_for_non_general_origin, + TT_FORK, NULL, NULL + }, { "origin", test_circuit_is_available_for_use_ret_false_for_non_origin_purpose, TT_FORK, NULL, NULL
tor-commits@lists.torproject.org