10.4.1. What’s New in 2.4.12.1

10.4.1.1. 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.

10.4.1.2. 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 Message Integrity Checking in the Connext Cert User’s Manual for details.

10.4.1.3. 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 Connext Cert. The default send and receive socket buffer size has been changed to 64 Kbytes in Connext Cert for QNX builds.

10.4.2. What’s Fixed in 2.4.12.1

10.4.2.1. 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]

10.4.2.2. 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]

10.4.2.3. 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]

10.4.2.4. 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]

10.4.2.5. 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 Connext Cert to call on_sample_lost() when the “on_sample_lost” notification was enabled.

This issue has been resolved.

[RTI Issue ID MICRO-2289]

10.4.2.6. 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]

10.4.2.7. 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]

10.4.2.8. 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]

10.4.2.9. 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]

10.4.2.10. Non-default timer resolutions may have caused an incorrect timeout

Compiling Connext Cert with a non-default timer resolution may have caused incorrect timeouts.

This issue has been resolved.

[RTI Issue ID MICRO-2794]

10.4.2.11. 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]

10.4.2.12. 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]

10.4.2.13. 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 Connext Cert does not send multiple RTPS messages in the same UDP payload.

This issue has been resolved.

[RTI Issue ID MICRO-2866]

10.4.2.14. 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]

10.4.2.15. Possible failure to start timer

On architctures using the posix port of Connext Cert, 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]

10.4.2.16. 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]

10.4.2.17. 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]

10.4.2.18. 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]

10.4.2.19. 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]

10.4.2.20. 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]

10.4.2.21. 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]

10.4.2.22. 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]

10.4.2.23. 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]

10.4.2.24. 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]

10.4.2.25. 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]

10.4.2.26. 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]

10.4.2.27. 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]

10.4.2.28. 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]

10.4.2.29. 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]

10.4.2.30. 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]

10.4.2.31. disable_auto_interface_config is not available in Connext Cert

In previous versions of Connext Cert, disable_auto_interface_config was available in the UDP_InterfaceFactoryProperty structure, but was ignored (always TRUE). This variable is no longer available in Connext Cert.

[RTI Issue ID MICRO-3322]

10.4.2.32. 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]