diff options
author | Roman Smrž <roman.smrz@seznam.cz> | 2025-07-28 19:16:18 +0200 |
---|---|---|
committer | Roman Smrž <roman.smrz@seznam.cz> | 2025-07-29 09:33:16 +0200 |
commit | d8160f03094e6d18509956efe9bb6aeda31d79c5 (patch) | |
tree | ef45877dcf6e64591ab08fec18356c1bc5738388 /src/Erebos/Discovery.hs | |
parent | 8bcaaf5524504f01bd5643d74848cec625370aa9 (diff) |
Return peer address in IO monad
Changelog: API: Replaced `Network.peerAddress` with `getPeerAddress` and added `getPeerAddresses`
Diffstat (limited to 'src/Erebos/Discovery.hs')
-rw-r--r-- | src/Erebos/Discovery.hs | 17 |
1 files changed, 7 insertions, 10 deletions
diff --git a/src/Erebos/Discovery.hs b/src/Erebos/Discovery.hs index ff07964..a83e589 100644 --- a/src/Erebos/Discovery.hs +++ b/src/Erebos/Discovery.hs @@ -246,19 +246,16 @@ instance Service DiscoveryService where DiscoverySelf addrs priority -> do pid <- asks svcPeerIdentity peer <- asks svcPeer + paddrs <- getPeerAddresses peer + let insertHelper new old | dpPriority new > dpPriority old = new | otherwise = old - matchedAddrs <- flip filterM addrs $ \case - DiscoveryICE -> do - return True - - DiscoveryIP ipaddr port - | DatagramAddress saddr <- peerAddress peer - , Just paddr <- inetFromSockAddr saddr - -> do - return $ ( ipaddr, port ) == paddr - _ -> return False + let matchedAddrs = flip filter addrs $ \case + DiscoveryICE -> True + DiscoveryIP ipaddr port -> + DatagramAddress (inetToSockAddr ( ipaddr, port )) `elem` paddrs + _ -> False forM_ (idDataF =<< unfoldOwners pid) $ \sdata -> do let dp = DiscoveryPeer |