From 2d1b098f4dee1fa7aac7a81c7b3a43e2dadd351b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Roman=20Smr=C5=BE?= Date: Sun, 26 Jul 2026 09:07:01 +0200 Subject: Network: ignore connection attempts to self --- src/Erebos/Network/Protocol.hs | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) (limited to 'src') diff --git a/src/Erebos/Network/Protocol.hs b/src/Erebos/Network/Protocol.hs index c0dff4b..f015db6 100644 --- a/src/Erebos/Network/Protocol.hs +++ b/src/Erebos/Network/Protocol.hs @@ -738,18 +738,20 @@ processPacket gs@GlobalState {..} econn secure packet@(TransportPacket (Transpor _ -> return Nothing -- Initiation packet - | _:_ <- mapMaybe (\case Initiation x -> Just x; _ -> Nothing) header + | _ : _ <- mapMaybe (\case Initiation x -> Just x; _ -> Nothing) header + , pids <- mapMaybe (\case AnnounceSelf x -> Just x; _ -> Nothing) header , Just ver <- version -> do cookie <- createCookie gs addr atomically $ do identity <- fst <$> readTVar gIdentity - let reply = BL.toStrict $ serializeObject $ transportToObject gStorage $ TransportHeader - [ CookieSet cookie - , AnnounceSelf $ refDigest $ storedRef $ idData identity - , ProtocolVersion ver - ] - writeFlow gDataFlow (addr, reply) + when ((refDigest $ storedRef $ idData identity) `notElem` pids) $ do + let reply = BL.toStrict $ serializeObject $ transportToObject gStorage $ TransportHeader + [ CookieSet cookie + , AnnounceSelf $ refDigest $ storedRef $ idData identity + , ProtocolVersion ver + ] + writeFlow gDataFlow (addr, reply) return Nothing -- Announce packet outside any connection -- cgit v1.2.3