@@ -513,21 +513,6 @@ module Express {
513
513
}
514
514
}
515
515
516
- /**
517
- * Holds if `call` is a chainable method call on the response object of `handler`.
518
- */
519
- private predicate isChainableResponseMethodCall (
520
- RouteHandler handler , DataFlow:: MethodCallNode call
521
- ) {
522
- exists ( string name | call .calls ( handler .getAResponseNode ( ) , name ) |
523
- name =
524
- [
525
- "append" , "attachment" , "location" , "send" , "sendStatus" , "set" , "status" , "type" , "vary" ,
526
- "clearCookie" , "contentType" , "cookie" , "format" , "header" , "json" , "jsonp" , "links"
527
- ]
528
- )
529
- }
530
-
531
516
/** An Express response source. */
532
517
abstract class ResponseSource extends Http:: Servers:: ResponseSource { }
533
518
@@ -538,11 +523,7 @@ module Express {
538
523
private class ExplicitResponseSource extends ResponseSource {
539
524
RouteHandler rh ;
540
525
541
- ExplicitResponseSource ( ) {
542
- this = rh .getResponseParameter ( )
543
- or
544
- isChainableResponseMethodCall ( rh , this )
545
- }
526
+ ExplicitResponseSource ( ) { this = rh .getResponseParameter ( ) }
546
527
547
528
/**
548
529
* Gets the route handler that provides this response.
@@ -559,6 +540,22 @@ module Express {
559
540
override RouteHandler getRouteHandler ( ) { none ( ) } // Not known.
560
541
}
561
542
543
+ private class ChainedResponse extends ResponseSource {
544
+ private ResponseSource base ;
545
+
546
+ ChainedResponse ( ) {
547
+ this =
548
+ base .ref ( )
549
+ .getAMethodCall ( [
550
+ "append" , "attachment" , "location" , "send" , "sendStatus" , "set" , "status" , "type" ,
551
+ "vary" , "clearCookie" , "contentType" , "cookie" , "format" , "header" , "json" , "jsonp" ,
552
+ "links"
553
+ ] )
554
+ }
555
+
556
+ override Http:: RouteHandler getRouteHandler ( ) { result = base .getRouteHandler ( ) }
557
+ }
558
+
562
559
/** An Express request source. */
563
560
abstract class RequestSource extends Http:: Servers:: RequestSource { }
564
561
0 commit comments