Permalink
Browse files

support old (port,host) and (options) style when using middlewares

  • Loading branch information...
1 parent c773eed commit 7976de1121a40f963e18ea0a4673d185f847df4c @dominictarr dominictarr committed Jul 25, 2011
Showing with 26 additions and 19 deletions.
  1. +26 −19 lib/node-http-proxy.js
View
@@ -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)

0 comments on commit 7976de1

Please sign in to comment.