From 6a8f754117e20bf2f9dfb3394fa8e16e22649092 Mon Sep 17 00:00:00 2001 From: Dominik Meyer Date: Thu, 27 Jul 2023 23:46:51 +0200 Subject: [PATCH] FIX: only subscripe to topic if not yet subscribed --- src/WhisperCom/Router.cpp | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/src/WhisperCom/Router.cpp b/src/WhisperCom/Router.cpp index 0945205..316c45a 100644 --- a/src/WhisperCom/Router.cpp +++ b/src/WhisperCom/Router.cpp @@ -283,10 +283,18 @@ void WhisperCom::Router::processLocalMessage_(zmq::message_t &msg) } else if (rmsg.type() == WhisperCom::Protobuf::RouterMessageType::SUBSCRIBE) { + DLOG_S(INFO) << "subscription request from " << sender << " topic: " << rmsg.topic(); std::lock_guard guard{mutexSubscription_}; typeName="Subscribe"; + + auto it = subscription_.find(rmsg.topic()); + if (it == subscription_.end() || (*it).second.empty()) + { + listening_.join(rmsg.topic().c_str()); + } + subscription_[rmsg.topic()].push_back(sender); - listening_.join(rmsg.topic().c_str()); + } else if (rmsg.type() == WhisperCom::Protobuf::RouterMessageType::UNSUBSCRIBE) {