diff options
Diffstat (limited to 'src/or/onion.c')
-rw-r--r-- | src/or/onion.c | 28 |
1 files changed, 15 insertions, 13 deletions
diff --git a/src/or/onion.c b/src/or/onion.c index 926cee6327..c8b0f5c6c3 100644 --- a/src/or/onion.c +++ b/src/or/onion.c @@ -335,19 +335,21 @@ static routerinfo_t *choose_good_exit_server_general(routerlist_t *dir) static routerinfo_t *choose_good_exit_server(uint8_t purpose, routerlist_t *dir) { - if(purpose == CIRCUIT_PURPOSE_C_GENERAL) - return choose_good_exit_server_general(dir); - else if (purpose == CIRCUIT_PURPOSE_C_ESTABLISH_REND || - purpose == CIRCUIT_PURPOSE_C_REND_JOINED) { - smartlist_t *obsolete_routers; - routerinfo_t *r; - obsolete_routers = smartlist_create(); - router_add_nonrendezvous_to_list(obsolete_routers); - r = router_choose_random_node(dir, options.RendNodes, options.RendExcludeNodes, obsolete_routers); - smartlist_free(obsolete_routers); - return r; - } else - return router_choose_random_node(dir, options.RendNodes, options.RendExcludeNodes, NULL); + smartlist_t *obsolete_routers; + routerinfo_t *r; + switch(purpose) { + case CIRCUIT_PURPOSE_C_GENERAL: + return choose_good_exit_server_general(dir); + case CIRCUIT_PURPOSE_C_ESTABLISH_REND: + obsolete_routers = smartlist_create(); + router_add_nonrendezvous_to_list(obsolete_routers); + r = router_choose_random_node(dir, options.RendNodes, options.RendExcludeNodes, obsolete_routers); + smartlist_free(obsolete_routers); + return r; + default: + log_fn(LOG_WARN,"unhandled purpose %d", purpose); + assert(0); + } } cpath_build_state_t *onion_new_cpath_build_state(uint8_t purpose, |