| 
					
				 | 
			
			
				@@ -5907,18 +5907,23 @@ get_configured_ports(void) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   return configured_ports; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-/** DOCDOC */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+/** Return the first advertised port of type <b>listener_type</b> in 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    <b>address_family</b>.  */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 int 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-get_first_advertised_v4_port_by_type(int listener_type) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+get_first_advertised_port_by_type_af(int listener_type, int address_family) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   if (!configured_ports) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     return 0; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   SMARTLIST_FOREACH_BEGIN(configured_ports, const port_cfg_t *, cfg) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     if (cfg->type == listener_type && 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         !cfg->no_advertise && 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        (tor_addr_family(&cfg->addr) == AF_INET || 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-         (tor_addr_family(&cfg->addr) == AF_UNSPEC && !cfg->ipv6_only))) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      return cfg->port; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        (tor_addr_family(&cfg->addr) == address_family || 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	 tor_addr_family(&cfg->addr) == AF_UNSPEC)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      if (tor_addr_family(&cfg->addr) != AF_UNSPEC || 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	  (address_family == AF_INET && !cfg->ipv6_only) || 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	  (address_family == AF_INET6 && !cfg->ipv4_only)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	return cfg->port; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   } SMARTLIST_FOREACH_END(cfg); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   return 0; 
			 |