From 37d1cdf29d0fb0f9c909a1fd403ad1e899fad6e8 Mon Sep 17 00:00:00 2001 From: Alex Hultman Date: Fri, 8 Nov 2019 12:16:41 +0100 Subject: [PATCH] Handle double subscriptions --- src/TopicTreeDraft.h | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/TopicTreeDraft.h b/src/TopicTreeDraft.h index d13d0ac..0b48be6 100644 --- a/src/TopicTreeDraft.h +++ b/src/TopicTreeDraft.h @@ -229,10 +229,12 @@ public: } /* Add socket to Topic's Set */ - iterator->subs.insert(subscriber); + auto [it, inserted] = iterator->subs.insert(subscriber); - /* Add Topic to list of subscriptions */ - subscriber->subscriptions.push_back(iterator); + /* Add Topic to list of subscriptions only if we weren't already subscribed */ + if (inserted) { + subscriber->subscriptions.push_back(iterator); + } } void publish(std::string_view topic, std::string_view message) {