From f2aa0b0f38ae578b1351b78222178839b23bd4fe Mon Sep 17 00:00:00 2001 From: silverwind Date: Sat, 24 Nov 2018 23:33:10 +0100 Subject: [PATCH] fix case of unknown service port lookup - fixes #31 --- index.js | 7 ++++--- test.js | 6 +++++- 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/index.js b/index.js index ad32882..ed0ee52 100644 --- a/index.js +++ b/index.js @@ -6,7 +6,7 @@ const got = require('got'); const isPortReachable = require('is-port-reachable'); const pAny = require('p-any'); const pify = require('pify'); -const pn = require('port-numbers'); +const portNumbers = require('port-numbers'); const pTimeout = require('p-timeout'); const prependHttp = require('prepend-http'); const routerIps = require('router-ips'); @@ -21,10 +21,11 @@ const checkRedirection = target => { function isTargetReachable(target) { const url = new URL(prependHttp(target)); - url.port = Number(url.port) || pn.getPort(url.protocol.slice(0, -1)).port || 80; + url.port = Number(url.port) || portNumbers.getPort(url.protocol.slice(0, -1)).port || 80; if (!/^[a-z]+:\/\//.test(target)) { - url.protocol = pn.getService(url.port).name + ':'; + const service = portNumbers.getService(url.port); + url.protocol = ((service && service.name) ? service.name : 'unknown') + ':'; } return getAddress(url.hostname).then(address => { diff --git a/test.js b/test.js index 5a2ec2e..fd61aeb 100644 --- a/test.js +++ b/test.js @@ -32,7 +32,11 @@ test('ftp url', async t => { }); test('unreachable hostname', async t => { - t.false(await m('343645335341233123125235623452344123.com')); + t.false(await m('343645335341233123125235623452344123.local')); +}); + +test('unknown service', async t => { + t.false(await m('343645335341233123125235623452344123.local:-1')); }); test('unreachable pathname', async t => {