diff --git a/hbs2-core/lib/HBS2/Net/Proto/Event/PeerExpired.hs b/hbs2-core/lib/HBS2/Net/Proto/Event/PeerExpired.hs index 5ea4bd93..347e9877 100644 --- a/hbs2-core/lib/HBS2/Net/Proto/Event/PeerExpired.hs +++ b/hbs2-core/lib/HBS2/Net/Proto/Event/PeerExpired.hs @@ -14,7 +14,7 @@ data instance EventKey e PeerExpires = deriving stock (Typeable, Eq, Generic) data instance Event e PeerExpires = - PeerExpiredEvent (Peer e) (Maybe (PeerData e)) + PeerExpiredEvent (Peer e) -- (Maybe (PeerData e)) deriving stock (Typeable) instance EventType (Event e PeerExpires) where diff --git a/hbs2-peer/app/PeerInfo.hs b/hbs2-peer/app/PeerInfo.hs index 6fa165c7..58598c3a 100644 --- a/hbs2-peer/app/PeerInfo.hs +++ b/hbs2-peer/app/PeerInfo.hs @@ -224,7 +224,7 @@ peerPingLoop cfg penv = do delPeers pl [p] expire (PeerInfoKey p) expire (KnownPeerKey p) - emit PeerExpiredEventKey (PeerExpiredEvent @e p mpeerData) + emit PeerExpiredEventKey (PeerExpiredEvent @e p {-mpeerData-}) liftIO $ mapM_ link [watch, infoLoop] diff --git a/hbs2-peer/app/PeerMain.hs b/hbs2-peer/app/PeerMain.hs index dd45feb0..071cb412 100644 --- a/hbs2-peer/app/PeerMain.hs +++ b/hbs2-peer/app/PeerMain.hs @@ -23,6 +23,7 @@ import HBS2.Net.PeerLocator import HBS2.Net.Proto as Proto import HBS2.Net.Proto.Definition import HBS2.Net.Proto.EncryptionHandshake +import HBS2.Net.Proto.Event.PeerExpired import HBS2.Net.Proto.Peer import HBS2.Net.Proto.PeerAnnounce import HBS2.Net.Proto.PeerExchange @@ -702,6 +703,13 @@ runPeer opts = U.handle (\e -> myException e addPeers @e pl ps + subscribe @e PeerExpiredEventKey \(PeerExpiredEvent peer {-mpeerData-}) -> liftIO do + mpeerData <- withPeerM penv $ find (KnownPeerKey peer) id + forM_ mpeerData \peerData -> setEncryptionKey penv peerData Nothing + -- deletePeerAsymmKey brains peer + forM_ mpeerData \peerData -> + deletePeerAsymmKey' brains (show peerData) + subscribe @e PeerAnnounceEventKey $ \(PeerAnnounceEvent pip nonce) -> do unless (nonce == pnonce) $ do debug $ "Got peer announce!" <+> pretty pip