diff --git a/docs/changes.xml b/docs/changes.xml index 428da0ba..a3549697 100644 --- a/docs/changes.xml +++ b/docs/changes.xml @@ -53,6 +53,12 @@ NGINX Unit updated to 1.32.0. + + +http.createServer() now accepts "options" argument introduced in Node.js v9.6.0, v8.12.0. + + + conditional access logging. diff --git a/src/nodejs/unit-http/http.js b/src/nodejs/unit-http/http.js index d298a35f..60b8004f 100644 --- a/src/nodejs/unit-http/http.js +++ b/src/nodejs/unit-http/http.js @@ -11,8 +11,8 @@ const { ServerResponse, } = require('./http_server'); -function createServer (requestHandler) { - return new Server(requestHandler); +function createServer (options, requestHandler) { + return new Server(options, requestHandler); } const http = require("http") diff --git a/src/nodejs/unit-http/http_server.js b/src/nodejs/unit-http/http_server.js index 8eb13d7f..b78f309a 100644 --- a/src/nodejs/unit-http/http_server.js +++ b/src/nodejs/unit-http/http_server.js @@ -5,6 +5,7 @@ 'use strict'; +const { stderr } = require('process'); const EventEmitter = require('events'); const http = require('http'); const util = require('util'); @@ -413,7 +414,14 @@ ServerRequest.prototype._read = function _read(n) { }; -function Server(requestListener) { +function Server(options, requestListener) { + if (typeof options === 'function') { + requestListener = options; + options = {}; + } else { + stderr.write("http.Server constructor was called with unsupported options, using default settings\n"); + } + EventEmitter.call(this); this.unit = new unit_lib.Unit(); diff --git a/test/node/options/app.js b/test/node/options/app.js new file mode 100644 index 00000000..bc538080 --- /dev/null +++ b/test/node/options/app.js @@ -0,0 +1,4 @@ +require('http').createServer({}, function (req, res) { + res.writeHead(200, {'Content-Length': 12, 'Content-Type': 'text/plain'}) + .end('Hello World\n'); +}).listen(8080); diff --git a/test/test_node_application.py b/test/test_node_application.py index cb775210..88ae3136 100644 --- a/test/test_node_application.py +++ b/test/test_node_application.py @@ -21,6 +21,12 @@ def test_node_application_basic(): assert_basic_application() +def test_node_application_options(wait_for_record): + client.load('options') + + assert_basic_application() + assert wait_for_record(r'constructor was called with unsupported') is not None + def test_node_application_loader_unit_http(): client.load('loader/unit_http')