Skip to content

Commit

Permalink
- support unix donain sockets and windows named pipes (socketPath) on…
Browse files Browse the repository at this point in the history
… 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
  • Loading branch information
yosefd authored and indexzero committed Mar 9, 2013
1 parent eee6bab commit ffe74ed
Show file tree
Hide file tree
Showing 2 changed files with 19 additions and 14 deletions.
22 changes: 13 additions & 9 deletions lib/node-http-proxy/http-proxy.js
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand All @@ -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' }
}
Expand Down Expand Up @@ -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) {
Expand Down
11 changes: 6 additions & 5 deletions lib/node-http-proxy/routing-proxy.js
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down

0 comments on commit ffe74ed

Please sign in to comment.