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) {