Skip to content

Commit b3f26a3

Browse files
committed
stop proxy forward if res.socket.destroyed
1 parent 7aae847 commit b3f26a3

1 file changed

Lines changed: 23 additions & 18 deletions

File tree

index.js

Lines changed: 23 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ const {
1414
populateHeaders
1515
} = require('./lib/utils')
1616

17-
function fastProxy (opts = {}) {
17+
function fastProxy(opts = {}) {
1818
const { request, close } = buildRequest({
1919
...opts
2020
})
@@ -24,7 +24,7 @@ function fastProxy (opts = {}) {
2424

2525
return {
2626
close,
27-
proxy (req, res, source, opts) {
27+
proxy(req, res, source, opts) {
2828
opts = opts || {}
2929
const reqOpts = opts.request || {}
3030
const onResponse = opts.onResponse
@@ -88,18 +88,23 @@ function fastProxy (opts = {}) {
8888
request: reqOpts
8989
}
9090
request(reqParams, (err, response) => {
91+
if (res.socket.destroyed) {
92+
return
93+
}
94+
9195
if (err) {
92-
if (!res.sent) {
93-
if (err.code === 'ECONNREFUSED') {
94-
res.statusCode = 503
95-
res.end('Service Unavailable')
96-
} else if (err.code === 'ECONNRESET' || err.code === 'UND_ERR_HEADERS_TIMEOUT' || err.code === 'UND_ERR_BODY_TIMEOUT') {
97-
res.statusCode = 504
98-
res.end(err.message)
99-
} else {
100-
res.statusCode = 500
101-
res.end(err.message)
102-
}
96+
if (err.code === 'ECONNREFUSED') {
97+
res.statusCode = 503
98+
res.end('Service Unavailable')
99+
} else if (
100+
err.code === 'ECONNRESET' ||
101+
err.code === 'UND_ERR_HEADERS_TIMEOUT' ||
102+
err.code === 'UND_ERR_BODY_TIMEOUT') {
103+
res.statusCode = 504
104+
res.end(err.message)
105+
} else {
106+
res.statusCode = 500
107+
res.end(err.message)
103108
}
104109

105110
return
@@ -130,7 +135,7 @@ function fastProxy (opts = {}) {
130135
}
131136
}
132137

133-
function getQueryString (search, reqUrl, opts) {
138+
function getQueryString(search, reqUrl, opts) {
134139
if (opts.queryString) {
135140
return '?' + new URLSearchParams(opts.queryString).toString()
136141
}
@@ -147,23 +152,23 @@ function getQueryString (search, reqUrl, opts) {
147152
return ''
148153
}
149154

150-
function rewriteHeadersNoOp (headers) {
155+
function rewriteHeadersNoOp(headers) {
151156
return headers
152157
}
153158

154-
function rewriteRequestHeadersNoOp (req, headers) {
159+
function rewriteRequestHeadersNoOp(req, headers) {
155160
return headers
156161
}
157162

158-
function getCacheStorage (size) {
163+
function getCacheStorage(size) {
159164
if (size === 0) {
160165
return null
161166
}
162167

163168
return lru(size || 100)
164169
}
165170

166-
function getReqUrl (source, cache, base, opts) {
171+
function getReqUrl(source, cache, base, opts) {
167172
const reqBase = opts.base || base
168173
let url
169174

0 commit comments

Comments
 (0)