- 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

@ -212,13 +212,14 @@ HttpProxy.prototype.proxyRequest = function (req, res, buffer) {
//
// Setup outgoing proxy with relevant properties.
//
outgoing.host = this.target.host;
outgoing.hostname = this.target.hostname;
outgoing.port = this.target.port;
outgoing.agent = this.target.agent;
outgoing.method = req.method;
outgoing.path = req.url;
outgoing.headers = req.headers;
outgoing.host = this.target.host;
outgoing.hostname = this.target.hostname;
outgoing.port = this.target.port;
outgoing.socketPath = this.target.socketPath;
outgoing.agent = this.target.agent;
outgoing.method = req.method;
outgoing.path = req.url;
outgoing.headers = req.headers;
//
// If the changeOrigin option is specified, change the
@ -237,7 +238,7 @@ HttpProxy.prototype.proxyRequest = function (req, res, buffer) {
//
// 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 }
else { response.headers.connection = 'close' }
}
@ -281,7 +282,10 @@ HttpProxy.prototype.proxyRequest = function (req, res, buffer) {
});
// 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) {

View File

@ -85,11 +85,12 @@ RoutingProxy.prototype.add = function (options) {
//
// TODO: Consume properties in `options` related to the `ProxyTable`.
//
options.target = options.target || {};
options.target.host = options.target.host || options.host;
options.target.port = options.target.port || options.port;
options.target.https = this.target && this.target.https ||
options.target && options.target.https;
options.target = options.target || {};
options.target.host = options.target.host || options.host;
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 && options.target.https;
//
// Setup options to pass-thru to the new `HttpProxy` instance