Skip to content
This repository was archived by the owner on Jul 21, 2023. It is now read-only.

Commit abe6a25

Browse files
authored
fix: if client mode is specifed, do not auto-switch to server mode (#475)
If the user has specified client mode or not then do not auto-switch between client or server mode.
1 parent 1fb2df2 commit abe6a25

File tree

1 file changed

+27
-23
lines changed

1 file changed

+27
-23
lines changed

src/dual-kad-dht.ts

Lines changed: 27 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -164,29 +164,33 @@ export class DefaultDualKadDHT extends EventEmitter<PeerDiscoveryEvents> impleme
164164
}))
165165
})
166166

167-
components.events.addEventListener('self:peer:update', (evt) => {
168-
log('received update of self-peer info')
169-
const hasPublicAddress = evt.detail.peer.addresses
170-
.some(({ multiaddr }) => {
171-
const isPublic = multiaddrIsPublic(multiaddr)
172-
173-
log('%m is public %s', multiaddr, isPublic)
174-
175-
return isPublic
176-
})
177-
178-
this.getMode()
179-
.then(async mode => {
180-
if (hasPublicAddress && mode === 'client') {
181-
await this.setMode('server')
182-
} else if (mode === 'server' && !hasPublicAddress) {
183-
await this.setMode('client')
184-
}
185-
})
186-
.catch(err => {
187-
log.error('error setting dht server mode', err)
188-
})
189-
})
167+
// if client mode has not been explicitly specified, auto-switch to server
168+
// mode when the node's peer data is updated with publicly dialable addresses
169+
if (init.clientMode == null) {
170+
components.events.addEventListener('self:peer:update', (evt) => {
171+
log('received update of self-peer info')
172+
const hasPublicAddress = evt.detail.peer.addresses
173+
.some(({ multiaddr }) => {
174+
const isPublic = multiaddrIsPublic(multiaddr)
175+
176+
log('%m is public %s', multiaddr, isPublic)
177+
178+
return isPublic
179+
})
180+
181+
this.getMode()
182+
.then(async mode => {
183+
if (hasPublicAddress && mode === 'client') {
184+
await this.setMode('server')
185+
} else if (mode === 'server' && !hasPublicAddress) {
186+
await this.setMode('client')
187+
}
188+
})
189+
.catch(err => {
190+
log.error('error setting dht server mode', err)
191+
})
192+
})
193+
}
190194
}
191195

192196
readonly [Symbol.toStringTag] = '@libp2p/dual-kad-dht'

0 commit comments

Comments
 (0)