5.27. Interoperability

5.27.1. [Critical] RTPS messages containing vendor-specific submessages could have been dropped

When Connext received RTPS messages containing vendor-specific submessages, Connext could have dropped the whole RTPS message mid-processing. This happened when non-Connext applications used a vendor-specific submessage whose ID clashed with an ID used by Connext.

Now, Connext will drop RTPS submessages from non-Connext applications whose Submessage Id is within the vendor-specific range ([0x80, 0xFF]). This ensures that the rest of the RTPS message is processed, which may still contain RTPS standard submessages that Connext can interpret.

[RTI Issue ID CORE-15265]

5.27.2. [Critical] XCDR serialization of a mutable union with a discriminator value that does not select a union member was not compliant with OMG specification

A union’s discriminator value may not select any member in the union. When this was the case, and when the union was mutable, the XCDR serialization of the union was not compliant with the OMG ‘Extensible and Dynamic Topic Types for DDS’ specification, version 1.3, because it was missing the 4-byte sentinel value 02 7f 00 00 at the end. Now, you may configure whether or not the sentinel value is present by using a new “sentinel in empty union” bit in the XTypes compliance mask. Here is an example using the Modern C++ API:

using namespace rti::config;

compliance::set_xtypes_mask(compliance::get_xtypes_mask() | compliance::XTypesMask::sentinel_in_empty_union());

To maintain compliance with the XTypes specification, this bit is set by default. To maintain backward compatibility with previous versions of Connext, you must explicitly unset this bit. For instructions, see Extensible Types Compliance Mask in the RTI Connext Core Libraries Extensible Types Guide.

This problem only affected Connext versions 6.0.0 and above. This problem affected Dynamic Data in all language APIs and generated code in all language APIs except for Java. DataReaders from versions prior to 6.0.0 may encounter deserialization failures when receiving samples from a DataWriter in version 6.0.0 or later if mutable unions are used in the Topic type and if the DataWriter is not using a version that has the fix for this issue.

[RTI Issue ID CORE-14997]

5.27.3. [Critical] Multiple RTPS messages received in a single datagram caused issues

Previously, multiple RTPS messages received in a single datagram could cause issues ranging from incorrect attribution to processing errors, RTPS-protection decoding errors, and no communication. Multiple messages in a single buffer are now accepted and successfully parsed, provided they contain an RTPS Header Extension with the RTPS message length correctly populated.

Note: Currently, no RTI software produces a datagram containing two RTPS messages. This fix is preventive, allowing for something that is theoretically possible according to the OMG Real-Time Publish-Subscribe (RTPS) specification, version 2.5.

[RTI Issue ID CORE-14701]

5.27.4. [Critical] RTPS checksums incorrect for multiple RTPS messages received in a single datagram *

The value of RTPS checksums calculated upon message reception was incorrect when multiple RTPS messages were present in a single datagram. This led to discarding all messages in the datagram and in severe cases could prevent communication. This issue affected all available RTPS checksum mechanisms.

[RTI Issue ID CORE-14684]

5.27.5. [Critical] Incorrect handling of RTPS messages with submessages from different participants

When an RTPS message that contained submessages from multiple participants was received, Connext incorrectly treated each submessage as though it were from the participant whose GUID prefix was in the RTPS header. Connext does not send RTPS messages with submessages from different participants, but other DDS vendors may do this, which would have led to various communication issues and a lack of interoperability.

[RTI Issue ID CORE-8336]



* This bug did not affect you if you are upgrading from 6.1.x or earlier.