diff options
author | Nick Mathewson <nickm@torproject.org> | 2017-05-22 09:13:18 -0400 |
---|---|---|
committer | Nick Mathewson <nickm@torproject.org> | 2017-05-22 09:13:18 -0400 |
commit | e5a929fef8df61b41b0f2e4a12bbcbe8d931a5cf (patch) | |
tree | c5d31ac820cfb90a59837f3859f55497a7bca02f | |
parent | 3d27954f2e932cf1965fabd2672a52f0ea13d940 (diff) | |
download | tor-e5a929fef8df61b41b0f2e4a12bbcbe8d931a5cf.tar.gz tor-e5a929fef8df61b41b0f2e4a12bbcbe8d931a5cf.zip |
Raise common code for creating circuit_guard_state_t
This will help if we ever need to add more fields or change the
semantics of existing fields.
-rw-r--r-- | src/or/entrynodes.c | 31 |
1 files changed, 21 insertions, 10 deletions
diff --git a/src/or/entrynodes.c b/src/or/entrynodes.c index c334a7aba0..dc2cab28f7 100644 --- a/src/or/entrynodes.c +++ b/src/or/entrynodes.c @@ -2073,6 +2073,23 @@ circuit_guard_state_free(circuit_guard_state_t *state) tor_free(state); } +/** Allocate and return a new circuit_guard_state_t to track the result + * of using <b>guard</b> for a given operation. */ +static circuit_guard_state_t * +circuit_guard_state_new(entry_guard_t *guard, unsigned state, + entry_guard_restriction_t *rst) +{ + circuit_guard_state_t *result; + + result = tor_malloc_zero(sizeof(circuit_guard_state_t)); + result->guard = entry_guard_handle_new(guard); + result->state = state; + result->state_set_at = approx_time(); + result->restrictions = rst; + + return result; +} + /** * Pick a suitable entry guard for a circuit in, and place that guard * in *<b>chosen_node_out</b>. Set *<b>guard_state_out</b> to an opaque @@ -2111,11 +2128,7 @@ entry_guard_pick_for_circuit(guard_selection_t *gs, goto fail; *chosen_node_out = node; - *guard_state_out = tor_malloc_zero(sizeof(circuit_guard_state_t)); - (*guard_state_out)->guard = entry_guard_handle_new(guard); - (*guard_state_out)->state = state; - (*guard_state_out)->state_set_at = approx_time(); - (*guard_state_out)->restrictions = rst; + *guard_state_out = circuit_guard_state_new(guard, state, rst); return 0; fail: @@ -2945,11 +2958,9 @@ get_guard_state_for_bridge_desc_fetch(const char *digest) guard->last_tried_to_connect = approx_time(); /* Create the guard state */ - guard_state = tor_malloc_zero(sizeof(circuit_guard_state_t)); - guard_state->guard = entry_guard_handle_new(guard); - guard_state->state = GUARD_CIRC_STATE_USABLE_ON_COMPLETION; - guard_state->state_set_at = approx_time(); - guard_state->restrictions = NULL; + guard_state = circuit_guard_state_new(guard, + GUARD_CIRC_STATE_USABLE_ON_COMPLETION, + NULL); return guard_state; } |