mirror of https://github.com/voidlizard/hbs2
Implemented encryption key clearing on PeerExpiredEventKey
This commit is contained in:
parent
00bac2047f
commit
21e5f4ac59
|
@ -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
|
||||
|
|
|
@ -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]
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Reference in New Issue