- support unix donain sockets and windows named pipes (socketPath) on node 0.8.x. On node 0.6.x the support was opaque via port, but on the new node, socketPath should be set explicitely.

- avoid adding multiple headers with the same name
- fix bug in setting connection
This commit is contained in:
Yosef Dinerstein 2012-07-29 16:22:57 +03:00 committed by indexzero
parent eee6babc98
commit ffe74ed299
2 changed files with 19 additions and 14 deletions

View File

@ -215,6 +215,7 @@ HttpProxy.prototype.proxyRequest = function (req, res, buffer) {
outgoing.host = this.target.host; outgoing.host = this.target.host;
outgoing.hostname = this.target.hostname; outgoing.hostname = this.target.hostname;
outgoing.port = this.target.port; outgoing.port = this.target.port;
outgoing.socketPath = this.target.socketPath;
outgoing.agent = this.target.agent; outgoing.agent = this.target.agent;
outgoing.method = req.method; outgoing.method = req.method;
outgoing.path = req.url; outgoing.path = req.url;
@ -237,7 +238,7 @@ HttpProxy.prototype.proxyRequest = function (req, res, buffer) {
// //
// Process the `reverseProxy` `response` when it's received. // Process the `reverseProxy` `response` when it's received.
// //
if (response.headers.connection) { if (!response.headers.connection) {
if (req.headers.connection) { response.headers.connection = req.headers.connection } if (req.headers.connection) { response.headers.connection = req.headers.connection }
else { response.headers.connection = 'close' } else { response.headers.connection = 'close' }
} }
@ -281,7 +282,10 @@ HttpProxy.prototype.proxyRequest = function (req, res, buffer) {
}); });
// Set the headers of the client response // Set the headers of the client response
res.writeHead(response.statusCode, response.headers); Object.keys(response.headers).forEach(function(key){
res.setHeader(key, response.headers[key]);
});
res.writeHead(response.statusCode);
// If `response.statusCode === 304`: No 'data' event and no 'end' // If `response.statusCode === 304`: No 'data' event and no 'end'
if (response.statusCode === 304) { if (response.statusCode === 304) {

View File

@ -88,6 +88,7 @@ RoutingProxy.prototype.add = function (options) {
options.target = options.target || {}; options.target = options.target || {};
options.target.host = options.target.host || options.host; options.target.host = options.target.host || options.host;
options.target.port = options.target.port || options.port; options.target.port = options.target.port || options.port;
options.target.socketPath = options.target.socketPath || options.socketPath;
options.target.https = this.target && this.target.https || options.target.https = this.target && this.target.https ||
options.target && options.target.https; options.target && options.target.https;