44 type Stream ,
55 TypedEventEmitter
66} from "@libp2p/interface" ;
7+ import { peerIdFromString } from "@libp2p/peer-id" ;
78import type { MultiaddrInput } from "@multiformats/multiaddr" ;
89import { ConnectionManager , createDecoder , createEncoder } from "@waku/core" ;
910import type {
@@ -88,8 +89,8 @@ export class WakuNode implements IWaku {
8889
8990 this . connectionManager = new ConnectionManager ( {
9091 libp2p,
91- relay : this . relay ,
9292 events : this . events ,
93+ relay : this . relay ,
9394 pubsubTopics : pubsubTopics ,
9495 networkConfig : this . networkConfig ,
9596 config : options ?. connectionManager
@@ -213,7 +214,22 @@ export class WakuNode implements IWaku {
213214 public async hangUp ( peer : PeerId | MultiaddrInput ) : Promise < boolean > {
214215 log . info ( `Hanging up peer:${ peer ?. toString ( ) } .` ) ;
215216
216- return this . connectionManager . hangUp ( peer ) ;
217+ let peerId : PeerId ;
218+ if ( typeof peer === "string" ) {
219+ peerId = peerIdFromString ( peer ) ;
220+ } else if ( peer && "getPeerId" in peer ) {
221+ // MultiaddrInput case
222+ const peerIdStr = peer . getPeerId ?.( ) ;
223+ if ( ! peerIdStr ) {
224+ throw new Error ( "No peer ID in multiaddr" ) ;
225+ }
226+ peerId = peerIdFromString ( peerIdStr ) ;
227+ } else {
228+ // PeerId case
229+ peerId = peer as PeerId ;
230+ }
231+
232+ return await this . connectionManager . hangUp ( peerId ) ;
217233 }
218234
219235 public async start ( ) : Promise < void > {
@@ -222,7 +238,7 @@ export class WakuNode implements IWaku {
222238 this . _nodeStateLock = true ;
223239
224240 await this . libp2p . start ( ) ;
225- this . connectionManager . start ( ) ;
241+ // Connection manager starts automatically
226242 this . peerManager . start ( ) ;
227243 this . healthIndicator . start ( ) ;
228244 this . lightPush ?. start ( ) ;
0 commit comments