diff --git a/lib/node-http-proxy.js b/lib/node-http-proxy.js index 2680250d7..d4b5eab99 100644 --- a/lib/node-http-proxy.js +++ b/lib/node-http-proxy.js @@ -95,6 +95,10 @@ exports.createServer = function () { server.on('close', function () { proxy.close(); }); + + proxy.on('routes', function (routes) { + server.emit('routes', routes); + }) if (!callback) { // WebSocket support: if callback is empty tunnel @@ -180,11 +184,12 @@ HttpProxy.prototype.proxyRequest = function (req, res, port, host, paused) { // always ignore the proxyTable if an explicit `port` and `host` // arguments are supplied to `proxyRequest`. // + if (this.proxyTable && !host) { location = this.proxyTable.getProxyLocation(req); if (!location) { - res.writeHead(400); + res.writeHead(404); return res.end(); } diff --git a/test/proxy-table-test.js b/test/proxy-table-test.js index ac36f93bb..b8f7de49c 100644 --- a/test/proxy-table-test.js +++ b/test/proxy-table-test.js @@ -73,8 +73,9 @@ vows.describe('node-http-proxy/proxy-table').addBatch({ } }; - runner.startTargetServer(8103, that.output); - request(options, that.callback); + runner.startTargetServer(8103, that.output, function () { + request(options, that.callback); + }); }); }, "should receive 'hello dynamic.com'": function (err, res, body) { @@ -88,8 +89,10 @@ vows.describe('node-http-proxy/proxy-table').addBatch({ "When using an instance of ProxyTable combined with HttpProxy directly": { topic: function () { this.server = runner.startProxyServerWithTableAndLatency(8110, 100, { - 'foo.com': 'localhost:8111', - 'bar.com': 'localhost:8112' + router: { + 'foo.com': 'localhost:8111', + 'bar.com': 'localhost:8112' + } }, this.callback); }, "an incoming request to foo.com": assertProxiedWithTarget(runner, 'foo.com', 8110, 8111), @@ -99,7 +102,7 @@ vows.describe('node-http-proxy/proxy-table').addBatch({ }).addBatch({ "When the tests are over": { topic: function () { - fs.unlinkSync(routeFile); + //fs.unlinkSync(routeFile); return runner.closeServers(); }, "the servers should clean up": function () {