libp2p-kad-dht
Advanced tools
Comparing version 0.15.1 to 0.15.2
@@ -0,1 +1,11 @@ | ||
<a name="0.15.2"></a> | ||
## [0.15.2](https://github.com/libp2p/js-libp2p-kad-dht/compare/v0.15.1...v0.15.2) (2019-05-31) | ||
### Bug Fixes | ||
* favour providers peerInfo over sender peerInfo in ADD_PROVIDER ([#129](https://github.com/libp2p/js-libp2p-kad-dht/issues/129)) ([6da26b0](https://github.com/libp2p/js-libp2p-kad-dht/commit/6da26b0)) | ||
<a name="0.15.1"></a> | ||
@@ -2,0 +12,0 @@ ## [0.15.1](https://github.com/libp2p/js-libp2p-kad-dht/compare/v0.15.0...v0.15.1) (2019-05-30) |
{ | ||
"name": "libp2p-kad-dht", | ||
"version": "0.15.1", | ||
"version": "0.15.2", | ||
"description": "JavaScript implementation of the Kad-DHT for libp2p", | ||
@@ -5,0 +5,0 @@ "leadMaintainer": "Vasco Santos <vasco.santos@moxy.studio>", |
@@ -33,2 +33,3 @@ 'use strict' | ||
let foundProvider = false | ||
msg.providerPeers.forEach((pi) => { | ||
@@ -49,8 +50,18 @@ // Ignore providers not from the originator | ||
if (!dht._isSelf(pi.id)) { | ||
foundProvider = true | ||
dht.peerBook.put(pi) | ||
dht.providers.addProvider(cid, pi.id, callback) | ||
} | ||
}) | ||
dht.providers.addProvider(cid, peer.id, callback) | ||
// Previous versions of the JS DHT sent erroneous providers in the | ||
// `providerPeers` field. In order to accommodate older clients that have | ||
// this bug, we fall back to assuming the originator is the provider if | ||
// we can't find any valid providers in the payload. | ||
// https://github.com/libp2p/js-libp2p-kad-dht/pull/127 | ||
// https://github.com/libp2p/js-libp2p-kad-dht/issues/128 | ||
if (!foundProvider) { | ||
dht.providers.addProvider(cid, peer.id, callback) | ||
} | ||
} | ||
} |
@@ -69,12 +69,13 @@ /* eslint-env mocha */ | ||
it('ignore providers not from the originator', (done) => { | ||
it('ignore providers that do not match the sender', (done) => { | ||
const cid = values[0].cid | ||
const msg = new Message(Message.TYPES.ADD_PROVIDER, cid.buffer, 0) | ||
const sender = peers[0] | ||
sender.multiaddrs.add('/ip4/127.0.0.1/tcp/1234') | ||
const other = peers[1] | ||
const sender = _.cloneDeep(peers[0]) | ||
const provider = _.cloneDeep(peers[0]) | ||
provider.multiaddrs.add('/ip4/127.0.0.1/tcp/1234') | ||
const other = _.cloneDeep(peers[1]) | ||
other.multiaddrs.add('/ip4/127.0.0.1/tcp/2345') | ||
msg.providerPeers = [ | ||
sender, | ||
provider, | ||
other | ||
@@ -88,6 +89,7 @@ ] | ||
expect(provs).to.have.length(1) | ||
expect(provs[0].id).to.eql(sender.id.id) | ||
const bookEntry = dht.peerBook.get(sender.id) | ||
expect(provs[0].id).to.eql(provider.id.id) | ||
const bookEntry = dht.peerBook.get(provider.id) | ||
// Favour peerInfo from payload over peerInfo from sender | ||
expect(bookEntry.multiaddrs.toArray()).to.eql( | ||
sender.multiaddrs.toArray() | ||
provider.multiaddrs.toArray() | ||
) | ||
@@ -99,8 +101,9 @@ cb() | ||
it('ignore providers with no multiaddrs', (done) => { | ||
it('fall back to sender if providers have no multiaddrs', (done) => { | ||
const cid = values[0].cid | ||
const msg = new Message(Message.TYPES.ADD_PROVIDER, cid.buffer, 0) | ||
const sender = _.cloneDeep(peers[0]) | ||
sender.multiaddrs.clear() | ||
msg.providerPeers = [sender] | ||
const provider = _.cloneDeep(peers[0]) | ||
provider.multiaddrs.clear() | ||
msg.providerPeers = [provider] | ||
@@ -111,5 +114,5 @@ waterfall([ | ||
(provs, cb) => { | ||
expect(dht.peerBook.has(provider.id)).to.equal(false) | ||
expect(provs).to.have.length(1) | ||
expect(provs[0].id).to.eql(sender.id.id) | ||
expect(dht.peerBook.has(sender.id)).to.equal(false) | ||
expect(provs[0].id).to.eql(provider.id.id) | ||
cb() | ||
@@ -116,0 +119,0 @@ } |
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
253766
7373