Loading changes/bug18050 0 → 100644 +7 −0 Original line number Diff line number Diff line o Minor fixes (relays): - Check that both the ORPort and DirPort (if present) are reachable before publishing a relay descriptor. Otherwise, relays publish a descriptor with DirPort 0 when the DirPort reachability test takes longer than the ORPort reachability test. Closes bug #18050. Reported by "starlight", patch by "teor". Bugfix on 0.1.0.1-rc, commit a1f1fa6ab on 27 Feb 2005. src/or/main.c +6 −4 Original line number Diff line number Diff line Loading @@ -1795,8 +1795,9 @@ second_elapsed_callback(periodic_timer_t *timer, void *arg) if (me && !check_whether_orport_reachable()) { char *address = tor_dup_ip(me->addr); log_warn(LD_CONFIG,"Your server (%s:%d) has not managed to confirm that " "its ORPort is reachable. Please check your firewalls, ports, " "address, /etc/hosts file, etc.", "its ORPort is reachable. Relays do not publish descriptors " "until their ORPort and DirPort are reachable. Please check " "your firewalls, ports, address, /etc/hosts file, etc.", address, me->or_port); control_event_server_status(LOG_WARN, "REACHABILITY_FAILED ORADDRESS=%s:%d", Loading @@ -1808,8 +1809,9 @@ second_elapsed_callback(periodic_timer_t *timer, void *arg) char *address = tor_dup_ip(me->addr); log_warn(LD_CONFIG, "Your server (%s:%d) has not managed to confirm that its " "DirPort is reachable. Please check your firewalls, ports, " "address, /etc/hosts file, etc.", "DirPort is reachable. Relays do not publish descriptors " "until their ORPort and DirPort are reachable. Please check " "your firewalls, ports, address, /etc/hosts file, etc.", address, me->dir_port); control_event_server_status(LOG_WARN, "REACHABILITY_FAILED DIRADDRESS=%s:%d", Loading src/or/router.c +9 −4 Original line number Diff line number Diff line Loading @@ -1267,7 +1267,8 @@ router_orport_found_reachable(void) char *address = tor_dup_ip(me->addr); log_notice(LD_OR,"Self-testing indicates your ORPort is reachable from " "the outside. Excellent.%s", get_options()->PublishServerDescriptor_ != NO_DIRINFO ? get_options()->PublishServerDescriptor_ != NO_DIRINFO && check_whether_dirport_reachable() ? " Publishing server descriptor." : ""); can_reach_or_port = 1; mark_my_descriptor_dirty("ORPort found reachable"); Loading @@ -1291,7 +1292,10 @@ router_dirport_found_reachable(void) if (!can_reach_dir_port && me) { char *address = tor_dup_ip(me->addr); log_notice(LD_DIRSERV,"Self-testing indicates your DirPort is reachable " "from the outside. Excellent."); "from the outside. Excellent.%s", get_options()->PublishServerDescriptor_ != NO_DIRINFO && check_whether_orport_reachable() ? " Publishing server descriptor." : ""); can_reach_dir_port = 1; if (decide_to_advertise_dirport(get_options(), me->dir_port)) { mark_my_descriptor_dirty("DirPort found reachable"); Loading Loading @@ -1494,7 +1498,8 @@ proxy_mode(const or_options_t *options) * and * - We have ORPort set * and * - We believe we are reachable from the outside; or * - We believe both our ORPort and DirPort (if present) are reachable from * the outside; or * - We are an authoritative directory server. */ static int Loading @@ -1513,7 +1518,7 @@ decide_if_publishable_server(void) if (!router_get_advertised_or_port(options)) return 0; return check_whether_orport_reachable(); return check_whether_orport_reachable() && check_whether_dirport_reachable(); } /** Initiate server descriptor upload as reasonable (if server is publishable, Loading Loading
changes/bug18050 0 → 100644 +7 −0 Original line number Diff line number Diff line o Minor fixes (relays): - Check that both the ORPort and DirPort (if present) are reachable before publishing a relay descriptor. Otherwise, relays publish a descriptor with DirPort 0 when the DirPort reachability test takes longer than the ORPort reachability test. Closes bug #18050. Reported by "starlight", patch by "teor". Bugfix on 0.1.0.1-rc, commit a1f1fa6ab on 27 Feb 2005.
src/or/main.c +6 −4 Original line number Diff line number Diff line Loading @@ -1795,8 +1795,9 @@ second_elapsed_callback(periodic_timer_t *timer, void *arg) if (me && !check_whether_orport_reachable()) { char *address = tor_dup_ip(me->addr); log_warn(LD_CONFIG,"Your server (%s:%d) has not managed to confirm that " "its ORPort is reachable. Please check your firewalls, ports, " "address, /etc/hosts file, etc.", "its ORPort is reachable. Relays do not publish descriptors " "until their ORPort and DirPort are reachable. Please check " "your firewalls, ports, address, /etc/hosts file, etc.", address, me->or_port); control_event_server_status(LOG_WARN, "REACHABILITY_FAILED ORADDRESS=%s:%d", Loading @@ -1808,8 +1809,9 @@ second_elapsed_callback(periodic_timer_t *timer, void *arg) char *address = tor_dup_ip(me->addr); log_warn(LD_CONFIG, "Your server (%s:%d) has not managed to confirm that its " "DirPort is reachable. Please check your firewalls, ports, " "address, /etc/hosts file, etc.", "DirPort is reachable. Relays do not publish descriptors " "until their ORPort and DirPort are reachable. Please check " "your firewalls, ports, address, /etc/hosts file, etc.", address, me->dir_port); control_event_server_status(LOG_WARN, "REACHABILITY_FAILED DIRADDRESS=%s:%d", Loading
src/or/router.c +9 −4 Original line number Diff line number Diff line Loading @@ -1267,7 +1267,8 @@ router_orport_found_reachable(void) char *address = tor_dup_ip(me->addr); log_notice(LD_OR,"Self-testing indicates your ORPort is reachable from " "the outside. Excellent.%s", get_options()->PublishServerDescriptor_ != NO_DIRINFO ? get_options()->PublishServerDescriptor_ != NO_DIRINFO && check_whether_dirport_reachable() ? " Publishing server descriptor." : ""); can_reach_or_port = 1; mark_my_descriptor_dirty("ORPort found reachable"); Loading @@ -1291,7 +1292,10 @@ router_dirport_found_reachable(void) if (!can_reach_dir_port && me) { char *address = tor_dup_ip(me->addr); log_notice(LD_DIRSERV,"Self-testing indicates your DirPort is reachable " "from the outside. Excellent."); "from the outside. Excellent.%s", get_options()->PublishServerDescriptor_ != NO_DIRINFO && check_whether_orport_reachable() ? " Publishing server descriptor." : ""); can_reach_dir_port = 1; if (decide_to_advertise_dirport(get_options(), me->dir_port)) { mark_my_descriptor_dirty("DirPort found reachable"); Loading Loading @@ -1494,7 +1498,8 @@ proxy_mode(const or_options_t *options) * and * - We have ORPort set * and * - We believe we are reachable from the outside; or * - We believe both our ORPort and DirPort (if present) are reachable from * the outside; or * - We are an authoritative directory server. */ static int Loading @@ -1513,7 +1518,7 @@ decide_if_publishable_server(void) if (!router_get_advertised_or_port(options)) return 0; return check_whether_orport_reachable(); return check_whether_orport_reachable() && check_whether_dirport_reachable(); } /** Initiate server descriptor upload as reasonable (if server is publishable, Loading