What's New in 2.4.12.1 ...................... .. MICRO-1985 Support for AUTOSAR Classic --------------------------- This release includes support for Elektrobit AUTOSAR 4.0.3 and Mentor™ AUTOSAR 4.2.2 on Infineon AURIX TriCore TC297. .. warning:: AUTOSAR Classic is not supported in version 2.4.15 ZC ER-2. .. MICRO-1131 Support for detecting corrupted RTPS messages --------------------------------------------- This release includes support for detecting and discarding corrupted RTPS messages. A checksum is computed over the DDS RTPS message including the RTPS Header. This checksum is sent as a new RTPS submessage. The subscribing application detects this new submessage and validates the contained checksum. When a corrupted RTPS message is detected, the message is dropped. To enable the use of a checksum in a *DomainParticipant*, there are three new fields in the `WireProtocolQosPolicy`: `compute_crc`, `check_crc`, and `require_crc`: - To send the checksum, enable `compute_crc` at the sending application. - To drop corrupted messages, enable `check_crc`. - To ignore a participant with compute_crc set to `false`, enable `require_crc`. Please refer to :ref:`msgintegrity` in the |me| User's Manual for details. .. MICRO-2366 Reduced default socket send/receive buffer size for QNX systems --------------------------------------------------------------- Some QNX kernels have a maximum send and receive socket buffer size smaller than the default value used by |me|. The default send and receive socket buffer size has been changed to 64 Kbytes in |me| for QNX builds. What's Fixed in 2.4.12.1 ........................ .. MICRO-2219 *PUBLICATION_MATCHED_STATUS* and *SUBSCRIPTION_MATCHED_STATUS* may never have triggered a WaitSet if the status was enabled after the *DomainParticipant* was enabled --------------------------------------------------------------------------------------------------------------------------------------------------------------------- A StatusCondition with *PUBLICATION_MATCHED_STATUS* or *SUBSCRIPTION_MATCHED_STATUS* enabled may never have triggered a WaitSet, if the status was enabled after the *DomainParticipant* was enabled. This issue has been resolved. [RTI Issue ID MICRO-2219] .. MICRO-2287 A RTPS *max_window_size* not divisible by 32 may have resulted in retransmission of wrong sequence number --------------------------------------------------------------------------------------------------------- An RTPS *max_window_size* not divisible by 32 may have caused retransmission of a sequence number not being requested. Note that the default value is divisible by 32. This issue has been resolved. [RTI Issue ID MICRO-2287] .. MICRO-2275 POSIX mutex implementation did not conform with FACE Safety Profile ------------------------------------------------------------------- The POSIX mutex implementation did not conform with the FACE Safety Profile. This release conforms to the FACE Safety profile for single-core CPU architectures. [RTI Issue ID MICRO-2275] .. MICRO-2278 Waitset with timeout of 0 did not return immediately ---------------------------------------------------- A Waitset with a 0 timeout did not return immediately, but was rounded up to one clock period. This issue has been resolved. [RTI Issue ID MICRO-2278, MICRO-2264] .. MICRO-2289 Invalid samples in batched data did not count as 'lost samples' --------------------------------------------------------------- Invalid samples in batched data were not counted as lost samples, and did not trigger |me| to call *on_sample_lost()* when the "on_sample_lost" notification was enabled. This issue has been resolved. [RTI Issue ID MICRO-2289] .. MICRO-2369 Unicast DataReader stopped receiving samples after DataWriter matched with a multicast DataReader ------------------------------------------------------------------------------------------------- A *DataReader* with a unicast locator stopped receiving samples from a matched *DataWriter* when another *DataReader* with a multicast locator matched with that *DataWriter*. This problem has been resolved. Now all matched *DataReaders* will receive samples, regardless of whether their locators are unicast or multicast. [RTI Issue ID MICRO-2369] .. MICRO-2672 DomainParticipant was not rediscovered if it restarted before expiring ---------------------------------------------------------------------- If a *DomainParticipant* was terminated and restarted before its lease duration expired, it would not be successfully rediscovered. For example, if an application with a *DomainParticipant* was terminated with Control-C and restarted before the *DomainParticipant's* lease duration expired, the *DomainParticipant* would not be rediscovered. However, if the *DomainParticipant* was deleted with *delete_participant()* this problem would not occur. This issue has been resolved. [RTI Issue ID MICRO-2672] .. MICRO-2756 Unexpected behavior when copying a DDS_UnsignedShortSeq with 0 length --------------------------------------------------------------------- When copying a *DDS_UnsignedShortSeq* with 0 length, the destination sequence length was not set to 0. This issue has been resolved. [RTI Issue ID MICRO-2756] .. MICRO-2785 Local variables in header file may have caused compiler warning --------------------------------------------------------------- Local variables were incorrectly defined in ReaderHistory.c and may have caused a compiler warning. This issue has been resolved. [RTI Issue ID MICRO-2785] .. MICRO-2794 Non-default timer resolutions may have caused an incorrect timeout ------------------------------------------------------------------ Compiling |me| with a non-default timer resolution may have caused incorrect timeouts. This issue has been resolved. [RTI Issue ID MICRO-2794] .. MICRO-2830 Missing checks for *max_routes_per_reader* and *max_routes_per_writer* ---------------------------------------------------------------------- The *DDS_DataReaderQos.reader_resource_limits.max_routes_per_writer* and *DDS_DataWriterQos.writer_resource_limits.max_routes_per_reader* were missing a check that the values were in the range [1,2000]. They were also missing from the methods *DDS_DataReaderQos_is_equal* and *DDS_DataWriterQos_is_equal* respectively. This issue has been resolved. [RTI Issue ID MICRO-2830, MICRO-2937] .. MICRO-3117 Missing NULL checks for *enabled_transports* -------------------------------------------- In previous releases, it was not checked that the *enabled_transports* QoS policy setting did not contain NULL pointers. This issue has been resolved. [RTI Issue ID MICRO-3117] .. MICRO-2866 Possible exception due to misaligned RTPS header ------------------------------------------------ In previous releases, if multiple RTPS messages were received in the same UDP payload, a misaligned RTPS message header could cause an exception. .. note:: |rti_me| does not send multiple RTPS messages in the same UDP payload. This issue has been resolved. [RTI Issue ID MICRO-2866] .. MICRO-2897 *DDS_SubscriptionBuiltinTopicData_copy* did not copy the PresentationQosPolicy ------------------------------------------------------------------------------ The *DDS_SubscriptionBuiltinTopicData_copy* function did not copy the PresentationQosPolicy. This issue has been resolved. [RTI Issue ID MICRO-2897] .. MICRO-2904 Possible failure to start timer ------------------------------- On architctures using the *posix* port of |me|, the DomainParticipantFactory may have failed to initialize if compiled to use signals or if CLOCK_MONOTONIC was not available. This issue has been resolved. [RTI Issue ID MICRO-2904] .. MICRO-2909 Sample timestamp now set to 0 if timestamp cannot be retrieved -------------------------------------------------------------- If the reception timestamp for a sample cannot be retrieved, the reception timestamp is set to 0. [RTI Issue ID MICRO-2909] .. MICRO-2913 *Qos_copy* functions did not validate input arguments ----------------------------------------------------- In previous releases, the *Qos_copy* APIs did not validate that the input arguments were not NULL. This issue has been resolved. [RTI Issue ID MICRO-2913] .. MICRO-2915 Unused parameter *DOMAIN_PARTICIPANT_RESOURCE_LIMITS.matching_reader_writer_pair_allocation* removed ---------------------------------------------------------------------------------------------------- The QoS policy setting *DOMAIN_PARTICIPANT_RESOURCE_LIMITS.matching_reader_writer_pair_allocation* was not used and has been removed from the *DOMAIN_PARTICIPANT_RESOURCE_LIMITS* structure. [RTI Issue ID MICRO-2915] .. MICRO-2929 *DDS_DomainParticpant_add_peer* may have returned success on failure -------------------------------------------------------------------- *DDS_DomainParticpant_add_peer* may have returned success even if the peer was not added. This issue has been resolved. [RTI Issue ID MICRO-2929] .. MICRO-2964 *DDS_StringSeq_copy* did not validate input arguments ----------------------------------------------------- In previous versions, *DDS_StringSeq_copy* did not check that the source and destination arguments were different before copying. This issue has been resolved. In addition, the documentation for *Seq_copy* has been updated to clearly state that overlapping memory regions are not supported, with the exception of copying to itself. [RTI Issue ID MICRO-2964] .. MICRO-2986 Possible NULL pointer exception in generated code if the system was out of memory --------------------------------------------------------------------------------- In previous releases, it was possible to get a NULL pointer exception in the generated code if the system was out of memory during initialization. This issue would have occurred during DDS entity creation, as memory is only allocated during entity creation. This issue has been resolved. [RTI Issue ID MICRO-2986] .. MICRO-3034 A DataWriter could run out of resources if sample was not added to cache ------------------------------------------------------------------------ In rare cases, a *DataWriter* could run out of resources if a sample could be successfully serialized, but not added to the writer cache. This issue has been resolved. [RTI Issue ID MICRO-3034] .. MICRO-3147 Possible serialization beyond stream buffer ------------------------------------------- In previous releases, *CDR_Stream_check_size* did not check for underflow. As a result, it was possible to serialize data beyond the buffer boundary if the buffer assigned to the stream was too small. This is only an issue for applications assigning too small of a buffer to a stream. This issue has been resolved. [RTI Issue ID MICRO 3147, MICRO-3200] .. MICRO-3148 *RELIABILITY.max_blocking_time* must be zero -------------------------------------------- In previous releases, a non-zero *RELIABILITY.max_blocking_time* was supported on a *DataReader*. This feature is not supported in this release. [RTI Issue ID MICRO-3148] .. MICRO-3151 Possible DataReader or DataWriter creation failure with multiple DomainParticipants ----------------------------------------------------------------------------------- In previous releases, creating *DataReaders* or *DataWriters* in different threads for different *DomainParticipants* could fail due to a race condition. This issue has been resolved. [RTI Issue ID MICRO-3151] .. MICRO-3254 Incorrect *lease_duration* may have been used for a discovered participant -------------------------------------------------------------------------- In previous releases, if the *lease_duration* was not sent by a remote *DomainParticipant*, a previously received value was used instead. This issue has been resolved. Note that RTI's DDS implementations send the *lease_duration*. [RTI Issue ID MICRO-3254] .. MICRO-3272 Missing consistency check for *DESTINATION_ORDER.source_timestamp_tolerance* ---------------------------------------------------------------------------- In previous releases, a check that *DESTINATION_ORDER.source_timestamp_tolerance* was normalized was missing (nanosecond < 1 seconds). This issue has been resolved. [RTI Issue ID MICRO-3272] .. MICRO-3276 Improved error detection for unresolved addresses ------------------------------------------------- In previous releases, an unresolved address was ignored. In this release, if an address cannot be resolved, it results in a failure. This means that all addresses passed to the *add_peer* API and the *enabled_transports* QoS policy must be valid, otherwise entity creation will fail. [RTI Issue ID MICRO-3276] .. MICRO-3308 *DDS_StatusCondition_set_enabled_statuses* did not trigger if an active condition was enabled --------------------------------------------------------------------------------------------- In previous releases, if a StatusCondition enabled by a call to *DDS_StatusCondition_set_enabled_statuses* was already active, the StatusCondition did not trigger. This issue has been resolved. [RTI Issue ID MICRO-3308] .. MICRO-3311 Race condition in DDS *enable* APIs ----------------------------------- In previouses releases, a race condition existed if the same DDS entity was enabled from multiple threads at the same time. This issue has been resolved. [RTI Issue ID MICRO-3311] .. only:: cert .. MICRO-3322 *disable_auto_interface_config* is not available in |me| -------------------------------------------------------- In previous versions of |me|, *disable_auto_interface_config* was available in the *UDP_InterfaceFactoryProperty* structure, but was ignored (always TRUE). This variable is no longer available in |me|. [RTI Issue ID MICRO-3322] .. MICRO-3330 DDS WaitSet may have timed out later than timeout value ------------------------------------------------------- In very rare cases, an error message taking a mutex may have been logged when using the POSIX real-time timers. This may have resulted in a delayed timeout for *DDS_WaitSets*. This issue has been resolved. [RTI Issue ID MICRO-3330]