-
Notifications
You must be signed in to change notification settings - Fork 29.7k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
HTTP/1 createServer() options to pass custom Request and Response classes #15752
Conversation
doc/api/http.md
Outdated
@@ -1720,10 +1720,17 @@ A collection of all the standard HTTP response status codes, and the | |||
short description of each. For example, `http.STATUS_CODES[404] === 'Not | |||
Found'`. | |||
|
|||
## http.createServer([requestListener]) | |||
## http.createServer([options][requestListener]) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Missing comma
doc/api/http.md
Outdated
<!-- YAML | ||
added: v0.1.13 | ||
--> | ||
- `options` {Object} | ||
* `IncomingMessage` {http.IncomingMessage} Specifies the IncomingMessage class to | ||
used. Useful for extending the original `IncomingMessage`. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Missing 'be' at the beginning?
doc/api/http.md
Outdated
* `IncomingMessage` {http.IncomingMessage} Specifies the IncomingMessage class to | ||
used. Useful for extending the original `IncomingMessage`. | ||
Defaults to: `Http2ServerRequest` | ||
* `ServerResponse` {htt.ServerResponse} Specifies the ServerResponse class to |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
s/htt.ServerResponse/http.ServerResponse/
doc/api/http.md
Outdated
used. Useful for extending the original `IncomingMessage`. | ||
Defaults to: `Http2ServerRequest` | ||
* `ServerResponse` {htt.ServerResponse} Specifies the ServerResponse class to | ||
used. Useful for extending the original `ServerResponse`. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Ditto about missing 'be'
doc/api/http.md
Outdated
- `options` {Object} | ||
* `IncomingMessage` {http.IncomingMessage} Specifies the IncomingMessage class to | ||
used. Useful for extending the original `IncomingMessage`. | ||
Defaults to: `Http2ServerRequest` |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I don't understand both of these defaults. This documentation is for http/1.x.
lib/_http_server.js
Outdated
|
||
function Server(requestListener) { | ||
if (!(this instanceof Server)) return new Server(requestListener); | ||
if (!(this instanceof Server)) return new Server(options, requestListener); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This should remain the first line to avoid executing the same code above twice in the case of no new
.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Don't we need to initialize options in the case of no new
?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@hekike yes but it can be done after that, see https.js
for example.
Have you ran the appropriate http1 benchmarks before and after these changes and compared the results? If so, what were your findings? |
doc/api/http.md
Outdated
* `IncomingMessage` {http.IncomingMessage} Specifies the IncomingMessage class to | ||
used. Useful for extending the original `IncomingMessage`. | ||
Defaults to: `Http2ServerRequest` | ||
* `ServerResponse` {htt.ServerResponse} Specifies the ServerResponse class to |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Typo: htt -> http
doc/api/http.md
Outdated
@@ -1720,10 +1720,17 @@ A collection of all the standard HTTP response status codes, and the | |||
short description of each. For example, `http.STATUS_CODES[404] === 'Not | |||
Found'`. | |||
|
|||
## http.createServer([requestListener]) | |||
## http.createServer([options][requestListener]) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Nit: missing comma, [options][, requestListener]
.
doc/api/http.md
Outdated
<!-- YAML | ||
added: v0.1.13 | ||
--> | ||
- `options` {Object} | ||
* `IncomingMessage` {http.IncomingMessage} Specifies the IncomingMessage class to | ||
used. Useful for extending the original `IncomingMessage`. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Typo: used -> use
doc/api/http.md
Outdated
used. Useful for extending the original `IncomingMessage`. | ||
Defaults to: `Http2ServerRequest` | ||
* `ServerResponse` {htt.ServerResponse} Specifies the ServerResponse class to | ||
used. Useful for extending the original `ServerResponse`. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Typo: used -> use
doc/api/http.md
Outdated
- `options` {Object} | ||
* `IncomingMessage` {http.IncomingMessage} Specifies the IncomingMessage class to | ||
used. Useful for extending the original `IncomingMessage`. | ||
Defaults to: `Http2ServerRequest` |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
It should be http.IncomingMessage
.
doc/api/http.md
Outdated
Defaults to: `Http2ServerRequest` | ||
* `ServerResponse` {htt.ServerResponse} Specifies the ServerResponse class to | ||
used. Useful for extending the original `ServerResponse`. | ||
Defaults to: `Http2ServerResponse` |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
It should be http.ServerResponse
.
@@ -52,7 +52,8 @@ See [`http.Server#keepAliveTimeout`][]. | |||
<!-- YAML | |||
added: v0.3.4 | |||
--> | |||
- `options` {Object} Accepts `options` from [`tls.createServer()`][] and [`tls.createSecureContext()`][]. | |||
- `options` {Object} Accepts `options` from [`tls.createServer()`][], | |||
[`tls.createSecureContext()`][] and [`http.createServer()`][]. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
We should add a link at the bottom for http.createServer()
.
lib/_http_server.js
Outdated
requestListener = options; | ||
options = {}; | ||
} else if (options == null || typeof options === 'object') { | ||
options = options || {}; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I would use util._extend()
or Object.assign()
like it's done in https.js
.
1353cd0
to
7e51e32
Compare
lib/_http_server.js
Outdated
@@ -560,7 +570,7 @@ function parserOnIncoming(server, socket, state, req, keepAlive) { | |||
} | |||
} | |||
|
|||
var res = new ServerResponse(req); | |||
var res = new socket.server.ServerResponse(req); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Could this just be server.ServerResponse(req)
instead of socket.server[...]
? The function seems to have an in-scope server
.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I tried but we don't have the server
here, only under the socket.server
:
Line 77 in 42a2a9b
parser.incoming = new IncomingMessage(parser.socket); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I could swear it's available
function parserOnIncoming(server, socket, state, req, keepAlive) {
resetSocketTimeout(server, socket, state);
It's being used a few places in that function to emit
, etc.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@hekike it's in the function definition, it should be populated. Can you update?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@mcollina @apapirovski thanks, fixed!
lib/_http_server.js
Outdated
} | ||
|
||
this.IncomingMessage = options.IncomingMessage || IncomingMessage; | ||
this.ServerResponse = options.ServerResponse || ServerResponse; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I don't have an answer to this but I would like to flag the fact that this means that IncomingMessage
& ServerResponse
can be altered on the fly, rather than solely through options. It's possible this isn't desirable and we should instead use Symbols, or maybe it is desirable and we should document it as such.
This is also strictly different than the proposed http2 implementation where those classes can't be modified on the fly as they're bound when a request listener is created.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I would actually prefer them to be symbols and be private, if there there are no performance regressions.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@apapirovski @mcollina please check out my latest commit, I made them private.
I'm going to split them into http1/2 commits after you reviewed it.
lib/_http_common.js
Outdated
@@ -74,7 +74,11 @@ function parserOnHeadersComplete(versionMajor, versionMinor, headers, method, | |||
parser._url = ''; | |||
} | |||
|
|||
parser.incoming = new IncomingMessage(parser.socket); | |||
// Parser is also used by http client | |||
var ParserIncomingMessage = parser.socket.server ? |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This a super minor nit but ideally we would check parser.socket.server !== null
. (We know that it's always either null
or a Server
.)
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I checked it and it can be undefined
, for example:
TypeError: Cannot read property 'IncomingMessage' of undefined
at HTTPParser.parserOnHeadersComplete (_http_common.js:79:26)
at TLSSocket.socketOnData (_http_client.js:437:20)
at emitOne (events.js:115:13)
at TLSSocket.emit (events.js:210:7)
at addChunk (_stream_readable.js:264:12)
at readableAddChunk (_stream_readable.js:251:11)
at TLSSocket.Readable.push (_stream_readable.js:209:10)
at TLSWrap.onread (net.js:591:20)
Command: out/Release/node /Users/pmarton/Documents/dev/node/test/parallel/test-async-wrap-GH13045.js
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks for checking!
@@ -0,0 +1,39 @@ | |||
'use strict'; | |||
const common = require('../common'); | |||
const fs = require('fs'); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Could you add (right after common is required):
if (!common.hasCrypto)
common.skip('missing crypto');
Thanks!
@@ -0,0 +1,35 @@ | |||
'use strict'; | |||
const common = require('../common'); | |||
const fs = require('fs'); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Same as above, could you add:
if (!common.hasCrypto)
common.skip('missing crypto');
Thanks!
Looks great overall! My comments are just super minor nits. Thanks for doing this work @hekike (and coming up with the solution in the first place)! |
e6d1f5c
to
c79af6a
Compare
@apapirovski I fixed your comments. Also, I realized that http2 fallback to http should take a place in this PR. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM
@hekike can you split the http2 bits into a separate commit, so we can backport the http1 bit easily? |
886a828
to
e0af1eb
Compare
@mcollina sure, done! |
e0af1eb
to
f75353c
Compare
|
||
const assert = require('assert'); | ||
const http = require('http'); | ||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
can you add a quick comment describing what this test is about?
This adds the Http1IncomingMessage and Http1ServerReponse options to http2.createServer(). Backport-PR-URL: #20456 PR-URL: #15752 Reviewed-By: Matteo Collina <matteo.collina@gmail.com> Reviewed-By: Anatoli Papirovski <apapirovski@mac.com> Reviewed-By: James M Snell <jasnell@gmail.com> Reviewed-By: Evan Lucas <evanlucas@me.com>
This adds the optional options argument to `http.createServer()`. It contains two options: the `IncomingMessage` and `ServerReponse` option. Backport-PR-URL: #20456 PR-URL: #15752 Reviewed-By: Matteo Collina <matteo.collina@gmail.com> Reviewed-By: Anatoli Papirovski <apapirovski@mac.com> Reviewed-By: James M Snell <jasnell@gmail.com> Reviewed-By: Evan Lucas <evanlucas@me.com>
This adds the Http1IncomingMessage and Http1ServerReponse options to http2.createServer(). Backport-PR-URL: #20456 PR-URL: #15752 Reviewed-By: Matteo Collina <matteo.collina@gmail.com> Reviewed-By: Anatoli Papirovski <apapirovski@mac.com> Reviewed-By: James M Snell <jasnell@gmail.com> Reviewed-By: Evan Lucas <evanlucas@me.com>
This adds the optional options argument to `http.createServer()`. It contains two options: the `IncomingMessage` and `ServerReponse` option. Backport-PR-URL: #20456 PR-URL: #15752 Reviewed-By: Matteo Collina <matteo.collina@gmail.com> Reviewed-By: Anatoli Papirovski <apapirovski@mac.com> Reviewed-By: James M Snell <jasnell@gmail.com> Reviewed-By: Evan Lucas <evanlucas@me.com>
This adds the Http1IncomingMessage and Http1ServerReponse options to http2.createServer(). Backport-PR-URL: #20456 PR-URL: #15752 Reviewed-By: Matteo Collina <matteo.collina@gmail.com> Reviewed-By: Anatoli Papirovski <apapirovski@mac.com> Reviewed-By: James M Snell <jasnell@gmail.com> Reviewed-By: Evan Lucas <evanlucas@me.com>
@nodejs/lts should we consider backporting to 8.x should come with #18605 |
This adds the optional options argument to `http.createServer()`. It contains two options: the `IncomingMessage` and `ServerReponse` option. Backport-PR-URL: #20456 PR-URL: #15752 Reviewed-By: Matteo Collina <matteo.collina@gmail.com> Reviewed-By: Anatoli Papirovski <apapirovski@mac.com> Reviewed-By: James M Snell <jasnell@gmail.com> Reviewed-By: Evan Lucas <evanlucas@me.com>
This adds the Http1IncomingMessage and Http1ServerReponse options to http2.createServer(). Backport-PR-URL: #20456 PR-URL: #15752 Reviewed-By: Matteo Collina <matteo.collina@gmail.com> Reviewed-By: Anatoli Papirovski <apapirovski@mac.com> Reviewed-By: James M Snell <jasnell@gmail.com> Reviewed-By: Evan Lucas <evanlucas@me.com>
Notable Changes: * async_hooks: - rename PromiseWrap.parentId (Ali Ijaz Sheikh) #18633 - remove runtime deprecation (Ali Ijaz Sheikh) #19517 - deprecate unsafe emit{Before,After} (Ali Ijaz Sheikh) #18513 * cluster: - add cwd to cluster.settings (cjihrig) #18399 - support windowsHide option for workers (Todd Wong) #17412 * crypto: - allow passing null as IV unless required (Tobias Nießen) #18644 * deps: - upgrade npm to 6.2.0 (Kat Marchán) #21592 - upgrade libuv to 1.19.2 (cjihrig) #18918 - Upgrade node-inspect to 1.11.5 (Jan Krems) #21055 * fs,net: - support as and as+ flags in stringToFlags() (Sarat Addepalli) #18801 - emit 'ready' for fs streams and sockets (Sameer Srivastava) #19408 * http, http2: - add options to http.createServer() (Peter Marton) #15752 - add 103 Early Hints status code (Yosuke Furukawa) #16644 - add http fallback options to .createServer (Peter Marton) #15752 * n-api: - take n-api out of experimental (Michael Dawson) #19262 * perf_hooks: - add warning when too many entries in the timeline (James M Snell) #18087 * src: - add public API for managing NodePlatform (Cheng Zhao) #16981 - allow --perf-(basic-)?prof in NODE\_OPTIONS (Leko) #17600 - node internals' postmortem metadata (Matheus Marchini) #14901 * tls: - expose Finished messages in TLSSocket (Anton Salikhmetov) #19102 * **trace_events**: - add file pattern cli option (Andreas Madsen) #18480 * util: - implement util.getSystemErrorName() (Joyee Cheung) #18186 PR-URL: #21593
Notable Changes: * async_hooks: - rename PromiseWrap.parentId (Ali Ijaz Sheikh) nodejs#18633 - remove runtime deprecation (Ali Ijaz Sheikh) nodejs#19517 - deprecate unsafe emit{Before,After} (Ali Ijaz Sheikh) nodejs#18513 * cluster: - add cwd to cluster.settings (cjihrig) nodejs#18399 - support windowsHide option for workers (Todd Wong) nodejs#17412 * crypto: - allow passing null as IV unless required (Tobias Nießen) nodejs#18644 * deps: - upgrade npm to 6.2.0 (Kat Marchán) nodejs#21592 - upgrade libuv to 1.19.2 (cjihrig) nodejs#18918 - Upgrade node-inspect to 1.11.5 (Jan Krems) nodejs#21055 * fs,net: - support as and as+ flags in stringToFlags() (Sarat Addepalli) nodejs#18801 - emit 'ready' for fs streams and sockets (Sameer Srivastava) nodejs#19408 * http, http2: - add options to http.createServer() (Peter Marton) nodejs#15752 - add 103 Early Hints status code (Yosuke Furukawa) nodejs#16644 - add http fallback options to .createServer (Peter Marton) nodejs#15752 * n-api: - take n-api out of experimental (Michael Dawson) nodejs#19262 * perf_hooks: - add warning when too many entries in the timeline (James M Snell) nodejs#18087 * src: - add public API for managing NodePlatform (Cheng Zhao) nodejs#16981 - allow --perf-(basic-)?prof in NODE\_OPTIONS (Leko) nodejs#17600 - node internals' postmortem metadata (Matheus Marchini) nodejs#14901 * tls: - expose Finished messages in TLSSocket (Anton Salikhmetov) nodejs#19102 * **trace_events**: - add file pattern cli option (Andreas Madsen) nodejs#18480 * util: - implement util.getSystemErrorName() (Joyee Cheung) nodejs#18186 PR-URL: nodejs#21593
Notable Changes: * async_hooks: - rename PromiseWrap.parentId (Ali Ijaz Sheikh) #18633 - remove runtime deprecation (Ali Ijaz Sheikh) #19517 - deprecate unsafe emit{Before,After} (Ali Ijaz Sheikh) #18513 * cluster: - add cwd to cluster.settings (cjihrig) #18399 - support windowsHide option for workers (Todd Wong) #17412 * crypto: - allow passing null as IV unless required (Tobias Nießen) #18644 * deps: - upgrade npm to 6.4.1 (Kat Marchán) #22591 - upgrade libuv to 1.19.2 (cjihrig) #18918 - Upgrade node-inspect to 1.11.5 (Jan Krems) #21055 * fs,net: - support as and as+ flags in stringToFlags() (Sarat Addepalli) #18801 - emit 'ready' for fs streams and sockets (Sameer Srivastava) #19408 * http, http2: - add options to http.createServer() (Peter Marton) #15752 - add 103 Early Hints status code (Yosuke Furukawa) #16644 - add http fallback options to .createServer (Peter Marton) #15752 * n-api: - take n-api out of experimental (Michael Dawson) #19262 * perf_hooks: - add warning when too many entries in the timeline (James M Snell) #18087 * src: - add public API for managing NodePlatform (Cheng Zhao) #16981 - allow --perf-(basic-)?prof in NODE\_OPTIONS (Leko) #17600 - node internals' postmortem metadata (Matheus Marchini) #14901 * tls: - expose Finished messages in TLSSocket (Anton Salikhmetov) #19102 * **trace_events**: - add file pattern cli option (Andreas Madsen) #18480 * util: - implement util.getSystemErrorName() (Joyee Cheung) #18186 PR-URL: #21593
Notable Changes: * async_hooks: - rename PromiseWrap.parentId (Ali Ijaz Sheikh) #18633 - remove runtime deprecation (Ali Ijaz Sheikh) #19517 - deprecate unsafe emit{Before,After} (Ali Ijaz Sheikh) #18513 * cluster: - add cwd to cluster.settings (cjihrig) #18399 - support windowsHide option for workers (Todd Wong) #17412 * crypto: - allow passing null as IV unless required (Tobias Nießen) #18644 * deps: - upgrade npm to 6.2.0 (Kat Marchán) #21592 - upgrade libuv to 1.19.2 (cjihrig) #18918 - Upgrade node-inspect to 1.11.5 (Jan Krems) #21055 * fs,net: - support as and as+ flags in stringToFlags() (Sarat Addepalli) #18801 - emit 'ready' for fs streams and sockets (Sameer Srivastava) #19408 * http, http2: - add options to http.createServer() (Peter Marton) #15752 - add 103 Early Hints status code (Yosuke Furukawa) #16644 - add http fallback options to .createServer (Peter Marton) #15752 * n-api: - take n-api out of experimental (Michael Dawson) #19262 * perf_hooks: - add warning when too many entries in the timeline (James M Snell) #18087 * src: - add public API for managing NodePlatform (Cheng Zhao) #16981 - allow --perf-(basic-)?prof in NODE\_OPTIONS (Leko) #17600 - node internals' postmortem metadata (Matheus Marchini) #14901 * tls: - expose Finished messages in TLSSocket (Anton Salikhmetov) #19102 * **trace_events**: - add file pattern cli option (Andreas Madsen) #18480 * util: - implement util.getSystemErrorName() (Joyee Cheung) #18186 PR-URL: #21593
Notable Changes: * async_hooks: - rename PromiseWrap.parentId (Ali Ijaz Sheikh) #18633 - remove runtime deprecation (Ali Ijaz Sheikh) #19517 - deprecate unsafe emit{Before,After} (Ali Ijaz Sheikh) #18513 * cluster: - add cwd to cluster.settings (cjihrig) #18399 - support windowsHide option for workers (Todd Wong) #17412 * crypto: - allow passing null as IV unless required (Tobias Nießen) #18644 * deps: - upgrade npm to 6.2.0 (Kat Marchán) #21592 - upgrade libuv to 1.19.2 (cjihrig) #18918 - Upgrade node-inspect to 1.11.5 (Jan Krems) #21055 * fs,net: - support as and as+ flags in stringToFlags() (Sarat Addepalli) #18801 - emit 'ready' for fs streams and sockets (Sameer Srivastava) #19408 * http, http2: - add options to http.createServer() (Peter Marton) #15752 - add 103 Early Hints status code (Yosuke Furukawa) #16644 - add http fallback options to .createServer (Peter Marton) #15752 * n-api: - take n-api out of experimental (Michael Dawson) #19262 * perf_hooks: - add warning when too many entries in the timeline (James M Snell) #18087 * src: - add public API for managing NodePlatform (Cheng Zhao) #16981 - allow --perf-(basic-)?prof in NODE\_OPTIONS (Leko) #17600 - node internals' postmortem metadata (Matheus Marchini) #14901 * tls: - expose Finished messages in TLSSocket (Anton Salikhmetov) #19102 * **trace_events**: - add file pattern cli option (Andreas Madsen) #18480 * util: - implement util.getSystemErrorName() (Joyee Cheung) #18186 PR-URL: #21593
Notable Changes: * async_hooks: - rename PromiseWrap.parentId (Ali Ijaz Sheikh) #18633 - remove runtime deprecation (Ali Ijaz Sheikh) #19517 - deprecate unsafe emit{Before,After} (Ali Ijaz Sheikh) #18513 * cluster: - add cwd to cluster.settings (cjihrig) #18399 - support windowsHide option for workers (Todd Wong) #17412 * crypto: - allow passing null as IV unless required (Tobias Nießen) #18644 * deps: - upgrade npm to 6.2.0 (Kat Marchán) #21592 - upgrade libuv to 1.19.2 (cjihrig) #18918 - Upgrade node-inspect to 1.11.5 (Jan Krems) #21055 * fs,net: - support as and as+ flags in stringToFlags() (Sarat Addepalli) #18801 - emit 'ready' for fs streams and sockets (Sameer Srivastava) #19408 * http, http2: - add options to http.createServer() (Peter Marton) #15752 - add 103 Early Hints status code (Yosuke Furukawa) #16644 - add http fallback options to .createServer (Peter Marton) #15752 * n-api: - take n-api out of experimental (Michael Dawson) #19262 * perf_hooks: - add warning when too many entries in the timeline (James M Snell) #18087 * src: - add public API for managing NodePlatform (Cheng Zhao) #16981 - allow --perf-(basic-)?prof in NODE\_OPTIONS (Leko) #17600 - node internals' postmortem metadata (Matheus Marchini) #14901 * tls: - expose Finished messages in TLSSocket (Anton Salikhmetov) #19102 * **trace_events**: - add file pattern cli option (Andreas Madsen) #18480 * util: - implement util.getSystemErrorName() (Joyee Cheung) #18186 PR-URL: #21593
8.12 Changelog https://github.com/nodejs/node/blob/master/doc/changelogs/CHANGELOG_V8.md#8.12.0 Specifically [01dc646] - http: add options to http.createServer() nodejs#15752
8.12 Changelog https://github.com/nodejs/node/blob/master/doc/changelogs/CHANGELOG_V8.md#8.12.0 Specifically [01dc646] - http: add options to http.createServer() #15752 PR-URL: #25001 Reviewed-By: Luigi Pinca <luigipinca@gmail.com> Reviewed-By: Vse Mozhet Byt <vsemozhetbyt@gmail.com>
8.12 Changelog https://github.com/nodejs/node/blob/master/doc/changelogs/CHANGELOG_V8.md#8.12.0 Specifically [01dc646] - http: add options to http.createServer() #15752 PR-URL: #25001 Reviewed-By: Luigi Pinca <luigipinca@gmail.com> Reviewed-By: Vse Mozhet Byt <vsemozhetbyt@gmail.com>
8.12 Changelog https://github.com/nodejs/node/blob/master/doc/changelogs/CHANGELOG_V8.md#8.12.0 Specifically [01dc646] - http: add options to http.createServer() #15752 PR-URL: #25001 Reviewed-By: Luigi Pinca <luigipinca@gmail.com> Reviewed-By: Vse Mozhet Byt <vsemozhetbyt@gmail.com>
Checklist
make -j4 test
(UNIX), orvcbuild test
(Windows) passesAffected core subsystem(s)
http
https
http2
(http
fallback)Related PR