diff --git a/src/cpp/rtps/participant/RTPSParticipantImpl.cpp b/src/cpp/rtps/participant/RTPSParticipantImpl.cpp index f414dbe111b..47f4be49452 100644 --- a/src/cpp/rtps/participant/RTPSParticipantImpl.cpp +++ b/src/cpp/rtps/participant/RTPSParticipantImpl.cpp @@ -1214,6 +1214,7 @@ void RTPSParticipantImpl::update_attributes( { update_pdp = true; std::vector modified_servers; + LocatorList_t modified_locators; // Check that the remote servers list is consistent: all the already known remote servers must be included in // the list and either new remote servers are added or remote server listening locator is modified. for (auto existing_server : m_att.builtin.discovery_config.m_DiscoveryServers) @@ -1237,6 +1238,7 @@ void RTPSParticipantImpl::update_attributes( if (!locator_contained) { modified_servers.emplace_back(incoming_server.GetParticipant()); + modified_locators.push_back(incoming_locator); logInfo(RTPS_QOS_CHECK, "DS Server: " << incoming_server.guidPrefix << " has modified its locators: " << incoming_locator << " being added") @@ -1283,6 +1285,10 @@ void RTPSParticipantImpl::update_attributes( createSenderResources(m_att.builtin.metatrafficMulticastLocatorList); createSenderResources(m_att.builtin.metatrafficUnicastLocatorList); createSenderResources(m_att.defaultUnicastLocatorList); + if (!modified_locators.empty()) + { + createSenderResources(modified_locators); + } // Update remote servers list if (m_att.builtin.discovery_config.discoveryProtocol == DiscoveryProtocol::CLIENT ||