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
|
||||
added: v8.4.0
|
||||
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
|
||||
pr-url: https://github.com/nodejs/node/pull/17105
|
||||
description: Added the `maxOutstandingPings` option with a default limit of
|
||||
@ -1987,6 +1991,7 @@ changes:
|
||||
`Http2ServerResponse` class to use.
|
||||
Useful for extending the original `Http2ServerResponse`.
|
||||
**Default:** `Http2ServerResponse`.
|
||||
* ...: Any [`net.createServer()`][] option can be provided.
|
||||
* `onRequestHandler` {Function} See [Compatibility API][]
|
||||
* Returns: {Http2Server}
|
||||
|
||||
@ -3466,6 +3471,7 @@ following additional properties:
|
||||
[`http2.createServer()`]: #http2_http2_createserver_options_onrequesthandler
|
||||
[`http2session.close()`]: #http2_http2session_close_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.Socket.bufferSize`]: net.html#net_socket_buffersize
|
||||
[`net.Socket.prototype.ref()`]: net.html#net_socket_ref
|
||||
|
@ -2697,8 +2697,9 @@ class Http2SecureServer extends TLSServer {
|
||||
|
||||
class Http2Server extends NETServer {
|
||||
constructor(options, requestListener) {
|
||||
super(connectionListener);
|
||||
this[kOptions] = initializeOptions(options);
|
||||
options = initializeOptions(options);
|
||||
super(options, connectionListener);
|
||||
this[kOptions] = options;
|
||||
this.timeout = 0;
|
||||
this.on('newListener', setupCompat);
|
||||
if (typeof requestListener === 'function')
|
||||
|
@ -10,6 +10,7 @@ const commonFixtures = require('../common/fixtures');
|
||||
if (!common.hasCrypto)
|
||||
common.skip('missing crypto');
|
||||
|
||||
const assert = require('assert');
|
||||
const http2 = require('http2');
|
||||
const tls = require('tls');
|
||||
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.
|
||||
{
|
||||
let client;
|
||||
@ -67,3 +87,29 @@ server.on('error', common.mustNotCall());
|
||||
}, 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