ChainSafe / js-libp2p-gossipsub

TypeScript implementation of Gossipsub
Apache License 2.0
151 stars 43 forks source link

Not bound GossipPubSub results in "addIP" being undefined #373

Closed oleksiyp closed 1 year ago

oleksiyp commented 1 year ago

Hi! 👋

Firstly, thanks for your work on this project! 🙂

Today I used patch-package to patch @chainsafe/libp2p-gossipsub@5.2.0 for the project I'm working on.

During run I faced an issue of "addIP" being undefined. This is a result of this.onPeerAddressChange not being bound to a GossipPubSub.

Here is the diff that solved my problem:

diff --git a/node_modules/@chainsafe/libp2p-gossipsub/dist/src/index.js b/node_modules/@chainsafe/libp2p-gossipsub/dist/src/index.js
index adbc229..9e445b9 100644
--- a/node_modules/@chainsafe/libp2p-gossipsub/dist/src/index.js
+++ b/node_modules/@chainsafe/libp2p-gossipsub/dist/src/index.js
@@ -296,7 +296,7 @@ export class GossipSub extends EventEmitter {
         // Schedule to start heartbeat after `GossipsubHeartbeatInitialDelay`
         const heartbeatTimeout = setTimeout(this.runHeartbeat, constants.GossipsubHeartbeatInitialDelay);
         // Then, run heartbeat every `heartbeatInterval` offset by `GossipsubHeartbeatInitialDelay`
-        this.components.peerStore.addEventListener('change:multiaddrs', this.onPeerAddressChange);
+        this.components.peerStore.addEventListener('change:multiaddrs', this.onPeerAddressChange.bind(this));
         this.status = {
             code: GossipStatusCode.started,
             registrarTopologyIds,

This issue body was partially generated by patch-package.