From 8a3509cad6ce14e149cec4dcbc1eeafb531c5cd5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Roman=20Smr=C5=BE?= Date: Thu, 26 Feb 2026 21:17:32 +0100 Subject: Discovery: clear peer map from dropped peers --- src/Erebos/Discovery.hs | 13 +++++++++++++ src/Erebos/Network.hs | 1 + 2 files changed, 14 insertions(+) (limited to 'src') 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 -- cgit v1.2.3