4.3. Transports

4.3.1. [Critical] Applications using Real-Time WAN may have stopped communicating after IP mobility events

Applications using the Real-Time WAN Transport could stop receiving data if multiple IP mobility events (for example, a network interface going down and then up) occurred close together in time. This issue could cause communication to stop after one of those events.

The issue only occurred when all of the following conditions were met:

  • The platform was a Linux system.

  • The application did not configure comm_ports in the Real-Time WAN Transport (that is, port assignment was automatic).

  • Multiple IP mobility events occurred in close succession.

When this issue occurred, the following error messages were logged:

NDDS_Transport_UDP_WAN_CommPortsMappingTable_addMapping: !add a mapping for the provided rtps port already exists
NDDS_Transport_UDP_create_recvresource_rrEA: !add comm ports mapping
DDS_DomainParticipantPresentation_update_participant_locatorsI: ERROR: Failed to set default unicast entryports

[RTI Issue ID CORE-16439]

4.3.2. [Major] IP mobility functionality did not detect when network interfaces gained multicast capability

There was an issue preventing multicast communication when network interfaces gained multicast capability. Connext IP mobility functionality now properly detects when a network interface’s multicast flag changes from disabled to enabled, and creates the required multicast sockets.

[RTI Issue ID CORE-13152]

4.3.3. [Minor] Zero-Copy DataReaders did not filter out redundant samples

Zero-Copy DataReaders had the property dds.data_reader.state.filter_redundant_samples set to false automatically and the property was unnecessarily sent in endpoint discovery samples. When this property is set to false, redundant samples coming from the same virtual GUID will not be filtered. Situations that would cause redundant samples include:

  1. Redundant Routing Services forwarding the same samples from DataWriter to a DataReader.

  2. Re-discovery after a liveliness loss event when using non-volatile durability.

In these scenarios, it is generally desired to only receive the samples a single time in an application. However, setting dds.data_reader.state.filter_redundant_samples to false would cause the application to receive the samples more than once.

The dds.data_reader.state.filter_redundant_samples property is no longer being set for Zero-Copy DataReaders. You can always choose to set this property to false in the DataReader’s QoS if you would like to continue to not filter redundant samples.

[RTI Issue ID CORE-16181]

4.3.4. [Minor] Incorrect information in shared memory log message when out of resources

When the send operation of the shared memory transport failed due to the shared memory queue being full, the log message displayed the incorrect value for the receive_buffer_size, making the problem hard to debug. Now, the information in the message is correct and now also includes the message_size_max.

[RTI Issue ID CORE-15858]

4.3.5. [Minor] DomainParticipant failed to be enabled if a network interface with UDPv4 address 0.0.0.0 was detected

A network interface can temporarily have an address of 0.0.0.0 as a placeholder while waiting for DHCP to assign an address. If this happened, then enabling a DomainParticipant would have failed with the following error:

NDDS_Transport_UDPv4_SocketFactory_create_receive_socket:setsockopt(ADD_MEMBERSHIP) error 0XF9

This problem has been fixed for the UDPv4 transport by ignoring any interface with address 0.0.0.0.

[RTI Issue ID CORE-15550]