@@ -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