http-proxy
Advanced tools
Comparing version 0.6.2 to 0.6.4
@@ -35,5 +35,5 @@ /* | ||
// | ||
// ### Version 0.5.7 // 5/19/2011 | ||
// Expose version information through `pkginfo`. | ||
// | ||
exports.version = [0, 5, 7]; | ||
require('pkginfo')(module, 'version'); | ||
@@ -117,32 +117,8 @@ // | ||
}; | ||
// | ||
// stack | ||
// adapted from https://github.com/creationix/stack | ||
// | ||
function stack (middlewares, proxy) { | ||
var handle; | ||
middlewares.reverse().forEach(function (layer) { | ||
var child = handle; | ||
var next = function (err) { | ||
if (err) { | ||
throw err; | ||
//return error(req, res, err); | ||
} | ||
child(req, res); | ||
} | ||
next.__proto__ = proxy; | ||
handle = function (req, res) { | ||
layer(req, res, next); | ||
}; | ||
}); | ||
return handle; | ||
} | ||
// | ||
// stack | ||
// ### function stack (middlewares, proxy) | ||
// adapted from https://github.com/creationix/stack | ||
// | ||
function stack (middlewares, proxy) { | ||
exports.stack = function stack (middlewares, proxy) { | ||
var handle; | ||
@@ -190,2 +166,3 @@ middlewares.reverse().forEach(function (layer) { | ||
middleware = [], | ||
handler, | ||
silent; | ||
@@ -202,3 +179,3 @@ | ||
var proxy = new HttpProxy(options); | ||
proxy = new HttpProxy(options); | ||
@@ -236,6 +213,8 @@ if (port && host) { | ||
if (middleware.length > 1) { | ||
handler = callback = stack(middleware, proxy); | ||
handler = callback = exports.stack(middleware, proxy); | ||
} | ||
else if (middleware.length) { | ||
//do not use middleware code if it's not needed. | ||
// | ||
// Do not use middleware code if it's not needed. | ||
// | ||
var h = middleware[0]; | ||
@@ -281,3 +260,2 @@ handler = callback = function (req,res) { h(req,res,proxy) }; | ||
server.proxy = proxy; | ||
return server; | ||
@@ -435,4 +413,9 @@ }; | ||
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; | ||
} | ||
@@ -460,3 +443,3 @@ | ||
// | ||
if (options.enableXForwarded === true) { | ||
if (options.enableXForwarded === true && req.connection) { | ||
req.headers['x-forwarded-for'] = req.connection.remoteAddress || req.connection.socket.remoteAddress; | ||
@@ -513,3 +496,7 @@ req.headers['x-forwarded-port'] = req.connection.remotePort || req.connection.socket.remotePort; | ||
res.end(); | ||
try { | ||
res.end(); | ||
} catch (er) { | ||
console.error("res.end error: %s", er.message); | ||
} | ||
} | ||
@@ -542,3 +529,8 @@ | ||
if (response.statusCode === 304) { | ||
return res.end(); | ||
try { | ||
res.end(); | ||
} catch (er) { | ||
console.error("res.end error: %s", er.message) | ||
} | ||
return; | ||
} | ||
@@ -548,5 +540,16 @@ | ||
// `response` write it to the outgoing `res`. | ||
// If the res socket has been killed already, then write() | ||
// will throw. Nevertheless, try our best to end it nicely. | ||
response.on('data', function (chunk) { | ||
if (req.method !== 'HEAD') { | ||
res.write(chunk); | ||
if (req.method !== 'HEAD' && res.writable) { | ||
try { | ||
res.write(chunk); | ||
} catch (er) { | ||
console.error("res.write error: %s", er.message); | ||
try { | ||
res.end(); | ||
} catch (er) { | ||
console.error("res.end error: %s", er.message); | ||
} | ||
} | ||
} | ||
@@ -563,3 +566,7 @@ }); | ||
reverseProxy.removeListener('error', proxyError); | ||
res.end(); | ||
try { | ||
res.end(); | ||
} catch (er) { | ||
console.error("res.end error: %s", er.message); | ||
} | ||
@@ -946,2 +953,2 @@ // Emit the `end` event now that we have completed proxying | ||
} | ||
}; | ||
}; |
{ | ||
"name": "http-proxy", | ||
"description": "A full-featured http reverse proxy for node.js", | ||
"version": "0.6.2", | ||
"version": "0.6.4", | ||
"author": "Charlie Robbins <charlie.robbins@gmail.com>", | ||
@@ -18,3 +18,4 @@ "contributors": [ | ||
"colors": "0.x.x", | ||
"optimist": "0.2.x" | ||
"optimist": "0.2.x", | ||
"pkginfo": "0.2.x" | ||
}, | ||
@@ -21,0 +22,0 @@ "devDependencies": { |
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
298236
3294
3
+ Addedpkginfo@0.2.x
+ Addedpkginfo@0.2.3(transitive)