diff --git a/lib/node-http-proxy.js b/lib/node-http-proxy.js index 2e41b42..14f7f99 100644 --- a/lib/node-http-proxy.js +++ b/lib/node-http-proxy.js @@ -112,6 +112,7 @@ exports.getMaxSockets = function () { exports.setMaxSockets = function (value) { maxSockets = value; }; + // // stack // adapted from https://github.com/creationix/stack @@ -122,15 +123,16 @@ function stack (middlewares, proxy) { middlewares.reverse().forEach(function (layer) { var child = handle; - var next = function (err) { - if (err) { - throw err; - //return error(req, res, err); - } - child(req, res); - } - next.__proto__ = proxy; handle = function (req, res) { + var next = function (err) { + if (err) { + throw err; + //TODO: figure out where to send errors. + //return error(req, res, err); + } + child(req, res); + } + next.__proto__ = proxy; layer(req, res, next); }; }); @@ -167,11 +169,6 @@ exports.createServer = function () { var proxy = new HttpProxy(options); - if(middleware.length) - //handler = callback = middleware.shift() - //else if (middleware.length) - handler = callback = stack(middleware, proxy); - if (port && host) { // // If we have a target host and port for the request @@ -183,6 +180,8 @@ exports.createServer = function () { host: host }); } + if(middleware.length) + middleware.push(handler) } else if (proxy.proxyTable) { // @@ -192,13 +191,21 @@ exports.createServer = function () { handler = function (req, res) { proxy.proxyRequest(req, res); } + if(middleware.length) + middleware.push(handler) } - else if (!handler) { - // - // Otherwise this server is improperly configured. - // - throw new Error('Cannot proxy without port, host, or router.') - } + + if(middleware.length) + //handler = callback = middleware.shift() + //else if (middleware.length) + handler = callback = stack(middleware, proxy); + + if (!handler) { + // + // Otherwise this server is improperly configured. + // + throw new Error('Cannot proxy without port, host, or router.') + } server = options.https ? https.createServer(options.https, handler)