Implemented encryption key clearing on PeerExpiredEventKey

This commit is contained in:
Sergey Ivanov 2023-07-18 23:49:47 +04:00
parent 00bac2047f
commit 21e5f4ac59
3 changed files with 10 additions and 2 deletions

View File

@ -14,7 +14,7 @@ data instance EventKey e PeerExpires =
deriving stock (Typeable, Eq, Generic) deriving stock (Typeable, Eq, Generic)
data instance Event e PeerExpires = data instance Event e PeerExpires =
PeerExpiredEvent (Peer e) (Maybe (PeerData e)) PeerExpiredEvent (Peer e) -- (Maybe (PeerData e))
deriving stock (Typeable) deriving stock (Typeable)
instance EventType (Event e PeerExpires) where instance EventType (Event e PeerExpires) where

View File

@ -224,7 +224,7 @@ peerPingLoop cfg penv = do
delPeers pl [p] delPeers pl [p]
expire (PeerInfoKey p) expire (PeerInfoKey p)
expire (KnownPeerKey p) expire (KnownPeerKey p)
emit PeerExpiredEventKey (PeerExpiredEvent @e p mpeerData) emit PeerExpiredEventKey (PeerExpiredEvent @e p {-mpeerData-})
liftIO $ mapM_ link [watch, infoLoop] liftIO $ mapM_ link [watch, infoLoop]

View File

@ -23,6 +23,7 @@ import HBS2.Net.PeerLocator
import HBS2.Net.Proto as Proto import HBS2.Net.Proto as Proto
import HBS2.Net.Proto.Definition import HBS2.Net.Proto.Definition
import HBS2.Net.Proto.EncryptionHandshake import HBS2.Net.Proto.EncryptionHandshake
import HBS2.Net.Proto.Event.PeerExpired
import HBS2.Net.Proto.Peer import HBS2.Net.Proto.Peer
import HBS2.Net.Proto.PeerAnnounce import HBS2.Net.Proto.PeerAnnounce
import HBS2.Net.Proto.PeerExchange import HBS2.Net.Proto.PeerExchange
@ -702,6 +703,13 @@ runPeer opts = U.handle (\e -> myException e
addPeers @e pl ps 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 subscribe @e PeerAnnounceEventKey $ \(PeerAnnounceEvent pip nonce) -> do
unless (nonce == pnonce) $ do unless (nonce == pnonce) $ do
debug $ "Got peer announce!" <+> pretty pip debug $ "Got peer announce!" <+> pretty pip