aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authordec05eba <0xdec05eba@gmail.com>2018-10-14 06:10:47 +0200
committerdec05eba <0xdec05eba@gmail.com>2018-10-14 06:11:56 +0200
commit29d93a061a8fcc36e5d7afd1dbcd0a6fefbbabaa (patch)
tree70b93ea94f1a39b40d3aeb21264029feb6d38771 /src
parentefc7311893b0fb25129eb2b715992ba2ac43d65c (diff)
Remove subscribed peer from client on disconnect
Diffstat (limited to 'src')
-rw-r--r--src/BootstrapConnection.cpp15
1 files changed, 15 insertions, 0 deletions
diff --git a/src/BootstrapConnection.cpp b/src/BootstrapConnection.cpp
index 421dfe1..e5f5178 100644
--- a/src/BootstrapConnection.cpp
+++ b/src/BootstrapConnection.cpp
@@ -6,6 +6,21 @@ namespace sibs
{
BootstrapConnection::BootstrapConnection(const Ipv4 &bootstrapAddress)
{
+ connections.onRemoveDisconnectedPeer([this](std::shared_ptr<DirectConnectionPeer> peer)
+ {
+ std::lock_guard<std::mutex> lock(subscribedPeersMutex);
+ for(auto &topicUsers : subscribedPeers)
+ {
+ for(auto it = topicUsers.second.begin(); it != topicUsers.second.end(); )
+ {
+ if(peer->address == (*it)->address)
+ it = topicUsers.second.erase(it);
+ else
+ ++it;
+ }
+ }
+ });
+
PubSubResult connectResult = PubSubResult::OK;
std::string connectResultStr;
bool connected = false;