net: type check createServer options object

net.createServer('aPipe') and net.createServer(8080) are mistakes,
and now throw a TypeError instead of silently being treated as an
object.

PR-URL: https://github.com/nodejs/node/pull/2904
Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
Reviewed-By: Evan Lucas <evanlucas@me.com>
Reviewed-By: Benjamin Gruenbaum <benjamingr@gmail.com>
This commit is contained in:
Sam Roberts 2015-09-13 19:49:35 -07:00 committed by Benjamin Gruenbaum
parent b801e39266
commit a78b3344f8
2 changed files with 10 additions and 1 deletions

View File

@ -1090,12 +1090,14 @@ function Server(options, connectionListener) {
connectionListener = options;
options = {};
self.on('connection', connectionListener);
} else {
} else if (options == null || typeof options === 'object') {
options = options || {};
if (typeof connectionListener === 'function') {
self.on('connection', connectionListener);
}
} else {
throw new TypeError('options must be an object');
}
this._connections = 0;

View File

@ -0,0 +1,7 @@
'use strict';
const common = require('../common');
const assert = require('assert');
const net = require('net');
assert.throws(function() { net.createServer('path'); }, TypeError);
assert.throws(function() { net.createServer(common.PORT); }, TypeError);