Permalink
Browse files

http: add maxHeaderSize property

This commit exposes the value of --max-http-header-size
as a property of the http module.

Backport-PR-URL: #25218
PR-URL: #24860
Reviewed-By: Richard Lau <riclau@uk.ibm.com>
Reviewed-By: Matteo Collina <matteo.collina@gmail.com>
Reviewed-By: Michael Dawson <michael_dawson@ca.ibm.com>
Reviewed-By: Shelley Vohr <codebytere@gmail.com>
Reviewed-By: James M Snell <jasnell@gmail.com>
  • Loading branch information...
cjihrig authored and MylesBorins committed Dec 6, 2018
1 parent 693e362 commit 446f8b54e50f5484aee7faacc6e48f11115b982b
Showing with 35 additions and 0 deletions.
  1. +11 −0 doc/api/http.md
  2. +13 −0 lib/http.js
  3. +11 −0 test/parallel/test-http-max-header-size.js
@@ -1805,6 +1805,16 @@ added: v0.5.9
Global instance of `Agent` which is used as the default for all HTTP client
requests.

## http.maxHeaderSize
<!-- YAML
added: REPLACEME
-->

* {number}

Read-only property specifying the maximum allowed size of HTTP headers in bytes.
Defaults to 8KB. Configurable using the [`--max-http-header-size`][] CLI option.

## http.request(options[, callback])
<!-- YAML
added: v0.3.6
@@ -1982,6 +1992,7 @@ will be emitted in the following order:
Note that setting the `timeout` option or using the `setTimeout` function will
not abort the request or do anything besides add a `timeout` event.

[`--max-http-header-size`]: cli.html#cli_max_http_header_size_size
[`'checkContinue'`]: #http_event_checkcontinue
[`'request'`]: #http_event_request
[`'response'`]: #http_event_response
@@ -27,6 +27,7 @@ const common = require('_http_common');
const incoming = require('_http_incoming');
const outgoing = require('_http_outgoing');
const server = require('_http_server');
let maxHeaderSize;

const { Server } = server;

@@ -59,3 +60,15 @@ module.exports = {
get,
request
};

Object.defineProperty(module.exports, 'maxHeaderSize', {
configurable: true,
enumerable: true,
get() {
if (maxHeaderSize === undefined) {
maxHeaderSize = process.binding('config').maxHTTPHeaderSize;
}

return maxHeaderSize;
}
});
@@ -0,0 +1,11 @@
'use strict';

require('../common');
const assert = require('assert');
const { spawnSync } = require('child_process');
const http = require('http');

assert.strictEqual(http.maxHeaderSize, 8 * 1024);
const child = spawnSync(process.execPath, ['--max-http-header-size=10', '-p',
'http.maxHeaderSize']);
assert.strictEqual(+child.stdout.toString().trim(), 10);

0 comments on commit 446f8b5

Please sign in to comment.