Commit 7bda25b1 authored by isaacs's avatar isaacs

Add guards to every throw-able res.end call

parent 62201a09
...@@ -404,8 +404,13 @@ HttpProxy.prototype.proxyRequest = function (req, res, options) { ...@@ -404,8 +404,13 @@ HttpProxy.prototype.proxyRequest = function (req, res, options) {
// then respond with `404` since we do not have a valid proxy target. // then respond with `404` since we do not have a valid proxy target.
// //
if (!location) { if (!location) {
res.writeHead(404); try {
return res.end(); 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) { ...@@ -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 = { outgoing = {
...@@ -508,7 +517,12 @@ HttpProxy.prototype.proxyRequest = function (req, res, options) { ...@@ -508,7 +517,12 @@ HttpProxy.prototype.proxyRequest = function (req, res, options) {
// `response.statusCode === 304`: No 'data' event and no 'end' // `response.statusCode === 304`: No 'data' event and no 'end'
if (response.statusCode === 304) { 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` // For each data `chunk` received from the `reverseProxy`
...@@ -520,9 +534,12 @@ HttpProxy.prototype.proxyRequest = function (req, res, options) { ...@@ -520,9 +534,12 @@ HttpProxy.prototype.proxyRequest = function (req, res, options) {
try { try {
res.write(chunk); res.write(chunk);
} catch (er) { } catch (er) {
console.error("res.write error: %s", er.message);
try { try {
res.end(); 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) { ...@@ -535,7 +552,11 @@ HttpProxy.prototype.proxyRequest = function (req, res, options) {
response.on('end', function () { response.on('end', function () {
if (!errState) { if (!errState) {
reverseProxy.removeListener('error', proxyError); 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 // Emit the `end` event now that we have completed proxying
self.emit('end', req, res); self.emit('end', req, res);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment