Skip to content

Commit f1c3339

Browse files
committed
refactor: read req headers first
1 parent 7a8b2d7 commit f1c3339

File tree

1 file changed

+7
-4
lines changed

1 file changed

+7
-4
lines changed

index.js

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -132,6 +132,10 @@ function proxy (req, resOrSocket, proxyReq, onRes, errorHandler) {
132132
}
133133

134134
function getRequestHeaders (req) {
135+
const host = req.headers[HTTP2_HEADER_AUTHORITY] || req.headers[HTTP2_HEADER_HOST]
136+
const upgrade = req.headers[HTTP2_HEADER_UPGRADE]
137+
const forwarded = req.headers[HTTP2_HEADER_FORWARDED]
138+
135139
const headers = setupHeaders(Object.assign({}, req.headers))
136140

137141
// Remove pseudo headers
@@ -140,26 +144,25 @@ function getRequestHeaders (req) {
140144
delete headers[HTTP2_HEADER_PATH]
141145
delete headers[HTTP2_HEADER_SCHEME]
142146

143-
if (req.headers[HTTP2_HEADER_UPGRADE]) {
147+
if (upgrade) {
144148
headers[HTTP2_HEADER_CONNECTION] = 'upgrade'
145149
headers[HTTP2_HEADER_UPGRADE] = 'websocket'
146150
}
147151

148152
headers[HTTP2_HEADER_FORWARDED] = `by=${req.socket.localAddress}`
149153
headers[HTTP2_HEADER_FORWARDED] += `; for=${req.socket.remoteAddress}`
150154

151-
if (req.headers[HTTP2_HEADER_FORWARDED]) {
155+
if (forwarded) {
152156
const expr = /for=\s*([^\s]+)/ig
153157
while (true) {
154-
const m = expr.exec(req.headers[HTTP2_HEADER_FORWARDED])
158+
const m = expr.exec(forwarded)
155159
if (!m) {
156160
break
157161
}
158162
headers[HTTP2_HEADER_FORWARDED] += `; ${m[1]}`
159163
}
160164
}
161165

162-
const host = req.headers[HTTP2_HEADER_AUTHORITY] || req.headers[HTTP2_HEADER_HOST]
163166
if (host) {
164167
headers[HTTP2_HEADER_FORWARDED] += `; host=${host}`
165168
}

0 commit comments

Comments
 (0)