diff --git a/README.md b/README.md index 9d003aacd3..ccaefe0b0a 100644 --- a/README.md +++ b/README.md @@ -340,6 +340,7 @@ You can see the bundle in action in the [custom libp2p example](examples/custom- - `peerDiscovery` (Array<[libp2p.PeerDiscovery](https://github.com/libp2p/interface-peer-discovery)>): An array of Libp2p peer discovery classes/instances to use _instead_ of the defaults. See [libp2p/peer-discovery](https://github.com/libp2p/interface-peer-discovery) for details. If passing a class, configuration can be passed using the config section below under the key corresponding to you module's unique `tag` (a static property on the class) - `config` (object): - `peerDiscovery` (object): + - `autoDial` (boolean): Dial to discovered peers when under the Connection Manager min peer count watermark. (default `true`) - `[PeerDiscovery.tag]` (object): configuration for a peer discovery module - `enabled` (boolean): whether this module is enabled or disabled - `[custom config]` (any): other keys are specific to the module diff --git a/package.json b/package.json index 242fff2c13..64fecd1c65 100644 --- a/package.json +++ b/package.json @@ -127,7 +127,7 @@ "joi": "^14.3.0", "just-flatten-it": "^2.1.0", "just-safe-set": "^2.1.0", - "libp2p": "~0.25.0-rc.5", + "libp2p": "~0.25.0-rc.6", "libp2p-bootstrap": "~0.9.3", "libp2p-crypto": "~0.16.0", "libp2p-kad-dht": "~0.14.12", diff --git a/src/core/components/libp2p.js b/src/core/components/libp2p.js index 05cb693ba5..447205a147 100644 --- a/src/core/components/libp2p.js +++ b/src/core/components/libp2p.js @@ -17,15 +17,6 @@ module.exports = function libp2p (self, config) { const peerInfo = self._peerInfo const peerBook = self._peerInfoBook const libp2p = createBundle({ options, config, datastore, peerInfo, peerBook }) - let discoveredPeers = [] - - const noop = () => {} - const putAndDial = peerInfo => { - peerInfo = peerBook.put(peerInfo) - if (!peerInfo.isConnected()) { - libp2p.dial(peerInfo, noop) - } - } libp2p.on('stop', () => { // Clear our addresses so we can start clean @@ -36,16 +27,6 @@ module.exports = function libp2p (self, config) { peerInfo.multiaddrs.forEach((ma) => { self._print('Swarm listening on', ma.toString()) }) - discoveredPeers.forEach(putAndDial) - discoveredPeers = [] - }) - - libp2p.on('peer:discovery', (peerInfo) => { - if (self.isOnline()) { - putAndDial(peerInfo) - } else { - discoveredPeers.push(peerInfo) - } }) libp2p.on('peer:connect', peerInfo => peerBook.put(peerInfo)) @@ -108,7 +89,6 @@ function defaultBundle ({ datastore, peerInfo, peerBook, options, config }) { } const libp2pOptions = mergeOptions(libp2pDefaults, get(options, 'libp2p', {})) - // Required inline to reduce startup time // Note: libp2p-nodejs gets replaced by libp2p-browser when webpacked/browserified const Node = require('../runtime/libp2p-nodejs') diff --git a/src/core/runtime/libp2p-browser.js b/src/core/runtime/libp2p-browser.js index 19fe27398b..8dfdd0dfcb 100644 --- a/src/core/runtime/libp2p-browser.js +++ b/src/core/runtime/libp2p-browser.js @@ -43,6 +43,7 @@ class Node extends libp2p { }, config: { peerDiscovery: { + autoDial: true, bootstrap: { enabled: true }, diff --git a/src/core/runtime/libp2p-nodejs.js b/src/core/runtime/libp2p-nodejs.js index 21e709b0f2..4a4bee2f3e 100644 --- a/src/core/runtime/libp2p-nodejs.js +++ b/src/core/runtime/libp2p-nodejs.js @@ -42,6 +42,7 @@ class Node extends libp2p { }, config: { peerDiscovery: { + autoDial: true, mdns: { enabled: true }, diff --git a/test/cli/daemon.js b/test/cli/daemon.js index afebfbbc41..c7639b21ab 100644 --- a/test/cli/daemon.js +++ b/test/cli/daemon.js @@ -109,7 +109,7 @@ describe('daemon', () => { await ipfs('config', 'Addresses.API', JSON.stringify(apiAddrs), '--json') await ipfs('config', 'Addresses.Gateway', JSON.stringify(gatewayAddrs), '--json') - const out = await new Promise(resolve => { + const out = await new Promise((resolve, reject) => { const res = ipfs('daemon') let out = '' @@ -117,8 +117,9 @@ describe('daemon', () => { out += data if (out.includes('Daemon is ready')) { res.stdout.removeListener('data', onData) + const onKilled = () => resolve(out) + res.then(onKilled).catch(onKilled) res.kill() - resolve(out) } }) }) @@ -134,7 +135,7 @@ describe('daemon', () => { await ipfs('config', 'Addresses.API', '[]', '--json') await ipfs('config', 'Addresses.Gateway', '[]', '--json') - const out = await new Promise(resolve => { + const out = await new Promise((resolve, reject) => { const res = ipfs('daemon') let out = '' @@ -142,8 +143,9 @@ describe('daemon', () => { out += data if (out.includes('Daemon is ready')) { res.stdout.removeListener('data', onData) + const onKilled = () => resolve(out) + res.then(onKilled).catch(onKilled) res.kill() - resolve(out) } }) }) diff --git a/test/core/libp2p.spec.js b/test/core/libp2p.spec.js index c77709c9ee..1fa19cf3f5 100644 --- a/test/core/libp2p.spec.js +++ b/test/core/libp2p.spec.js @@ -106,7 +106,9 @@ describe('libp2p customization', function () { _libp2p.start((err) => { expect(err).to.not.exist() - expect(_libp2p._config).to.not.have.property('peerDiscovery') + expect(_libp2p._config.peerDiscovery).to.eql({ + autoDial: true + }) expect(_libp2p._transport).to.have.length(1) done() }) @@ -130,6 +132,7 @@ describe('libp2p customization', function () { expect(err).to.not.exist() expect(_libp2p._config).to.deep.include({ peerDiscovery: { + autoDial: true, bootstrap: { enabled: true, list: [] @@ -193,6 +196,7 @@ describe('libp2p customization', function () { expect(err).to.not.exist() expect(_libp2p._config).to.deep.include({ peerDiscovery: { + autoDial: true, bootstrap: { enabled: true, list: []