5.11. APIs (C or Traditional C++)

5.11.1. [Critical] Traditional C++ get_participants() API returned invalid pointer if Monitoring Library 2.0 was enabled

If RTI Monitoring Library 2.0 was enabled in a Traditional C++ Connext application through the MonitoringQosPolicy, the DDSDomainParticipantFactory::get_participants() API returned an extra invalid DomainParticipant pointer, in addition to the DomainParticipants created by your application. Dereferencing that pointer had an undefined behavior, leading to a segmentation fault in the worst case.

This issue happened because the Traditional C++ DomainParticipantFactory instance is used to enable Monitoring Library 2.0 and to create the dedicated DomainParticipant that the library uses. That is a C DomainParticipant, which doesn’t have an associated C++ DomainParticipant. The get_participants() API added the nonexistent C++ Monitoring DomainParticipant anyway, which had an arbitrary value.

The get_participants() API now only returns valid DomainParticipants for C++.

[RTI Issue ID CORE-13925]

5.11.2. [Major] Potential error when waiting for samples in C API

When using one of the functions to wait for samples on either the Requester or the Replier, a potential error may have occurred in which the wait ended with an error instead of returning DDS_RETCODE_TIMEOUT when it timed out.

[RTI Issue ID REQREPLY-126]