if options.FascistFirewall but none are running on port 80, try

the others before giving up.


svn:r2293
This commit is contained in:
Roger Dingledine 2004-08-18 21:13:58 +00:00
parent 8798238af4
commit 8ddc029d07

View File

@ -20,7 +20,7 @@ extern or_options_t options; /**< command-line and config-file options */
/* static function prototypes */ /* static function prototypes */
static routerinfo_t * static routerinfo_t *
router_pick_directory_server_impl(int requireauth, int preferothers); router_pick_directory_server_impl(int requireauth, int requireothers, int fascistfirewall);
static void mark_all_authdirservers_up(void); static void mark_all_authdirservers_up(void);
static int router_resolve_routerlist(routerlist_t *dir); static int router_resolve_routerlist(routerlist_t *dir);
@ -47,15 +47,15 @@ extern int has_fetched_directory; /**< from main.c */
routerinfo_t *router_pick_directory_server(int requireauth, int requireothers) { routerinfo_t *router_pick_directory_server(int requireauth, int requireothers) {
routerinfo_t *choice; routerinfo_t *choice;
choice = router_pick_directory_server_impl(requireauth, requireothers); choice = router_pick_directory_server_impl(requireauth, requireothers, options.FascistFirewall);
if(choice) if(choice)
return choice; return choice;
log_fn(LOG_INFO,"No dirservers are reachable. Trying them all again."); log_fn(LOG_INFO,"No dirservers are reachable. Trying them all again.");
/* mark all authdirservers are up again */ /* mark all authdirservers as up again */
mark_all_authdirservers_up(); mark_all_authdirservers_up();
/* try again */ /* try again */
choice = router_pick_directory_server_impl(requireauth, requireothers); choice = router_pick_directory_server_impl(requireauth, requireothers, 0);
if(choice) if(choice)
return choice; return choice;
@ -71,7 +71,7 @@ routerinfo_t *router_pick_directory_server(int requireauth, int requireothers) {
return NULL; return NULL;
} }
/* give it one last try */ /* give it one last try */
choice = router_pick_directory_server_impl(requireauth, requireothers); choice = router_pick_directory_server_impl(requireauth, requireothers, 0);
return choice; return choice;
} }
@ -79,7 +79,7 @@ routerinfo_t *router_pick_directory_server(int requireauth, int requireothers) {
* it has to be a trusted server. If requireothers, it cannot be us. * it has to be a trusted server. If requireothers, it cannot be us.
*/ */
static routerinfo_t * static routerinfo_t *
router_pick_directory_server_impl(int requireauth, int requireothers) router_pick_directory_server_impl(int requireauth, int requireothers, int fascistfirewall)
{ {
int i; int i;
routerinfo_t *router; routerinfo_t *router;
@ -99,7 +99,7 @@ router_pick_directory_server_impl(int requireauth, int requireothers)
continue; continue;
if(requireothers && router_is_me(router)) if(requireothers && router_is_me(router))
continue; continue;
if(options.FascistFirewall) { if(fascistfirewall) {
sprintf(buf,"%d",router->dir_port); sprintf(buf,"%d",router->dir_port);
if (!smartlist_string_isin(options.FirewallPorts, buf)) if (!smartlist_string_isin(options.FirewallPorts, buf))
continue; continue;