http2: support net.Server options
Make `http2.createServer()` support `net.Server` options. PR-URL: https://github.com/nodejs/node/pull/27782 Reviewed-By: Colin Ihrig <cjihrig@gmail.com> Reviewed-By: Yongsheng Zhang <zyszys98@gmail.com> Reviewed-By: Rich Trott <rtrott@gmail.com> Reviewed-By: Ruben Bridgewater <ruben@bridgewater.de> Reviewed-By: Anna Henningsen <anna@addaleax.net> Reviewed-By: Trivikram Kamat <trivikr.dev@gmail.com>
This commit is contained in:
parent
d2cabee64c
commit
165916b1f3
@ -1912,6 +1912,10 @@ error will be thrown.
|
|||||||
<!-- YAML
|
<!-- YAML
|
||||||
added: v8.4.0
|
added: v8.4.0
|
||||||
changes:
|
changes:
|
||||||
|
- version: REPLACEME
|
||||||
|
pr-url: https://github.com/nodejs/node/pull/27782
|
||||||
|
description: The `options` parameter now supports `net.createServer()`
|
||||||
|
options.
|
||||||
- version: v8.9.3
|
- version: v8.9.3
|
||||||
pr-url: https://github.com/nodejs/node/pull/17105
|
pr-url: https://github.com/nodejs/node/pull/17105
|
||||||
description: Added the `maxOutstandingPings` option with a default limit of
|
description: Added the `maxOutstandingPings` option with a default limit of
|
||||||
@ -1987,6 +1991,7 @@ changes:
|
|||||||
`Http2ServerResponse` class to use.
|
`Http2ServerResponse` class to use.
|
||||||
Useful for extending the original `Http2ServerResponse`.
|
Useful for extending the original `Http2ServerResponse`.
|
||||||
**Default:** `Http2ServerResponse`.
|
**Default:** `Http2ServerResponse`.
|
||||||
|
* ...: Any [`net.createServer()`][] option can be provided.
|
||||||
* `onRequestHandler` {Function} See [Compatibility API][]
|
* `onRequestHandler` {Function} See [Compatibility API][]
|
||||||
* Returns: {Http2Server}
|
* Returns: {Http2Server}
|
||||||
|
|
||||||
@ -3466,6 +3471,7 @@ following additional properties:
|
|||||||
[`http2.createServer()`]: #http2_http2_createserver_options_onrequesthandler
|
[`http2.createServer()`]: #http2_http2_createserver_options_onrequesthandler
|
||||||
[`http2session.close()`]: #http2_http2session_close_callback
|
[`http2session.close()`]: #http2_http2session_close_callback
|
||||||
[`http2stream.pushStream()`]: #http2_http2stream_pushstream_headers_options_callback
|
[`http2stream.pushStream()`]: #http2_http2stream_pushstream_headers_options_callback
|
||||||
|
[`net.createServer()`]: net.html#net_net_createserver_options_connectionlistener
|
||||||
[`net.Server.close()`]: net.html#net_server_close_callback
|
[`net.Server.close()`]: net.html#net_server_close_callback
|
||||||
[`net.Socket.bufferSize`]: net.html#net_socket_buffersize
|
[`net.Socket.bufferSize`]: net.html#net_socket_buffersize
|
||||||
[`net.Socket.prototype.ref()`]: net.html#net_socket_ref
|
[`net.Socket.prototype.ref()`]: net.html#net_socket_ref
|
||||||
|
@ -2697,8 +2697,9 @@ class Http2SecureServer extends TLSServer {
|
|||||||
|
|
||||||
class Http2Server extends NETServer {
|
class Http2Server extends NETServer {
|
||||||
constructor(options, requestListener) {
|
constructor(options, requestListener) {
|
||||||
super(connectionListener);
|
options = initializeOptions(options);
|
||||||
this[kOptions] = initializeOptions(options);
|
super(options, connectionListener);
|
||||||
|
this[kOptions] = options;
|
||||||
this.timeout = 0;
|
this.timeout = 0;
|
||||||
this.on('newListener', setupCompat);
|
this.on('newListener', setupCompat);
|
||||||
if (typeof requestListener === 'function')
|
if (typeof requestListener === 'function')
|
||||||
|
@ -10,6 +10,7 @@ const commonFixtures = require('../common/fixtures');
|
|||||||
if (!common.hasCrypto)
|
if (!common.hasCrypto)
|
||||||
common.skip('missing crypto');
|
common.skip('missing crypto');
|
||||||
|
|
||||||
|
const assert = require('assert');
|
||||||
const http2 = require('http2');
|
const http2 = require('http2');
|
||||||
const tls = require('tls');
|
const tls = require('tls');
|
||||||
const net = require('net');
|
const net = require('net');
|
||||||
@ -48,6 +49,25 @@ server.on('error', common.mustNotCall());
|
|||||||
}));
|
}));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Test that `http2.createServer()` supports `net.Server` options.
|
||||||
|
{
|
||||||
|
const server = http2.createServer({ allowHalfOpen: true });
|
||||||
|
|
||||||
|
server.on('connection', common.mustCall((socket) => {
|
||||||
|
assert.strictEqual(socket.allowHalfOpen, true);
|
||||||
|
socket.end();
|
||||||
|
server.close();
|
||||||
|
}));
|
||||||
|
|
||||||
|
assert.strictEqual(server.allowHalfOpen, true);
|
||||||
|
|
||||||
|
server.listen(0, common.mustCall(() => {
|
||||||
|
const port = server.address().port;
|
||||||
|
const socket = net.connect(port, common.mustCall());
|
||||||
|
socket.resume();
|
||||||
|
}));
|
||||||
|
}
|
||||||
|
|
||||||
// Test the secure server socket timeout.
|
// Test the secure server socket timeout.
|
||||||
{
|
{
|
||||||
let client;
|
let client;
|
||||||
@ -67,3 +87,29 @@ server.on('error', common.mustNotCall());
|
|||||||
}, common.mustCall());
|
}, common.mustCall());
|
||||||
}));
|
}));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Test that `http2.createSecureServer()` supports `net.Server` options.
|
||||||
|
{
|
||||||
|
const server = http2.createSecureServer({
|
||||||
|
allowHalfOpen: true,
|
||||||
|
...options
|
||||||
|
});
|
||||||
|
|
||||||
|
server.on('secureConnection', common.mustCall((socket) => {
|
||||||
|
assert.strictEqual(socket.allowHalfOpen, true);
|
||||||
|
socket.end();
|
||||||
|
server.close();
|
||||||
|
}));
|
||||||
|
|
||||||
|
assert.strictEqual(server.allowHalfOpen, true);
|
||||||
|
|
||||||
|
server.listen(0, common.mustCall(() => {
|
||||||
|
const port = server.address().port;
|
||||||
|
const socket = tls.connect({
|
||||||
|
port: port,
|
||||||
|
rejectUnauthorized: false,
|
||||||
|
ALPNProtocols: ['h2']
|
||||||
|
}, common.mustCall());
|
||||||
|
socket.resume();
|
||||||
|
}));
|
||||||
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user