express
4.18.04.19.0
lib/router/route.jslib/router/route.js+15−10
Index: package/lib/router/route.js
===================================================================
--- package/lib/router/route.js
+++ package/lib/router/route.js
@@ -59,9 +59,12 @@
if (this.methods._all) {
return true;
}
- var name = method.toLowerCase();
+ // normalize name
+ var name = typeof method === 'string'
+ ? method.toLowerCase()
+ : method
if (name === 'head' && !this.methods['head']) {
name = 'get';
}
@@ -102,10 +105,12 @@
if (stack.length === 0) {
return done();
}
+ var method = typeof req.method === 'string'
+ ? req.method.toLowerCase()
+ : req.method
- var method = req.method.toLowerCase();
if (method === 'head' && !this.methods['head']) {
method = 'get';
}
@@ -123,23 +128,23 @@
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);
}