From 6bf5a1d691291cdfcc4941e68f00d0003e565476 Mon Sep 17 00:00:00 2001 From: Anna Henningsen Date: Thu, 21 Nov 2019 00:00:43 +0100 Subject: http: make maximum header size configurable per-stream or per-server Make `maxHeaderSize` a.k.a. `--max-header-size` configurable now that the legacy parser is gone (which only supported a single global value). Refs: https://github.com/nodejs/node/pull/30567 PR-URL: https://github.com/nodejs/node/pull/30570 Reviewed-By: Matteo Collina Reviewed-By: David Carlier Reviewed-By: Colin Ihrig Reviewed-By: Sam Roberts Reviewed-By: James M Snell Reviewed-By: Denys Otrishko --- lib/_http_server.js | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) (limited to 'lib/_http_server.js') diff --git a/lib/_http_server.js b/lib/_http_server.js index 3d114d8711..6c52f7adbc 100644 --- a/lib/_http_server.js +++ b/lib/_http_server.js @@ -58,6 +58,7 @@ const { ERR_INVALID_ARG_TYPE, ERR_INVALID_CHAR } = require('internal/errors').codes; +const { validateInteger } = require('internal/validators'); const Buffer = require('buffer').Buffer; const { DTRACE_HTTP_SERVER_REQUEST, @@ -322,6 +323,11 @@ function Server(options, requestListener) { this[kIncomingMessage] = options.IncomingMessage || IncomingMessage; this[kServerResponse] = options.ServerResponse || ServerResponse; + const maxHeaderSize = options.maxHeaderSize; + if (maxHeaderSize !== undefined) + validateInteger(maxHeaderSize, 'maxHeaderSize', 0); + this.maxHeaderSize = maxHeaderSize; + net.Server.call(this, { allowHalfOpen: true }); if (requestListener) { @@ -379,7 +385,8 @@ function connectionListenerInternal(server, socket) { // https://github.com/nodejs/node/pull/21313 parser.initialize( HTTPParser.REQUEST, - new HTTPServerAsyncResource('HTTPINCOMINGMESSAGE', socket) + new HTTPServerAsyncResource('HTTPINCOMINGMESSAGE', socket), + server.maxHeaderSize || 0 ); parser.socket = socket; -- cgit v1.2.3