diff --git a/lib/http-proxy/passes/web-incoming.js b/lib/http-proxy/passes/web-incoming.js index a528c3689..b127bc709 100644 --- a/lib/http-proxy/passes/web-incoming.js +++ b/lib/http-proxy/passes/web-incoming.js @@ -131,7 +131,7 @@ web_o = Object.keys(web_o).map(function(pass) { (options.buffer || req).pipe(proxyReq); proxyReq.on('response', function(proxyRes) { - if(server) { server.emit('proxyRes', proxyRes); } + if(server) { server.emit('proxyRes', proxyRes, req, res); } for(var i=0; i < web_o.length; i++) { if(web_o[i](req, res, proxyRes)) { break; } } diff --git a/test/lib-http-proxy-passes-web-incoming-test.js b/test/lib-http-proxy-passes-web-incoming-test.js index b25ad6e12..49ffa9ef4 100644 --- a/test/lib-http-proxy-passes-web-incoming-test.js +++ b/test/lib-http-proxy-passes-web-incoming-test.js @@ -127,4 +127,32 @@ describe('#createProxyServer.web() using own http server', function () { method: 'GET', }, function() {}).end(); }); + + it('should proxy the request and provide a proxyRes event with the request and response parameters', function(done) { + var proxy = httpProxy.createProxyServer({ + target: 'http://127.0.0.1:8080' + }); + + function requestHandler(req, res) { + proxy.once('proxyRes', function (proxyRes, pReq, pRes) { + source.close(); + proxyServer.close(); + expect(pReq).to.be.equal(req); + expect(pRes).to.be.equal(res); + done(); + }); + + proxy.web(req, res); + } + + var proxyServer = http.createServer(requestHandler); + + var source = http.createServer(function(req, res) { + res.end('Response'); + }); + + proxyServer.listen('8084'); + source.listen('8080'); + http.request('http://127.0.0.1:8084', function() {}).end(); + }); }); \ No newline at end of file