From d8e666dcc00e79c0ea7d7b1a56550ce5e3c352fb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Adrien=20B=C3=A9raud?= <adrien.beraud@savoirfairelinux.com> Date: Fri, 13 Oct 2023 12:12:09 -0400 Subject: [PATCH] MultiplexedSocket: lock in getChannelList Change-Id: I377ca001dbc1821b3b22dfc83d7b2677cc344477 --- src/multiplexed_socket.cpp | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/src/multiplexed_socket.cpp b/src/multiplexed_socket.cpp index 9c1f952..b34bf07 100644 --- a/src/multiplexed_socket.cpp +++ b/src/multiplexed_socket.cpp @@ -1214,17 +1214,15 @@ ChannelSocket::getRemoteAddress() const std::vector<std::map<std::string, std::string>> MultiplexedSocket::getChannelList() const { + std::lock_guard<std::mutex> lkSockets(pimpl_->socketsMutex); std::vector<std::map<std::string, std::string>> channelsList; - + channelsList.reserve(pimpl_->sockets.size()); for (const auto& [_, channel] : pimpl_->sockets) { - if (channel) { - std::map<std::string, std::string> channelMap; - channelMap["channel"] = std::to_string(channel->channel()); - channelMap["channelName"]= channel->name(); - channelsList.emplace_back(std::move(channelMap)); - } + channelsList.emplace_back(std::map<std::string, std::string> { + {"id", fmt::format("{:x}", channel->channel())}, + {"name", channel->name()}, + }); } - return channelsList; } -- GitLab