aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/node_modules/undici/lib/core/request.js
diff options
context:
space:
mode:
Diffstat (limited to 'node_modules/undici/lib/core/request.js')
-rw-r--r--node_modules/undici/lib/core/request.js14
1 files changed, 12 insertions, 2 deletions
diff --git a/node_modules/undici/lib/core/request.js b/node_modules/undici/lib/core/request.js
index 7800303..4da6066 100644
--- a/node_modules/undici/lib/core/request.js
+++ b/node_modules/undici/lib/core/request.js
@@ -66,6 +66,10 @@ class Request {
throw new InvalidArgumentError('upgrade must be a string')
}
+ if (upgrade && !isValidHeaderValue(upgrade)) {
+ throw new InvalidArgumentError('invalid upgrade header')
+ }
+
if (headersTimeout != null && (!Number.isFinite(headersTimeout) || headersTimeout < 0)) {
throw new InvalidArgumentError('invalid headersTimeout')
}
@@ -360,13 +364,19 @@ function processHeader (request, key, val) {
val = `${val}`
}
- if (request.host === null && headerName === 'host') {
+ if (headerName === 'host') {
+ if (request.host !== null) {
+ throw new InvalidArgumentError('duplicate host header')
+ }
if (typeof val !== 'string') {
throw new InvalidArgumentError('invalid host header')
}
// Consumed by Client
request.host = val
- } else if (request.contentLength === null && headerName === 'content-length') {
+ } else if (headerName === 'content-length') {
+ if (request.contentLength !== null) {
+ throw new InvalidArgumentError('duplicate content-length header')
+ }
request.contentLength = parseInt(val, 10)
if (!Number.isFinite(request.contentLength)) {
throw new InvalidArgumentError('invalid content-length header')