diff --git a/lib/node-http-proxy.js b/lib/node-http-proxy.js index cef39340c..a1836c186 100644 --- a/lib/node-http-proxy.js +++ b/lib/node-http-proxy.js @@ -404,8 +404,13 @@ HttpProxy.prototype.proxyRequest = function (req, res, options) { // then respond with `404` since we do not have a valid proxy target. // if (!location) { - res.writeHead(404); - return res.end(); + try { + res.writeHead(404); + res.end(); + } catch (er) { + console.error("res.writeHead/res.end error: %s", er.message); + } + return; } // @@ -480,7 +485,11 @@ HttpProxy.prototype.proxyRequest = function (req, res, options) { } } - res.end(); + try { + res.end(); + } catch (er) { + console.error("res.end error: %s", er.message); + } } outgoing = { @@ -508,7 +517,12 @@ HttpProxy.prototype.proxyRequest = function (req, res, options) { // `response.statusCode === 304`: No 'data' event and no 'end' if (response.statusCode === 304) { - return res.end(); + try { + res.end(); + } catch (er) { + console.error("res.end error: %s", er.message) + } + return; } // For each data `chunk` received from the `reverseProxy` @@ -520,9 +534,12 @@ HttpProxy.prototype.proxyRequest = function (req, res, options) { try { res.write(chunk); } catch (er) { + console.error("res.write error: %s", er.message); try { res.end(); - } catch (er) {} + } catch (er) { + console.error("res.end error: %s", er.message); + } } } }); @@ -535,7 +552,11 @@ HttpProxy.prototype.proxyRequest = function (req, res, options) { response.on('end', function () { if (!errState) { reverseProxy.removeListener('error', proxyError); - res.end(); + try { + res.end(); + } catch (er) { + console.error("res.end error: %s", er.message); + } // Emit the `end` event now that we have completed proxying self.emit('end', req, res);