diff --git a/src/core/components/bootstrap.js b/src/core/components/bootstrap.js index 559f8e05b3..3d816ac946 100644 --- a/src/core/components/bootstrap.js +++ b/src/core/components/bootstrap.js @@ -1,24 +1,21 @@ 'use strict' const defaultNodes = require('../runtime/config-nodejs.json').Bootstrap -const Multiaddr = require('multiaddr') +const isMultiaddr = require('mafmt').IPFS.matches const promisify = require('promisify-es6') -function isValid (ma) { - if (typeof ma === 'string') { - try { - ma = new Multiaddr(ma) - return Boolean(ma) - } catch (err) { - return false - } - } else if (ma) { - return Multiaddr.isMultiaddr(ma) - } else { +function isValidMultiaddr (ma) { + try { + return isMultiaddr(ma) + } catch (err) { return false } } +function invalidMultiaddrError (ma) { + return new Error(`${ma} is not a valid Multiaddr`) +} + module.exports = function bootstrap (self) { return { list: promisify((callback) => { @@ -35,8 +32,8 @@ module.exports = function bootstrap (self) { args = { default: false } } - if (multiaddr && !isValid(multiaddr)) { - return setImmediate(() => callback(new Error('Not valid multiaddr'))) + if (multiaddr && !isValidMultiaddr(multiaddr)) { + return setImmediate(() => callback(invalidMultiaddrError(multiaddr))) } self._repo.config.get((err, config) => { @@ -64,8 +61,8 @@ module.exports = function bootstrap (self) { callback = args args = {all: false} } - if (multiaddr && !isValid(multiaddr)) { - return setImmediate(() => callback(new Error('Not valid multiaddr'))) + if (multiaddr && !isValidMultiaddr(multiaddr)) { + return setImmediate(() => callback(invalidMultiaddrError(multiaddr))) } self._repo.config.get((err, config) => { diff --git a/test/core/bootstrap.spec.js b/test/core/bootstrap.spec.js index 698af528b4..dd780ce8fd 100644 --- a/test/core/bootstrap.spec.js +++ b/test/core/bootstrap.spec.js @@ -115,4 +115,13 @@ describe('bootstrap', () => { }) }) }) + + it('fails if passing in a invalid multiaddr', (done) => { + node.bootstrap.add('/funky/invalid/multiaddr', (err, res) => { + expect(err).to.match(/not a valid Multiaddr/) + expect(err).to.match(/funky/) + expect(res).to.not.exist() + done() + }) + }) })