|  | @@ -2857,8 +2857,18 @@ extend_info_from_node(const node_t *node, int for_direct_connect)
 | 
	
		
			
				|  |  |    tor_addr_port_t ap;
 | 
	
		
			
				|  |  |    int valid_addr = 0;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -  if (node->ri == NULL && (node->rs == NULL || node->md == NULL))
 | 
	
		
			
				|  |  | -    return NULL;
 | 
	
		
			
				|  |  | +  const int is_bridge = node_is_a_configured_bridge(node);
 | 
	
		
			
				|  |  | +  const int we_use_mds = we_use_microdescriptors_for_circuits(get_options());
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +  if (is_bridge || !we_use_mds) {
 | 
	
		
			
				|  |  | +    /* We need an ri in this case. */
 | 
	
		
			
				|  |  | +    if (!node->ri)
 | 
	
		
			
				|  |  | +      return NULL;
 | 
	
		
			
				|  |  | +  } else {
 | 
	
		
			
				|  |  | +    /* Otherwise we need an md. */
 | 
	
		
			
				|  |  | +    if (node->rs == NULL || node->md == NULL)
 | 
	
		
			
				|  |  | +      return NULL;
 | 
	
		
			
				|  |  | +  }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |    /* Choose a preferred address first, but fall back to an allowed address.
 | 
	
		
			
				|  |  |     * choose_address returns 1 on success, but get_prim_orport returns 0. */
 |