From 8ff138de4671df5db1c14b309bee828da03b6623 Mon Sep 17 00:00:00 2001 From: Julien Malard-Adam Date: Fri, 21 Feb 2025 09:40:56 +0100 Subject: [PATCH] Remove disconnected peers --- src/sync.js | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/sync.js b/src/sync.js index dd53e24..c4db7cd 100644 --- a/src/sync.js +++ b/src/sync.js @@ -231,6 +231,10 @@ const Sync = async ({ ipfs, log, events, onSynced, start, timeout }) => { } } + const handlePeerDisconnected = async event => { + peers.delete(event.detail.toString()) + } + /** * Add a log entry to the Sync Protocol to be sent to peers. * @function add @@ -258,6 +262,7 @@ const Sync = async ({ ipfs, log, events, onSynced, start, timeout }) => { pubsub.removeEventListener('message', handleUpdateMessage) await libp2p.unhandle(headsSyncAddress) await pubsub.unsubscribe(address) + libp2p.removeEventListener('peer:disconnect', handlePeerDisconnected); peers.clear() } } @@ -276,6 +281,8 @@ const Sync = async ({ ipfs, log, events, onSynced, start, timeout }) => { pubsub.addEventListener('message', handleUpdateMessage) // Subscribe to the pubsub channel for this database through which updates are sent await pubsub.subscribe(address) + // Remove disconnected peers from `peers`, as otherwise they will not resync heads on reconnection + libp2p.addEventListener('peer:disconnect', handlePeerDisconnected); started = true } }