summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/Erebos/Discovery.hs13
-rw-r--r--src/Erebos/Network.hs1
2 files changed, 14 insertions, 0 deletions
diff --git a/src/Erebos/Discovery.hs b/src/Erebos/Discovery.hs
index 16b67e6..7487d7d 100644
--- a/src/Erebos/Discovery.hs
+++ b/src/Erebos/Discovery.hs
@@ -553,6 +553,19 @@ instance Service DiscoveryService where
forM_ searchingFor $ \dgst -> do
sendToPeer peer $ DiscoverySearch (Right dgst)
+ serviceUpdatedPeer = do
+ pid <- asks svcPeerIdentity
+ peer <- asks svcPeer
+ isPeerDropped peer >>= \case
+ True -> do
+ peers <- dgsPeers <$> svcGetGlobal
+ let peers' = M.filter ((Just peer /=) . dpPeer) peers
+ svcModifyGlobal $ \s -> s { dgsPeers = peers' }
+ debugLog $ "dropped peer " <> show [ refDigest $ storedRef $ idData pid, refDigest $ storedRef $ idExtData pid ] <>
+ ", map size " <> show (M.size peers) <> " -> " <> show (M.size peers')
+ False -> do
+ debugLog $ "updated peer " <> show [ refDigest $ storedRef $ idData pid, refDigest $ storedRef $ idExtData pid ]
+
#ifdef ENABLE_ICE_SUPPORT
serviceStopServer _ _ _ pstates = do
forM_ pstates $ \( _, DiscoveryPeerState {..} ) -> do
diff --git a/src/Erebos/Network.hs b/src/Erebos/Network.hs
index ebecbc0..518e992 100644
--- a/src/Erebos/Network.hs
+++ b/src/Erebos/Network.hs
@@ -908,6 +908,7 @@ dropPeerInner peer pvalue = do
PeerConnected conn -> do
connClose conn
writeTChan (serverChanPeer $ peerServer peer) peer
+ notifyServicesOfPeer False peer
_ -> return ()
writeTVar (peerState peer) PeerDropped
return $ M.delete (peerAddress peer) pvalue