From 97d3a10e8cd2cfc811f8a88f0df78f6d8f890661 Mon Sep 17 00:00:00 2001 From: Henry Winkel Date: Fri, 20 Jan 2023 09:34:32 +0100 Subject: [PATCH] FIX:fixed issue of unsubscribing while stopping the service --- src/WHISPER/InternalUDPService.cpp | 12 ++++++------ src/WHISPER/whisper.cpp | 6 ++++++ 2 files changed, 12 insertions(+), 6 deletions(-) diff --git a/src/WHISPER/InternalUDPService.cpp b/src/WHISPER/InternalUDPService.cpp index 557e568..b788682 100644 --- a/src/WHISPER/InternalUDPService.cpp +++ b/src/WHISPER/InternalUDPService.cpp @@ -91,13 +91,13 @@ namespace WHISPER { { WHISPER::Leave Leave(getParentID(),getOwnID(),getOwnDeviceType(),ownReceivingPort_,myAdress_); this->publish(Leave.serialize(),WHISPER::MsgTopicsMap[(WHISPER::MsgTopics)Leave.topic_]); - unsubscribe(WHISPER::MsgTopicsMap[WHISPER::MsgTopics::MANAGEMENT]); + // unsubscribe(WHISPER::MsgTopicsMap[WHISPER::MsgTopics::MANAGEMENT]); - if (subscribedTopics.size() > 0) { - for ( std::vector::iterator it = subscribedTopics.begin(); it != subscribedTopics.end(); it++) { - unsubscribe(*it); - } - } + // if (subscribedTopics.size() > 0) { + // for ( std::vector::iterator it = subscribedTopics.begin(); it != subscribedTopics.end(); it++) { + // unsubscribe(*it); + // } + // } diff --git a/src/WHISPER/whisper.cpp b/src/WHISPER/whisper.cpp index 3f2acf6..ee4f1a5 100644 --- a/src/WHISPER/whisper.cpp +++ b/src/WHISPER/whisper.cpp @@ -40,6 +40,12 @@ namespace WHISPER void whispercomm::disconnect() { + if (subscribedTopics.size() > 0) { + for ( std::vector::iterator it = subscribedTopics.begin(); it != subscribedTopics.end(); it++) { + unsubscribe(*it); + } + } + stopReceiveThread = true; if(receiveThread.joinable()) receiveThread.join(); derivedDisconnect();