diff --git a/lib/http-proxy/index.js b/lib/http-proxy/index.js index 17c96cf..ba3425e 100644 --- a/lib/http-proxy/index.js +++ b/lib/http-proxy/index.js @@ -73,7 +73,7 @@ function createRightProxy(type) { * refer to the connection socket * pass(req, socket, options, head) */ - if(passes[i](req, res, cbl ? false : this, head, cbl)) { // passes can return a truthy value to halt the loop + if(passes[i].call(this, req, res, head, cbl)) { // passes can return a truthy value to halt the loop break; } } diff --git a/lib/http-proxy/passes/web-incoming.js b/lib/http-proxy/passes/web-incoming.js index b8f936d..0372571 100644 --- a/lib/http-proxy/passes/web-incoming.js +++ b/lib/http-proxy/passes/web-incoming.js @@ -23,12 +23,13 @@ web_o = Object.keys(web_o).map(function(pass) { * * @param {ClientRequest} Req Request object * @param {IncomingMessage} Res Response object - * @param {Object} Options Config object passed to the proxy * * @api private */ - function deleteLength(req, res, options) { + function deleteLength(req, res) { + // Now the options are stored on this + var options = this.options; if(req.method === 'DELETE' && !req.headers['content-length']) { req.headers['content-length'] = '0'; } @@ -39,12 +40,13 @@ web_o = Object.keys(web_o).map(function(pass) { * * @param {ClientRequest} Req Request object * @param {IncomingMessage} Res Response object - * @param {Object} Options Config object passed to the proxy * * @api private */ - function timeout(req, res, options) { + function timeout(req, res) { + // Now the options are stored on this + var options = this.options; if(options.timeout) { req.socket.setTimeout(options.timeout); } @@ -55,12 +57,13 @@ web_o = Object.keys(web_o).map(function(pass) { * * @param {ClientRequest} Req Request object * @param {IncomingMessage} Res Response object - * @param {Object} Options Config object passed to the proxy * * @api private */ - function XHeaders(req, res, options) { + function XHeaders(req, res) { + // Now the options are stored on this + var options = this.options; if(!options.xfwd) return; var values = { @@ -84,24 +87,26 @@ web_o = Object.keys(web_o).map(function(pass) { * * @param {ClientRequest} Req Request object * @param {IncomingMessage} Res Response object - * @param {Object} Options Config object passed to the proxy * * @api private */ - function stream(req, res, server, _, clb) { - if(server.options.forward) { + function stream(req, res, head, clb) { + var server = this; + // Now the options are stored on this + var options = this.options; + if(options.forward) { // If forward enable, so just pipe the request - var forwardReq = (server.options.forward.protocol === 'https:' ? https : http).request( - common.setupOutgoing(server.options.ssl || {}, server.options, req, 'forward') + var forwardReq = (options.forward.protocol === 'https:' ? https : http).request( + common.setupOutgoing(options.ssl || {}, options, req, 'forward') ); req.pipe(forwardReq); return res.end(); } // Request initalization - var proxyReq = (server.options.target.protocol === 'https:' ? https : http).request( - common.setupOutgoing(server.options.ssl || {}, server.options, req) + var proxyReq = (options.target.protocol === 'https:' ? https : http).request( + common.setupOutgoing(options.ssl || {}, options, req) ); // Error Handler