Skip to content

Commit ac370fc

Browse files
authored
fix: address book guarantees no replicated entries are added (#927)
1 parent ef43936 commit ac370fc

File tree

2 files changed

+15
-4
lines changed

2 files changed

+15
-4
lines changed

src/peer-store/address-book.js

+7-4
Original file line numberDiff line numberDiff line change
@@ -307,10 +307,13 @@ class AddressBook extends Book {
307307
throw errcode(new Error(`multiaddr ${addr} must be an instance of multiaddr`), ERR_INVALID_PARAMETERS)
308308
}
309309

310-
addresses.push({
311-
multiaddr: addr,
312-
isCertified
313-
})
310+
// Guarantee no replicates
311+
if (!addresses.find((a) => a.multiaddr.equals(addr))) {
312+
addresses.push({
313+
multiaddr: addr,
314+
isCertified
315+
})
316+
}
314317
})
315318

316319
return addresses

test/peer-store/address-book.spec.js

+8
Original file line numberDiff line numberDiff line change
@@ -287,6 +287,14 @@ describe('addressBook', () => {
287287

288288
await defer.promise
289289
})
290+
291+
it('does not add replicated content', () => {
292+
// set 1
293+
ab.set(peerId, [addr1, addr1])
294+
295+
const addresses = ab.get(peerId)
296+
expect(addresses).to.have.lengthOf(1)
297+
})
290298
})
291299

292300
describe('addressBook.get', () => {

0 commit comments

Comments
 (0)