diff options
Diffstat (limited to 'lib/_http_outgoing.js')
-rw-r--r-- | lib/_http_outgoing.js | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/lib/_http_outgoing.js b/lib/_http_outgoing.js index eb68d091c6..80125f8c24 100644 --- a/lib/_http_outgoing.js +++ b/lib/_http_outgoing.js @@ -446,7 +446,13 @@ function matchHeader(self, state, field, value) { function validateHeaderName(name) { if (typeof name !== 'string' || !name || !checkIsHttpToken(name)) { + // Reducing the limit improves the performance significantly. We do not + // lose the stack frames due to the `captureStackTrace()` function that is + // called later. + const tmpLimit = Error.stackTraceLimit; + Error.stackTraceLimit = 0; const err = new ERR_INVALID_HTTP_TOKEN('Header name', name); + Error.stackTraceLimit = tmpLimit; Error.captureStackTrace(err, validateHeaderName); throw err; } @@ -454,12 +460,18 @@ function validateHeaderName(name) { function validateHeaderValue(name, value) { let err; + // Reducing the limit improves the performance significantly. We do not loose + // the stack frames due to the `captureStackTrace()` function that is called + // later. + const tmpLimit = Error.stackTraceLimit; + Error.stackTraceLimit = 0; if (value === undefined) { err = new ERR_HTTP_INVALID_HEADER_VALUE(value, name); } else if (checkInvalidHeaderChar(value)) { debug('Header "%s" contains invalid characters', name); err = new ERR_INVALID_CHAR('header content', name); } + Error.stackTraceLimit = tmpLimit; if (err !== undefined) { Error.captureStackTrace(err, validateHeaderValue); throw err; |