diff options
author | Nick Mathewson <nickm@torproject.org> | 2017-06-28 13:48:52 -0400 |
---|---|---|
committer | Nick Mathewson <nickm@torproject.org> | 2017-06-28 13:48:52 -0400 |
commit | e84127d99e3f3ac95239cc857d401289ef5cb768 (patch) | |
tree | 20657478ee8a868c04c7400091cee0adebfc11f8 /src/or/entrynodes.c | |
parent | a242d194c74b318b8ee4b347efd09ed13d0d2549 (diff) | |
parent | 6009c891655748eb2089afa8bc4a3d54ec2ddab9 (diff) | |
download | tor-e84127d99e3f3ac95239cc857d401289ef5cb768.tar.gz tor-e84127d99e3f3ac95239cc857d401289ef5cb768.zip |
Merge remote-tracking branch 'asn/bug21969_bridges_030' into maint-0.3.0
Diffstat (limited to 'src/or/entrynodes.c')
-rw-r--r-- | src/or/entrynodes.c | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/src/or/entrynodes.c b/src/or/entrynodes.c index aba35e69f7..de9374afc0 100644 --- a/src/or/entrynodes.c +++ b/src/or/entrynodes.c @@ -2940,6 +2940,34 @@ entry_guard_get_by_id_digest(const char *digest) get_guard_selection_info(), digest); } +/** We are about to connect to bridge with identity <b>digest</b> to fetch its + * descriptor. Create a new guard state for this connection and return it. */ +circuit_guard_state_t * +get_guard_state_for_bridge_desc_fetch(const char *digest) +{ + circuit_guard_state_t *guard_state = NULL; + entry_guard_t *guard = NULL; + + guard = entry_guard_get_by_id_digest_for_guard_selection( + get_guard_selection_info(), digest); + if (!guard) { + return NULL; + } + + /* Update the guard last_tried_to_connect time since it's checked by the + * guard susbsystem. */ + 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; + + return guard_state; +} + /** Release all storage held by <b>e</b>. */ STATIC void entry_guard_free(entry_guard_t *e) |