diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/Erebos/Discovery.hs | 13 | ||||
| -rw-r--r-- | src/Erebos/Network.hs | 1 |
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 |