mirror of https://github.com/voidlizard/hbs2
fixed issue with peer expiring
This commit is contained in:
parent
277e886a4b
commit
83f5f2a496
|
@ -14,6 +14,6 @@ data AnyPeerLocator e = forall a . PeerLocator e a => AnyPeerLocator a
|
||||||
instance HasPeer e => PeerLocator e (AnyPeerLocator e) where
|
instance HasPeer e => PeerLocator e (AnyPeerLocator e) where
|
||||||
knownPeers (AnyPeerLocator l) = knownPeers l
|
knownPeers (AnyPeerLocator l) = knownPeers l
|
||||||
addPeers (AnyPeerLocator l) = addPeers l
|
addPeers (AnyPeerLocator l) = addPeers l
|
||||||
delPeers (AnyPeerLocator l) = addPeers l
|
delPeers (AnyPeerLocator l) = delPeers l
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -8,6 +8,8 @@ import Control.Concurrent.STM
|
||||||
import Data.Set (Set)
|
import Data.Set (Set)
|
||||||
import Data.Set qualified as Set
|
import Data.Set qualified as Set
|
||||||
|
|
||||||
|
import Prettyprinter
|
||||||
|
|
||||||
newtype StaticPeerLocator e =
|
newtype StaticPeerLocator e =
|
||||||
StaticPeerLocator (TVar (Set (Peer e)))
|
StaticPeerLocator (TVar (Set (Peer e)))
|
||||||
|
|
||||||
|
@ -17,7 +19,7 @@ newStaticPeerLocator seeds = do
|
||||||
tv <- liftIO $ newTVarIO (Set.fromList seeds)
|
tv <- liftIO $ newTVarIO (Set.fromList seeds)
|
||||||
pure $ StaticPeerLocator tv
|
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
|
knownPeers (StaticPeerLocator peers) = do
|
||||||
ps <- liftIO $ readTVarIO peers
|
ps <- liftIO $ readTVarIO peers
|
||||||
|
|
|
@ -66,12 +66,13 @@ peerPingLoop :: forall e m . ( HasPeerLocator e m
|
||||||
, Request e (PeerHandshake e) m
|
, Request e (PeerHandshake e) m
|
||||||
, Sessions e (PeerHandshake e) m
|
, Sessions e (PeerHandshake e) m
|
||||||
, Sessions e (PeerInfo e) m
|
, Sessions e (PeerInfo e) m
|
||||||
|
, Sessions e (KnownPeer e) m
|
||||||
, Pretty (Peer e)
|
, Pretty (Peer e)
|
||||||
, MonadIO m
|
, MonadIO m
|
||||||
)
|
)
|
||||||
=> m ()
|
=> m ()
|
||||||
peerPingLoop = forever do
|
peerPingLoop = forever do
|
||||||
pause @'Minutes 2 -- FIXME: defaults
|
pause @'Seconds 120 -- FIXME: defaults
|
||||||
debug "peerPingLoop"
|
debug "peerPingLoop"
|
||||||
|
|
||||||
pl <- getPeerLocator @e
|
pl <- getPeerLocator @e
|
||||||
|
@ -90,5 +91,5 @@ peerPingLoop = forever do
|
||||||
warn $ "removing peer" <+> pretty p <+> "for not responding to our pings"
|
warn $ "removing peer" <+> pretty p <+> "for not responding to our pings"
|
||||||
delPeers pl [p]
|
delPeers pl [p]
|
||||||
expire (PeerInfoKey p)
|
expire (PeerInfoKey p)
|
||||||
|
expire (KnownPeerKey p)
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue