Release Notes#

These are all the recent releases of OpenDDS.

v3.25.0#

Released 2023-07-20

Download this release on GitHub.

Read the documenation for this release on Read the Docs.

Additions#

Security#

  • Fixed null pointer exception caused by RTPS Parameters with incorrect zero size. (PR #4197)

Fixes#

  • CMake Config Package

    • Made linking dependencies and macro definitions closer match using MPC with OpenDDS and TAO. (PR #4140)

    • Fixed issues with passing OPENDDS_IDL_OPTIONS -SI to opendds_target_sources. (PR #4140)

  • Fixed issue deserializing bounded sequences with JSON (PR #4150)

    • The deserialization will fail if the JSON input contains more elements than the bounded sequence can hold.

  • Updated the RtpsRelay’s tracking of client IP addresses so they are removed when no longer used. (PR #4202)

    • The RtpsRelay configuration option -MaxAddrSetSize was renamed to -MaxIpsPerClient

Documentation#

Notes#

  • CMake Config Package

    • OPENDDS_TARGET_SOURCES is now called opendds_target_sources. (PR #4140)

      • CMake macros and functions names are case insensitive, so this should have no effect on CMake code.

v3.24.2#

Released 2023-06-30

Download this release on GitHub.

Read the documenation for this release on Read the Docs.

Security#

  • Fixed a vulnerability in the rtps_udp transport where an acknowledgement sequence number beyond the maximum expected by the writer leads to an assert and incorrect state. (PR #4155)

    • Thanks to Seulbae Kim (@squizz617) for discovering this.

Fixes#

  • Fixed leaked shared memory by the shared memory transport. (PR ##4171)

  • Fixed bug introduced by PR #4120 (PR #4180, PR #4184)

    • The fix introduced in #4120 causes the TransportClient to silently drop messages when the client’s guid is not initialized. This causes issues for TransportClients that send messages to the transport before association. One such example is a DataWriter with liveliness configured. The DataWriter will send liveliness messages to the transport (which will be dropped) and hang waiting for them to be delivered.

    • The solution was set the guid for a TransportClient before calling any method that uses the guid.

Notes#

  • PR #4180 required changes in InfoRepoDiscovery’s IDL, so InfoRepo compatibility with older versions has been broken.

v3.24.1#

Released 2023-04-22

Download this release on GitHub.

Read the documenation for this release on Read the Docs.

Fixes#

  • Fixed compile warnings in TypeSupport that can happen with GCC and -O2 or higher (PR #4117)

  • Fixed compile error in TypeSupport for IDL that contains a typedef of a typedef (PR #4117)

  • Fixed bug in the tcp transport where readers and writers can fail to associate (PR #4120)

  • Fixed issue in some headers that could leak #pragma pack (push, 8) into user code on Visual Studio (PR #4123)

  • Fixed theoretical infinite loop in rtps_udp transport code (PR #4124)

Documentation#

  • Removed invalid links and references in README and the Developer’s Guide and fixed other minor issues (PR #4115, PR #4116, PR #4121, PR #4126)

  • Changed theme used by the Sphinx documentation to make the Developer’s Guide easier to navigate (PR #4127)

  • Added copy buttons to embedded code and code-like examples (PR #4127)

v3.24.0#

Released 2023-04-11

Download this release on GitHub.

Read the documenation for this release on Read the Docs.

Additions#

  • The OpenDDS Developer’s Guide is now available at https://opendds.readthedocs.io/ (PR #4100, PR #4101, PR #4102, PR #4103, PR #4104, PR #4105, PR #4051, PR #4092, PR #4094, PR #4095)

    • The Sphinx/reStructuredText source for this new format is now located in the repo at docs/devguide

  • DOCGroup ACE6/TAO2 is now the default ACE/TAO for OpenDDS, OCI ACE/TAO is no longer supported (PR #4069)

  • Dynamic content subscription (PR #3988)

    • This allows DynamicDataReaders to use QueryCondition and ContentFilteredTopic and allows DynamicDataWriters to do filtering on behalf of matched DataReaders that use ContentFilteredTopic.

  • DynamicData

    • Can now read and write enum members as strings (PR #4022)

    • DynamicDataImpl now uses lazy initialization to reduce memory usage (PR #4024)

    • get_int64_value and get_uint64_value can now cast from different types (PR #4078)

  • Added aliases for IDL types from XTypes spec such as DDS::UInt32 (PR #3394)

  • Added PublicationMatchedStatus Current Count To RtpsRelay Statistics (PR #4006)

  • Allow reassembly of overlapping fragment ranges in RTPS (PR #4035, PR #4047)

  • Added hardening features to RtpsRelay (PR #4045)

    • These are configured with the new options -MaxAddrSetSize and -RejectedAddressDuration.

  • Can now cross-compile on macOS (PR #4048)

  • Added OPENDDS_AUTO_LINK_DCPS and OPENDDS_USE_CORRECT_INCLUDE_SCOPE global options to the CMake package (PR #4071)

  • Expanded support for using C++ keywords in IDL (PR #4073)

  • IDL file and generated TypeSupport.idl can now be in different directories (PR #4077)

  • Improved support for anonymous types in unions branches (PR #4078)

Fixes#

  • Fixed rtps_relay_address_change deadlocks (PR #3989)

  • Fixed RtpsUdpTransport data race from relay_stun_mutex_ (PR #3990)

  • Fixed invalid socket handles in RtpsUdpTransport (PR #4002)

  • Fixed index increment in GuidPartitionTable::prepare_relay_partitions (PR #4005)

  • Improved reliability of the shared memory transport (PR #4028)

  • Fixed a bug in content filtering with enum comparisons on serialized samples (PR #4038)

  • Secure writers and readers in same participant can now associate (PR #4041)

  • Fixed transport config and transport instance derived from template conflicting (PR #4058)

  • Fixed issue with using -o in tao_idl/opendds_idl options in OPENDDS_TARGET_SOURCES and those directories are now automatically included (PR #4071)

  • XTypes (PR #4078)

    • TypeObjects struct and union members used to be sorted by member ID, but they are now sorted by declaration order as the XTypes spec calls for.

      By default member IDs increment starting at 0, and in that case the TypeObjects will be the same. If @autoid(hash), --default-autoid hash, or @id(ID) are being used then the order could be different. This could cause some reader/writer matching incompatibility with older versions of OpenDDS:

      • Topics with final and appendable structs will no longer match.

      • If DISALLOW_TYPE_COERCION QoS is being used, then all topics where the order differ will not longer match. Note that this is true for any time the type hash changes.

      • Pass the --old-typeobject-member-order option to opendds_idl to use the non-standard order.

    • The size of XCDR2 member parameters in mutable structs and unions is now correctly interpreted when the “length code” is 5, 6, or 7.

      • This is an optimization that OpenDDS doesn’t serialize samples with, so this could only be an issue when dealing with samples from other DDS implementations.

    • DynamicDataImpl (DynamicData made by DynamicDataFactory that can be passed to DynamicDataWriter):

      • get_member_id_at_index now returns ids for members that haven’t been initialized yet.

      • Fixed incorrect serialization of keyed unions for instance registration, disposal, and unregistration samples.

      • Fixed errors from serializing some cases of arrays and sequences.

Notes#

  • Release files will only be uploaded to GitHub from now on

  • OpenDDS::DCPS::RepoId has been removed, if needed use OpenDDS::DCPS::GUID_t instead (PR #3972)

Older Releases#

Older releases can be found in NEWS.md