From 86a4158c3fd180f100b34eb842bfab65c6ce7dd0 Mon Sep 17 00:00:00 2001 From: Per Moberg Date: Fri, 3 May 2024 15:58:32 +0200 Subject: [PATCH] STAR-1269: Fix allocation bug of client sockets vector --- SRTNet.cpp | 3 ++- test/TestSrt.cpp | 17 +++++++++-------- 2 files changed, 11 insertions(+), 9 deletions(-) diff --git a/SRTNet.cpp b/SRTNet.cpp index a12a62f..830db56 100644 --- a/SRTNet.cpp +++ b/SRTNet.cpp @@ -361,7 +361,8 @@ std::vector>> SR std::vector SRTNet::getActiveClientSockets() const { std::lock_guard lock(mClientListMtx); - std::vector clientSockets(mClientList.size()); + std::vector clientSockets; + clientSockets.reserve(mClientList.size()); for (const auto& [socket, networkConnection] : mClientList) { clientSockets.push_back(socket); } diff --git a/test/TestSrt.cpp b/test/TestSrt.cpp index 1bedeec..849e44d 100644 --- a/test/TestSrt.cpp +++ b/test/TestSrt.cpp @@ -173,8 +173,8 @@ TEST(TestSrt, StartStop) { ASSERT_TRUE(successfulWait) << "Timeout waiting for client to connect"; } - waitUntil([&]() { return !server.getActiveClients().empty(); }, - std::chrono::seconds(1), std::chrono::milliseconds(10)); + ASSERT_TRUE(waitUntil([&]() { return !server.getActiveClientSockets().empty(); }, + std::chrono::seconds(1), std::chrono::milliseconds(10))); const auto activeClients = server.getActiveClients(); size_t nClients = activeClients.size(); @@ -466,8 +466,8 @@ TEST_F(TestSRTFixture, SingleSender) { ASSERT_TRUE(mClient.isConnectedToServer()); ASSERT_TRUE(waitForClientToConnect(std::chrono::seconds(2))); - waitUntil([&]() { return !mServer.getActiveClients().empty(); }, - std::chrono::seconds(1), std::chrono::milliseconds(10)); + ASSERT_TRUE(waitUntil([&]() { return !mServer.getActiveClientSockets().empty(); }, + std::chrono::seconds(1), std::chrono::milliseconds(10))); auto activeClients = mServer.getActiveClients(); size_t numberOfClients = activeClients.size(); @@ -513,8 +513,8 @@ TEST_F(TestSRTFixture, BindAddressForCaller) { ASSERT_TRUE(waitForClientToConnect(std::chrono::seconds(2))); - waitUntil([&]() { return !mServer.getActiveClients().empty(); }, - std::chrono::seconds(1), std::chrono::milliseconds(10)); + ASSERT_TRUE(waitUntil([&]() { return !mServer.getActiveClientSockets().empty(); }, + std::chrono::seconds(1), std::chrono::milliseconds(10))); const auto activeClients = mServer.getActiveClients(); size_t numberOfClients = activeClients.size(); @@ -561,8 +561,9 @@ TEST_F(TestSRTFixture, AutomaticPortSelection) { EXPECT_GT(clientIPAndPort.second, 1024); // We expect it won't pick a privileged port EXPECT_NE(clientIPAndPort.second, serverIPAndPort.second); - waitUntil([&]() { return !mServer.getActiveClients().empty(); }, - std::chrono::seconds(1), std::chrono::milliseconds(10)); + ASSERT_TRUE(waitUntil([&]() { return !mServer.getActiveClientSockets().empty(); }, + std::chrono::seconds(1), std::chrono::milliseconds(10))); + const auto activeClients = mServer.getActiveClients(); size_t nClients = activeClients.size();