|  | @@ -1941,7 +1941,11 @@ router_build_fresh_descriptor(routerinfo_t **r, extrainfo_t **e)
 | 
	
		
			
				|  |  |            ! p->server_cfg.no_advertise &&
 | 
	
		
			
				|  |  |            ! p->server_cfg.bind_ipv4_only &&
 | 
	
		
			
				|  |  |            tor_addr_family(&p->addr) == AF_INET6) {
 | 
	
		
			
				|  |  | -        if (! tor_addr_is_internal(&p->addr, 0)) {
 | 
	
		
			
				|  |  | +        /* Like IPv4, if the relay is configured using the default
 | 
	
		
			
				|  |  | +         * authorities, disallow internal IPs. Otherwise, allow them. */
 | 
	
		
			
				|  |  | +        const int default_auth = (!options->DirAuthorities &&
 | 
	
		
			
				|  |  | +                                  !options->AlternateDirAuthority);
 | 
	
		
			
				|  |  | +        if (! tor_addr_is_internal(&p->addr, 0) || ! default_auth) {
 | 
	
		
			
				|  |  |            ipv6_orport = p;
 | 
	
		
			
				|  |  |            break;
 | 
	
		
			
				|  |  |          } else {
 | 
	
	
		
			
				|  | @@ -1949,7 +1953,7 @@ router_build_fresh_descriptor(routerinfo_t **r, extrainfo_t **e)
 | 
	
		
			
				|  |  |            log_warn(LD_CONFIG,
 | 
	
		
			
				|  |  |                     "Unable to use configured IPv6 address \"%s\" in a "
 | 
	
		
			
				|  |  |                     "descriptor. Skipping it. "
 | 
	
		
			
				|  |  | -                   "Try specifying a globally reachable address explicitly. ",
 | 
	
		
			
				|  |  | +                   "Try specifying a globally reachable address explicitly.",
 | 
	
		
			
				|  |  |                     tor_addr_to_str(addrbuf, &p->addr, sizeof(addrbuf), 1));
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |        }
 |