5.2.4. Transports

5.2.4.1. [Major] TCP Transport did not properly enforce system FD_SETSIZE hard limits for select() socket monitoring

The TCP Transport did not properly enforce system FD_SETSIZE hard system limits for SELECT socket monitoring. This may have resulted in undefined behavior when using SELECT socket monitoring in systems where overwriting the FD_SETSIZE to a custom value at compilation time was not supported.

As a side-effect of this fix, the maximum FD_SETSIZE in Linux systems has been reduced to 1024, which effectively limits both the maximum number of sockets (to 1024) and the maximum socket ID (to 1023) that are supported by SELECT socket monitoring. To avoid scalability issues in the Transport TCP in Linux systems, you are encouraged to switch to POLL socket monitoring, which is the new default (see “What’s New in 7.6.0”).

[RTI Issue ID COREPLG-756]

5.2.4.2. [Minor] Possible failure to create DomainParticipant if using multicast

If you were using multicast to receive either discovery or user traffic, it was possible for the ephemeral port used for sending unicast traffic to coincide with an intended multicast receive port, leading to DomainParticipant creation failure with this error:

DDS_DomainParticipant_enableI:Automatic participant index failed to initialize. PLEASE VERIFY CONSISTENT TRANSPORT / DISCOVERY CONFIGURATION.

This problem has been solved by removing the possibility of a port collision, thereby removing that as a possible reason for DomainParticipant creation failure.

Note that a port collision is still possible when specifying a non-default value in the multicast or unicast fields within the DataReaderQos or DataWriterQos and creating a DataReader or DataWriter.

[RTI Issue ID CORE-15591]