fixed issue with peer expiring

This commit is contained in:
Dmitry Zuikov 2023-02-04 15:53:02 +03:00
parent 277e886a4b
commit 83f5f2a496
3 changed files with 7 additions and 4 deletions

View File

@ -14,6 +14,6 @@ data AnyPeerLocator e = forall a . PeerLocator e a => AnyPeerLocator a
instance HasPeer e => PeerLocator e (AnyPeerLocator e) where
knownPeers (AnyPeerLocator l) = knownPeers l
addPeers (AnyPeerLocator l) = addPeers l
delPeers (AnyPeerLocator l) = addPeers l
delPeers (AnyPeerLocator l) = delPeers l

View File

@ -8,6 +8,8 @@ import Control.Concurrent.STM
import Data.Set (Set)
import Data.Set qualified as Set
import Prettyprinter
newtype StaticPeerLocator e =
StaticPeerLocator (TVar (Set (Peer e)))
@ -17,7 +19,7 @@ newStaticPeerLocator seeds = do
tv <- liftIO $ newTVarIO (Set.fromList seeds)
pure $ StaticPeerLocator tv
instance Ord (Peer e) => PeerLocator e (StaticPeerLocator e) where
instance (Ord (Peer e), Pretty (Peer e)) => PeerLocator e (StaticPeerLocator e) where
knownPeers (StaticPeerLocator peers) = do
ps <- liftIO $ readTVarIO peers

View File

@ -66,12 +66,13 @@ peerPingLoop :: forall e m . ( HasPeerLocator e m
, Request e (PeerHandshake e) m
, Sessions e (PeerHandshake e) m
, Sessions e (PeerInfo e) m
, Sessions e (KnownPeer e) m
, Pretty (Peer e)
, MonadIO m
)
=> m ()
peerPingLoop = forever do
pause @'Minutes 2 -- FIXME: defaults
pause @'Seconds 120 -- FIXME: defaults
debug "peerPingLoop"
pl <- getPeerLocator @e
@ -90,5 +91,5 @@ peerPingLoop = forever do
warn $ "removing peer" <+> pretty p <+> "for not responding to our pings"
delPeers pl [p]
expire (PeerInfoKey p)
expire (KnownPeerKey p)