summaryrefslogtreecommitdiff
path: root/lib/_http_outgoing.js
diff options
context:
space:
mode:
Diffstat (limited to 'lib/_http_outgoing.js')
-rw-r--r--lib/_http_outgoing.js12
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;