express
4.17.14.18.2
lib/router/route.js~
lib/router/route.jsModified+15−6
Index: package/lib/router/route.js
===================================================================
--- package/lib/router/route.js
+++ package/lib/router/route.js
@@ -97,8 +97,10 @@
Route.prototype.dispatch = function dispatch(req, res, done) {
var idx = 0;
var stack = this.stack;
+ var sync = 0
+
if (stack.length === 0) {
return done();
}
@@ -121,22 +123,29 @@
if (err && err === 'router') {
return done(err)
}
- var layer = stack[idx++];
- if (!layer) {
- return done(err);
+ // max sync stack
+ if (++sync > 100) {
+ return setImmediate(next, err)
}
- if (layer.method && layer.method !== method) {
- return next(err);
+ var layer = stack[idx++]
+
+ // end of layers
+ if (!layer) {
+ return done(err)
}
- if (err) {
+ if (layer.method && layer.method !== method) {
+ next(err)
+ } else if (err) {
layer.handle_error(err, req, res, next);
} else {
layer.handle_request(req, res, next);
}
+
+ sync = 0
}
};
/**