From c81bae2fdde3bf0087fe71a39855c61c43ffb145 Mon Sep 17 00:00:00 2001 From: indexzero Date: Fri, 23 Dec 2011 01:40:35 -0500 Subject: [PATCH] [fix minor] Correctly set x-forwarded-proto in WebSocket requests --- lib/node-http-proxy/http-proxy.js | 58 ++++++++++++++++--------------- 1 file changed, 30 insertions(+), 28 deletions(-) diff --git a/lib/node-http-proxy/http-proxy.js b/lib/node-http-proxy/http-proxy.js index 81f9596..46419ed 100644 --- a/lib/node-http-proxy/http-proxy.js +++ b/lib/node-http-proxy/http-proxy.js @@ -131,28 +131,29 @@ HttpProxy.prototype.proxyRequest = function (req, res, buffer) { // * `x-forwarded-port`: Port of the original request. // if (this.enable.xforward && req.connection && req.socket) { - if (req.headers['x-forwarded-for']){ - var addressToAppend = "," + req.connection.remoteAddress || req.socket.remoteAddress; - req.headers['x-forwarded-for'] += addressToAppend; - } else { - req.headers['x-forwarded-for'] = req.connection.remoteAddress || req.socket.remoteAddress; + var addressToAppend = "," + req.connection.remoteAddress || req.socket.remoteAddress; + req.headers['x-forwarded-for'] += addressToAppend; + } + else { + req.headers['x-forwarded-for'] = req.connection.remoteAddress || req.socket.remoteAddress; } if (req.headers['x-forwarded-port']){ - var portToAppend = "," + req.connection.remotePort || req.socket.remotePort; - req.headers['x-forwarded-port'] += portToAppend; - } else { - req.headers['x-forwarded-port'] = req.connection.remotePort || req.socket.remotePort; + var portToAppend = "," + req.connection.remotePort || req.socket.remotePort; + req.headers['x-forwarded-port'] += portToAppend; + } + else { + req.headers['x-forwarded-port'] = req.connection.remotePort || req.socket.remotePort; } if (req.headers['x-forwarded-proto']){ - var protoToAppend = "," + req.connection.pair ? 'https' : 'http'; - req.headers['x-forwarded-proto'] += protoToAppend; - } else { - req.headers['x-forwarded-proto'] = req.connection.pair ? 'https' : 'http'; + var protoToAppend = "," + req.connection.pair ? 'https' : 'http'; + req.headers['x-forwarded-proto'] += protoToAppend; + } + else { + req.headers['x-forwarded-proto'] = req.connection.pair ? 'https' : 'http'; } - } // @@ -420,28 +421,29 @@ HttpProxy.prototype.proxyWebSocketRequest = function (req, socket, head, buffer) // * `x-forwarded-port`: Port of the original request. // if (this.enable.xforward && req.connection && req.connection.socket) { - if (req.headers['x-forwarded-for']){ - var addressToAppend = "," + req.connection.remoteAddress || req.connection.socket.remoteAddress; - req.headers['x-forwarded-for'] += addressToAppend; - } else { - req.headers['x-forwarded-for'] = req.connection.remoteAddress || req.connection.socket.remoteAddress; + var addressToAppend = "," + req.connection.remoteAddress || req.connection.socket.remoteAddress; + req.headers['x-forwarded-for'] += addressToAppend; + } + else { + req.headers['x-forwarded-for'] = req.connection.remoteAddress || req.connection.socket.remoteAddress; } if (req.headers['x-forwarded-port']){ - var portToAppend = "," + req.connection.remotePort || req.connection.socket.remotePort; - req.headers['x-forwarded-port'] += portToAppend; - } else { - req.headers['x-forwarded-port'] = req.connection.remotePort || req.connection.socket.remotePort; + var portToAppend = "," + req.connection.remotePort || req.connection.socket.remotePort; + req.headers['x-forwarded-port'] += portToAppend; + } + else { + req.headers['x-forwarded-port'] = req.connection.remotePort || req.connection.socket.remotePort; } if (req.headers['x-forwarded-proto']){ - var protoToAppend = "," + req.connection.pair ? 'https' : 'http'; - req.headers['x-forwarded-proto'] += protoToAppend; - } else { - req.headers['x-forwarded-proto'] = req.connection.pair ? 'https' : 'http'; + var protoToAppend = "," + req.connection.pair ? 'wss' : 'ws'; + req.headers['x-forwarded-proto'] += protoToAppend; + } + else { + req.headers['x-forwarded-proto'] = req.connection.pair ? 'wss' : 'ws'; } - } //