Skip to content

Commit

Permalink
use kEmptyObject for options and apply same change to https.server
Browse files Browse the repository at this point in the history
  • Loading branch information
deokjinkim committed Jan 24, 2023
1 parent 882d62d commit ef3787f
Show file tree
Hide file tree
Showing 3 changed files with 28 additions and 16 deletions.
12 changes: 6 additions & 6 deletions lib/_http_server.js
Original file line number Diff line number Diff line change
Expand Up @@ -78,6 +78,9 @@ const {
ERR_INVALID_ARG_VALUE,
ERR_INVALID_CHAR
} = codes;
const {
kEmptyObject,
} = require('internal/util');
const {
validateInteger,
validateBoolean,
Expand Down Expand Up @@ -432,9 +435,6 @@ function storeHTTPOptions(options) {
validateBoolean(insecureHTTPParser, 'options.insecureHTTPParser');
this.insecureHTTPParser = insecureHTTPParser;

if (options.noDelay === undefined)
options.noDelay = true;

const requestTimeout = options.requestTimeout;
if (requestTimeout !== undefined) {
validateInteger(requestTimeout, 'requestTimeout', 0);
Expand Down Expand Up @@ -501,17 +501,17 @@ function Server(options, requestListener) {

if (typeof options === 'function') {
requestListener = options;
options = {};
options = kEmptyObject;
} else if (options == null) {
options = {};
options = kEmptyObject;
} else {
validateObject(options, 'options');
}

storeHTTPOptions.call(this, options);
net.Server.call(
this,
{ allowHalfOpen: true, noDelay: options.noDelay,
{ allowHalfOpen: true, noDelay: options.noDelay || true,
keepAlive: options.keepAlive,
keepAliveInitialDelay: options.keepAliveInitialDelay });

Expand Down
23 changes: 13 additions & 10 deletions lib/https.js
Original file line number Diff line number Diff line change
Expand Up @@ -53,25 +53,28 @@ let debug = require('internal/util/debuglog').debuglog('https', (fn) => {
debug = fn;
});
const { URL, urlToHttpOptions, searchParamsSymbol } = require('internal/url');
const { validateObject } = require('internal/validators');

function Server(opts, requestListener) {
if (!(this instanceof Server)) return new Server(opts, requestListener);

if (typeof opts === 'function') {
requestListener = opts;
opts = undefined;
}
opts = { ...opts };

if (!opts.ALPNProtocols) {
// http/1.0 is not defined as Protocol IDs in IANA
// https://www.iana.org/assignments/tls-extensiontype-values
// /tls-extensiontype-values.xhtml#alpn-protocol-ids
opts.ALPNProtocols = ['http/1.1'];
opts = kEmptyObject;
} else if (opts == null) {
opts = kEmptyObject;
} else {
validateObject(opts, 'options');
}

FunctionPrototypeCall(storeHTTPOptions, this, opts);
FunctionPrototypeCall(tls.Server, this, opts, _connectionListener);
FunctionPrototypeCall(tls.Server, this,
{ ...opts,
// http/1.0 is not defined as Protocol IDs in IANA
// https://www.iana.org/assignments/tls-extensiontype-values
// /tls-extensiontype-values.xhtml#alpn-protocol-ids
ALPNProtocols: opts.ALPNProtocols || ['http/1.1'] },
_connectionListener);

this.httpAllowHalfOpen = false;

Expand Down
9 changes: 9 additions & 0 deletions test/parallel/test-https-simple.js
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,15 @@ const serverCallback = common.mustCall(function(req, res) {
res.end(body);
});

const invalid_options = [ 'foo', 42, true, [] ];
invalid_options.forEach((option) => {
assert.throws(() => {
new https.Server(option);
}, {
code: 'ERR_INVALID_ARG_TYPE',
});
});

const server = https.createServer(options, serverCallback);

server.listen(0, common.mustCall(() => {
Expand Down

0 comments on commit ef3787f

Please sign in to comment.