Merge pull request #108 from eboasson/fix-104
Fallback to unicast should set options for unicast discovery (#104) A very simple change that addresses a real usability issue, does not rely on any platform-specific changes and moreover builds cleanly on the source branch. So I am not going to wait until the AppVeyor build completes.
This commit is contained in:
		
						commit
						92fca549cb
					
				
					 1 changed files with 20 additions and 0 deletions
				
			
		| 
						 | 
				
			
			@ -862,6 +862,7 @@ int rtps_init (void)
 | 
			
		|||
{
 | 
			
		||||
  uint32_t port_disc_uc = 0;
 | 
			
		||||
  uint32_t port_data_uc = 0;
 | 
			
		||||
  bool mc_available = true;
 | 
			
		||||
 | 
			
		||||
  /* Initialize implementation (Lite or OSPL) */
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -949,6 +950,11 @@ int rtps_init (void)
 | 
			
		|||
      DDS_WARNING("selected interface is not multicast-capable: disabling multicast\n");
 | 
			
		||||
      config.suppress_spdp_multicast = 1;
 | 
			
		||||
      config.allowMulticast = AMC_FALSE;
 | 
			
		||||
      /* ensure discovery can work: firstly, that the process will be reachable on a "well-known" port
 | 
			
		||||
         number, and secondly, that the local interface's IP address gets added to the discovery
 | 
			
		||||
         address set */
 | 
			
		||||
      config.participantIndex = PARTICIPANT_INDEX_AUTO;
 | 
			
		||||
      mc_available = false;
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
  if (set_recvips () < 0)
 | 
			
		||||
| 
						 | 
				
			
			@ -1240,8 +1246,22 @@ int rtps_init (void)
 | 
			
		|||
 | 
			
		||||
  gv.as_disc = new_addrset ();
 | 
			
		||||
  add_to_addrset (gv.as_disc, &gv.loc_spdp_mc);
 | 
			
		||||
  /* If multicast was enabled but not available, always add the local interface to the discovery address set.
 | 
			
		||||
     Conversion via string and add_peer_addresses has the benefit that the port number expansion happens
 | 
			
		||||
     automatically. */
 | 
			
		||||
  if (!mc_available)
 | 
			
		||||
  {
 | 
			
		||||
    struct config_peer_listelem peer_local;
 | 
			
		||||
    char local_addr[DDSI_LOCSTRLEN];
 | 
			
		||||
    ddsi_locator_to_string_no_port (local_addr, sizeof (local_addr), &gv.interfaces[gv.selected_interface].loc);
 | 
			
		||||
    peer_local.next = NULL;
 | 
			
		||||
    peer_local.peer = local_addr;
 | 
			
		||||
    add_peer_addresses (gv.as_disc, &peer_local);
 | 
			
		||||
  }
 | 
			
		||||
  if (config.peers)
 | 
			
		||||
  {
 | 
			
		||||
    add_peer_addresses (gv.as_disc, config.peers);
 | 
			
		||||
  }
 | 
			
		||||
  if (config.peers_group)
 | 
			
		||||
  {
 | 
			
		||||
    gv.as_disc_group = new_addrset ();
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue