From de445ec5a490da6ff22d2789b330f45d5e37765c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Roman=20Smr=C5=BE?= Date: Fri, 23 Jan 2026 21:47:11 +0100 Subject: Silence error when calling discoverySearch without the service --- src/Erebos/Discovery.hs | 35 ++++++++++++++++++++++------------- 1 file changed, 22 insertions(+), 13 deletions(-) (limited to 'src/Erebos/Discovery.hs') diff --git a/src/Erebos/Discovery.hs b/src/Erebos/Discovery.hs index 5590e4c..09ed22d 100644 --- a/src/Erebos/Discovery.hs +++ b/src/Erebos/Discovery.hs @@ -566,20 +566,29 @@ getIceConfig = do #endif -discoverySearch :: (MonadIO m, MonadError e m, FromErebosError e) => Server -> RefDigest -> m () +-- | Start search for an identity identified by given ref using the discovery +-- service. +discoverySearch + :: forall m e. (MonadIO m, MonadError e m, FromErebosError e) + => Server -- ^ `Server' object to run the discovery + -> RefDigest -- ^ Reference identifying the intended peer + -> m () discoverySearch server dgst = do - peers <- liftIO $ getCurrentPeerList server - match <- forM peers $ \peer -> do - getPeerIdentity peer >>= \case - PeerIdentityFull pid -> 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 + flip catchError (\e -> case toErebosError e of + Just (UnhandledService svc) | svc == serviceID (Proxy @DiscoveryService) -> return () + _ -> throwError e) $ do + peers <- liftIO $ getCurrentPeerList server + match <- forM peers $ \peer -> do + getPeerIdentity peer >>= \case + PeerIdentityFull pid -> 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 data TunnelAddress = TunnelAddress -- cgit v1.2.3