From c9b05dafe09eb127bb006f7d71cce2f790bcad1c Mon Sep 17 00:00:00 2001 From: Evan Lucas Date: Tue, 26 Jan 2016 08:12:41 -0600 Subject: [PATCH] net: move isLegalPort to internal/net isLegalPort can be used in more places than just net.js. This change moves it to a new internal net module in preparation for using it in the dns module. PR-URL: https://github.com/nodejs/node/pull/4882 Reviewed-By: Colin Ihrig Reviewed-By: Ben Noordhuis Reviewed-By: James M Snell Reviewed-By: Sakthipriyan Vairamani --- lib/internal/net.js | 11 +++++++++++ lib/net.js | 11 ++--------- node.gyp | 1 + test/parallel/test-net-internal.js | 15 +++++++++++++++ 4 files changed, 29 insertions(+), 9 deletions(-) create mode 100644 lib/internal/net.js create mode 100644 test/parallel/test-net-internal.js diff --git a/lib/internal/net.js b/lib/internal/net.js new file mode 100644 index 00000000000000..effc6485d25011 --- /dev/null +++ b/lib/internal/net.js @@ -0,0 +1,11 @@ +'use strict'; + +module.exports = { isLegalPort }; + +// Check that the port number is not NaN when coerced to a number, +// is an integer and that it falls within the legal range of port numbers. +function isLegalPort(port) { + if (typeof port === 'string' && port.trim() === '') + return false; + return +port === (port >>> 0) && port >= 0 && port <= 0xFFFF; +} diff --git a/lib/net.js b/lib/net.js index d4d9abb38cebd6..be3dc145546edb 100644 --- a/lib/net.js +++ b/lib/net.js @@ -5,6 +5,7 @@ const stream = require('stream'); const timers = require('timers'); const util = require('util'); const internalUtil = require('internal/util'); +const internalNet = require('internal/net'); const assert = require('assert'); const cares = process.binding('cares_wrap'); const uv = process.binding('uv'); @@ -22,6 +23,7 @@ const WriteWrap = process.binding('stream_wrap').WriteWrap; var cluster; const errnoException = util._errnoException; const exceptionWithHostPort = util._exceptionWithHostPort; +const isLegalPort = internalNet.isLegalPort; function noop() {} @@ -846,15 +848,6 @@ function connect(self, address, port, addressType, localAddress, localPort) { } -// Check that the port number is not NaN when coerced to a number, -// is an integer and that it falls within the legal range of port numbers. -function isLegalPort(port) { - if (typeof port === 'string' && port.trim() === '') - return false; - return +port === (port >>> 0) && port >= 0 && port <= 0xFFFF; -} - - Socket.prototype.connect = function(options, cb) { if (this.write !== Socket.prototype.write) this.write = Socket.prototype.write; diff --git a/node.gyp b/node.gyp index c59e8fec36df54..70002c987c0977 100644 --- a/node.gyp +++ b/node.gyp @@ -74,6 +74,7 @@ 'lib/internal/cluster.js', 'lib/internal/freelist.js', 'lib/internal/linkedlist.js', + 'lib/internal/net.js', 'lib/internal/module.js', 'lib/internal/repl.js', 'lib/internal/socket_list.js', diff --git a/test/parallel/test-net-internal.js b/test/parallel/test-net-internal.js new file mode 100644 index 00000000000000..b59b92d0fb2b94 --- /dev/null +++ b/test/parallel/test-net-internal.js @@ -0,0 +1,15 @@ +'use strict'; + +// Flags: --expose-internals + +require('../common'); +const assert = require('assert'); +const net = require('internal/net'); + +assert.strictEqual(net.isLegalPort(''), false); +assert.strictEqual(net.isLegalPort('0'), true); +assert.strictEqual(net.isLegalPort(0), true); +assert.strictEqual(net.isLegalPort(65536), false); +assert.strictEqual(net.isLegalPort('65535'), true); +assert.strictEqual(net.isLegalPort(undefined), false); +assert.strictEqual(net.isLegalPort(null), true);