summaryrefslogtreecommitdiff
path: root/src/Erebos/Discovery.hs
diff options
context:
space:
mode:
Diffstat (limited to 'src/Erebos/Discovery.hs')
-rw-r--r--src/Erebos/Discovery.hs17
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