diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/Erebos/Discovery.hs | 12 | ||||
| -rw-r--r-- | src/Erebos/Network.hs | 2 |
2 files changed, 7 insertions, 7 deletions
diff --git a/src/Erebos/Discovery.hs b/src/Erebos/Discovery.hs index da55dc3..c287448 100644 --- a/src/Erebos/Discovery.hs +++ b/src/Erebos/Discovery.hs @@ -822,16 +822,16 @@ discoverySearch server dgst = do Just (UnhandledService svc) | svc == serviceID (Proxy @DiscoveryService) -> return () _ -> throwError e) $ do peers <- liftIO $ getCurrentPeerList server - match <- forM peers $ \peer -> do + peersFull <- fmap catMaybes $ forM peers $ \peer -> do getPeerIdentity peer >>= \case - PeerIdentityFull pid -> do - return $ dgst `elem` identityDigests pid - _ -> return False - when (not $ or match) $ do + PeerIdentityFull pid -> return $ Just ( peer, pid ) + _ -> return Nothing + let match = any ((dgst `elem`) . identityDigests . snd) peersFull + when (not match) $ do _ <- modifyServiceGlobalState server (Proxy @DiscoveryService) $ \s -> ( s { dgsSearchingFor = S.insert dgst $ dgsSearchingFor s }, () ) now <- liftIO $ getTime Monotonic - forM_ peers $ \peer -> do + forM_ peersFull $ \( peer, _ ) -> do runPeerService peer $ do weAskedFor <- dpsWeAskedFor <$> svcGet when (not $ M.member dgst weAskedFor) $ do diff --git a/src/Erebos/Network.hs b/src/Erebos/Network.hs index 225ba4a..3cb961d 100644 --- a/src/Erebos/Network.hs +++ b/src/Erebos/Network.hs @@ -1116,7 +1116,7 @@ runPeerServiceOn mbservice newStreams paddr peer handler = liftIO $ do putTMVar (serverServiceStates server) $ M.insert svc (SomeServiceGlobalState proxy gs') global return h' _ -> do - atomically $ logd $ "can't run service handler on peer with incomplete identity " ++ show paddr + atomically $ logd $ "can't run service " <> show (toUUID svc) <> " handler on peer with incomplete identity " ++ show paddr _ -> atomically $ do logd $ "unhandled service '" ++ show (toUUID svc) ++ "'" |