|  | @@ -793,19 +793,14 @@ consider_testing_reachability(int test_or, int test_dir)
 | 
	
		
			
				|  |  |  void
 | 
	
		
			
				|  |  |  router_orport_found_reachable(void)
 | 
	
		
			
				|  |  |  {
 | 
	
		
			
				|  |  | -  if (!can_reach_or_port) {
 | 
	
		
			
				|  |  | -    routerinfo_t *me = router_get_my_routerinfo();
 | 
	
		
			
				|  |  | +  routerinfo_t *me = router_get_my_routerinfo();
 | 
	
		
			
				|  |  | +  if (!can_reach_or_port && me) {
 | 
	
		
			
				|  |  |      log_notice(LD_OR,"Self-testing indicates your ORPort is reachable from "
 | 
	
		
			
				|  |  |                 "the outside. Excellent.%s",
 | 
	
		
			
				|  |  |                 get_options()->_PublishServerDescriptor != NO_AUTHORITY ?
 | 
	
		
			
				|  |  |                   " Publishing server descriptor." : "");
 | 
	
		
			
				|  |  |      can_reach_or_port = 1;
 | 
	
		
			
				|  |  |      mark_my_descriptor_dirty();
 | 
	
		
			
				|  |  | -    if (!me) { /* should never happen */
 | 
	
		
			
				|  |  | -      log_warn(LD_BUG, "ORPort found reachable, but I have no routerinfo "
 | 
	
		
			
				|  |  | -               "yet. Failing to inform controller of success.");
 | 
	
		
			
				|  |  | -      return;
 | 
	
		
			
				|  |  | -    }
 | 
	
		
			
				|  |  |      control_event_server_status(LOG_NOTICE,
 | 
	
		
			
				|  |  |                                  "REACHABILITY_SUCCEEDED ORADDRESS=%s:%d",
 | 
	
		
			
				|  |  |                                  me->address, me->or_port);
 | 
	
	
		
			
				|  | @@ -816,18 +811,13 @@ router_orport_found_reachable(void)
 | 
	
		
			
				|  |  |  void
 | 
	
		
			
				|  |  |  router_dirport_found_reachable(void)
 | 
	
		
			
				|  |  |  {
 | 
	
		
			
				|  |  | -  if (!can_reach_dir_port) {
 | 
	
		
			
				|  |  | -    routerinfo_t *me = router_get_my_routerinfo();
 | 
	
		
			
				|  |  | +  routerinfo_t *me = router_get_my_routerinfo();
 | 
	
		
			
				|  |  | +  if (!can_reach_dir_port && me) {
 | 
	
		
			
				|  |  |      log_notice(LD_DIRSERV,"Self-testing indicates your DirPort is reachable "
 | 
	
		
			
				|  |  |                 "from the outside. Excellent.");
 | 
	
		
			
				|  |  |      can_reach_dir_port = 1;
 | 
	
		
			
				|  |  | -    if (!me || decide_to_advertise_dirport(get_options(), me->dir_port))
 | 
	
		
			
				|  |  | +    if (decide_to_advertise_dirport(get_options(), me->dir_port))
 | 
	
		
			
				|  |  |        mark_my_descriptor_dirty();
 | 
	
		
			
				|  |  | -    if (!me) { /* should never happen */
 | 
	
		
			
				|  |  | -      log_warn(LD_BUG, "DirPort found reachable, but I have no routerinfo "
 | 
	
		
			
				|  |  | -               "yet. Failing to inform controller of success.");
 | 
	
		
			
				|  |  | -      return;
 | 
	
		
			
				|  |  | -    }
 | 
	
		
			
				|  |  |      control_event_server_status(LOG_NOTICE,
 | 
	
		
			
				|  |  |                                  "REACHABILITY_SUCCEEDED DIRADDRESS=%s:%d",
 | 
	
		
			
				|  |  |                                  me->address, me->dir_port);
 |