mirror of
https://gitlab.torproject.org/tpo/core/tor.git
synced 2024-11-28 06:13:31 +01:00
don't pick administrative-friends when picking your path
(just a skeleton for now) svn:r2349
This commit is contained in:
parent
8954cd91ce
commit
959199340a
@ -1074,14 +1074,19 @@ static routerinfo_t *choose_good_middle_server(cpath_build_state_t *state,
|
|||||||
|
|
||||||
log_fn(LOG_DEBUG, "Contemplating intermediate hop: random choice.");
|
log_fn(LOG_DEBUG, "Contemplating intermediate hop: random choice.");
|
||||||
excluded = smartlist_create();
|
excluded = smartlist_create();
|
||||||
if((r = router_get_by_digest(state->chosen_exit_digest)))
|
if((r = router_get_by_digest(state->chosen_exit_digest))) {
|
||||||
smartlist_add(excluded, r);
|
smartlist_add(excluded, r);
|
||||||
if((r = routerlist_find_my_routerinfo()))
|
routerlist_add_friends(excluded, r);
|
||||||
|
}
|
||||||
|
if((r = routerlist_find_my_routerinfo())) {
|
||||||
smartlist_add(excluded, r);
|
smartlist_add(excluded, r);
|
||||||
|
routerlist_add_friends(excluded, r);
|
||||||
|
}
|
||||||
for (i = 0, cpath = head; i < cur_len; ++i, cpath=cpath->next) {
|
for (i = 0, cpath = head; i < cur_len; ++i, cpath=cpath->next) {
|
||||||
r = router_get_by_digest(cpath->identity_digest);
|
r = router_get_by_digest(cpath->identity_digest);
|
||||||
tor_assert(r);
|
tor_assert(r);
|
||||||
smartlist_add(excluded, r);
|
smartlist_add(excluded, r);
|
||||||
|
routerlist_add_friends(excluded, r);
|
||||||
}
|
}
|
||||||
choice = router_choose_random_node("", options.ExcludeNodes, excluded,
|
choice = router_choose_random_node("", options.ExcludeNodes, excluded,
|
||||||
0, 1, options._AllowUnverified & ALLOW_UNVERIFIED_MIDDLE, 0);
|
0, 1, options._AllowUnverified & ALLOW_UNVERIFIED_MIDDLE, 0);
|
||||||
@ -1095,10 +1100,14 @@ static routerinfo_t *choose_good_entry_server(cpath_build_state_t *state)
|
|||||||
smartlist_t *excluded = smartlist_create();
|
smartlist_t *excluded = smartlist_create();
|
||||||
char buf[16];
|
char buf[16];
|
||||||
|
|
||||||
if((r = router_get_by_digest(state->chosen_exit_digest)))
|
if((r = router_get_by_digest(state->chosen_exit_digest))) {
|
||||||
smartlist_add(excluded, r);
|
smartlist_add(excluded, r);
|
||||||
if((r = routerlist_find_my_routerinfo()))
|
routerlist_add_friends(excluded, r);
|
||||||
|
}
|
||||||
|
if((r = routerlist_find_my_routerinfo())) {
|
||||||
smartlist_add(excluded, r);
|
smartlist_add(excluded, r);
|
||||||
|
routerlist_add_friends(excluded, r);
|
||||||
|
}
|
||||||
if(options.FascistFirewall) {
|
if(options.FascistFirewall) {
|
||||||
/* exclude all ORs that listen on the wrong port */
|
/* exclude all ORs that listen on the wrong port */
|
||||||
routerlist_t *rl;
|
routerlist_t *rl;
|
||||||
|
@ -1045,7 +1045,8 @@ const char *get_data_directory(or_options_t *options) {
|
|||||||
if (d && strncmp(d,"~/",2)==0) {
|
if (d && strncmp(d,"~/",2)==0) {
|
||||||
char *fn = expand_filename(d);
|
char *fn = expand_filename(d);
|
||||||
if(!fn) {
|
if(!fn) {
|
||||||
/* XXX complain and exit(1) here */
|
log_fn(LOG_ERR,"Failed to expand filename '%s'. Exiting.",d);
|
||||||
|
exit(1);
|
||||||
}
|
}
|
||||||
tor_free(options->DataDirectory);
|
tor_free(options->DataDirectory);
|
||||||
options->DataDirectory = fn;
|
options->DataDirectory = fn;
|
||||||
|
@ -1394,6 +1394,7 @@ int router_reload_router_list(void);
|
|||||||
routerinfo_t *router_pick_directory_server(int requireauth, int requireothers);
|
routerinfo_t *router_pick_directory_server(int requireauth, int requireothers);
|
||||||
int all_directory_servers_down(void);
|
int all_directory_servers_down(void);
|
||||||
struct smartlist_t;
|
struct smartlist_t;
|
||||||
|
void routerlist_add_friends(struct smartlist_t *sl, routerinfo_t *router);
|
||||||
void add_nickname_list_to_smartlist(struct smartlist_t *sl, const char *list, int warn_if_down);
|
void add_nickname_list_to_smartlist(struct smartlist_t *sl, const char *list, int warn_if_down);
|
||||||
routerinfo_t *routerlist_find_my_routerinfo(void);
|
routerinfo_t *routerlist_find_my_routerinfo(void);
|
||||||
int router_nickname_matches(routerinfo_t *router, const char *nickname);
|
int router_nickname_matches(routerinfo_t *router, const char *nickname);
|
||||||
|
@ -175,6 +175,13 @@ int all_directory_servers_down(void) {
|
|||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/** Add all the friends of <b>router</b> to the smartlist <b>sl</b>.
|
||||||
|
*/
|
||||||
|
void routerlist_add_friends(smartlist_t *sl, routerinfo_t *router) {
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
/** Given a comma-and-whitespace separated list of nicknames, see which
|
/** Given a comma-and-whitespace separated list of nicknames, see which
|
||||||
* nicknames in <b>list</b> name routers in our routerlist that are
|
* nicknames in <b>list</b> name routers in our routerlist that are
|
||||||
* currently running. Add the routerinfos for those routers to <b>sl</b>.
|
* currently running. Add the routerinfos for those routers to <b>sl</b>.
|
||||||
|
Loading…
Reference in New Issue
Block a user