From 5f14bcaa704fe8a5e6f59d3a89722f22958cade9 Mon Sep 17 00:00:00 2001 From: Jeremy Judeaux Date: Thu, 2 Apr 2015 14:23:58 +0200 Subject: [PATCH] fix protocol and default port detection on node 0.12.x, compatible with 0.10.x --- lib/http-proxy/common.js | 15 ++++++++++++++- lib/http-proxy/passes/web-incoming.js | 2 +- lib/http-proxy/passes/ws-incoming.js | 2 +- 3 files changed, 16 insertions(+), 3 deletions(-) diff --git a/lib/http-proxy/common.js b/lib/http-proxy/common.js index 225324e..a169aaf 100644 --- a/lib/http-proxy/common.js +++ b/lib/http-proxy/common.js @@ -134,7 +134,20 @@ common.getPort = function(req) { return res ? res[1] : - req.connection.pair ? '443' : '80'; + common.hasEncryptedConnection(req) ? '443' : '80'; +}; + +/** + * Check if the request has an encrypted connection. + * + * @param {Request} req Incoming HTTP request. + * + * @return {Boolean} Whether the connection is encrypted or not. + * + * @api private + */ +common.hasEncryptedConnection = function(req) { + return Boolean(req.connection.encrypted || req.connection.pair); }; /** diff --git a/lib/http-proxy/passes/web-incoming.js b/lib/http-proxy/passes/web-incoming.js index 9f5ec20..4070eb3 100644 --- a/lib/http-proxy/passes/web-incoming.js +++ b/lib/http-proxy/passes/web-incoming.js @@ -64,7 +64,7 @@ web_o = Object.keys(web_o).map(function(pass) { function XHeaders(req, res, options) { if(!options.xfwd) return; - var encrypted = req.isSpdy || req.connection.encrypted || req.connection.pair; + var encrypted = req.isSpdy || common.hasEncryptedConnection(req); var values = { for : req.connection.remoteAddress || req.socket.remoteAddress, port : common.getPort(req), diff --git a/lib/http-proxy/passes/ws-incoming.js b/lib/http-proxy/passes/ws-incoming.js index b72e557..8264be6 100644 --- a/lib/http-proxy/passes/ws-incoming.js +++ b/lib/http-proxy/passes/ws-incoming.js @@ -57,7 +57,7 @@ var passes = exports; var values = { for : req.connection.remoteAddress || req.socket.remoteAddress, port : common.getPort(req), - proto: req.connection.pair ? 'wss' : 'ws' + proto: common.hasEncryptedConnection(req) ? 'wss' : 'ws' }; ['for', 'port', 'proto'].forEach(function(header) {