mirror of
https://gitlab.torproject.org/tpo/core/tor.git
synced 2024-11-10 13:13:44 +01:00
Check ORPort and DirPort reachability 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.
This commit is contained in:
parent
c7b0cd9c2f
commit
6094a886cf
7
changes/bug18050
Normal file
7
changes/bug18050
Normal file
@ -0,0 +1,7 @@
|
||||
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.
|
@ -1718,8 +1718,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",
|
||||
@ -1731,8 +1732,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",
|
||||
|
@ -1232,7 +1232,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");
|
||||
@ -1256,7 +1257,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");
|
||||
@ -1459,7 +1463,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
|
||||
@ -1478,7 +1483,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…
Reference in New Issue
Block a user