From 2fba2dd6711bbd87aabaaaf5e4bc572ef98e888f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Roman=20Smr=C5=BE?= Date: Tue, 10 Mar 2026 21:25:37 +0100 Subject: Avoid resending already sent peer search requests --- src/Erebos/Discovery.hs | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/src/Erebos/Discovery.hs b/src/Erebos/Discovery.hs index 7487d7d..43350c5 100644 --- a/src/Erebos/Discovery.hs +++ b/src/Erebos/Discovery.hs @@ -622,11 +622,16 @@ discoverySearch server dgst = do return $ dgst `elem` identityDigests pid _ -> return False when (not $ or match) $ do - modifyServiceGlobalState server (Proxy @DiscoveryService) $ \s -> (, ()) s - { dgsSearchingFor = S.insert dgst $ dgsSearchingFor s - } - forM_ peers $ \peer -> do - sendToPeer peer $ DiscoverySearch $ Right dgst + alreadySearching <- modifyServiceGlobalState server (Proxy @DiscoveryService) $ \s -> + let alreadySearching = S.member dgst $ dgsSearchingFor s + in ( if alreadySearching then s else s + { dgsSearchingFor = S.insert dgst $ dgsSearchingFor s + } + , alreadySearching + ) + when (not alreadySearching) $ do + forM_ peers $ \peer -> do + sendToPeer peer $ DiscoverySearch $ Right dgst data TunnelAddress = TunnelAddress -- cgit v1.2.3