Workaround for discovery failure between RTI Connext DDS Micro 2.4.11 and RTI Connext DDS 6.0.0

In RTI Connext DDS 6.0.0, the RTPS version has been changed to 2.3. This RTPS version is propagated during the discovery process and is verified by the receiving Connext DDS or Connext DDS Micro application to verify compatibility. In Connext DDS Micro 2.4.11 and earlier, this check is hard-coded for RTPS version 2.1, causing the 2.4.11 (or earlier) application to reject discovery messages from a Connext DDS 6.0.0 application. Therefore, this check does not allow discovery to complete.

This issue does not occur with Connext DDS Micro 3.0.0. This issue will be resolved in the next version of Connext DDS Micro 2.4.x.

As a workaround, for users of Connext DDS Micro 2.4.11 who compile Connext DDS Micro from source, a simple change can be made in the file RTPSInterface.c. In the function RTPS_Interface_receive, at around line 6520, there is the following if statement and comparisons:

if ((NETIO_Packet_get_payload_length(packet) >= sizeof(struct RTPS_Header)) &&
    (rtps_msg->header.protocol_version.major == RTPS_PROTOCOL_VERSION_MAJOR) &&
    (rtps_msg->header.protocol_version.minor == RTPS_PROTOCOL_VERSION_MINOR))   

The workaround is to change the equality comparison of the minor version to a greater than or equal to comparison, as follows:

   (rtps_msg->header.protocol_version.minor >= RTPS_PROTOCOL_VERSION_MINOR)

For assistance or more information, please contact RTI Support at [email protected] and reference RTI internal issue ID MICRO-2008.