@@ -204,6 +204,24 @@ module HTTP {
204
204
*/
205
205
abstract HeaderDefinition getAResponseHeader ( string name ) ;
206
206
207
+ /**
208
+ * Gets a request object originating from this route handler.
209
+ *
210
+ * Use `RequestSource.ref()` to get reference to this request object.
211
+ */
212
+ final Servers:: RequestSource getARequestSource ( ) {
213
+ result .getRouteHandler ( ) = this
214
+ }
215
+
216
+ /**
217
+ * Gets a request object originating from this route handler.
218
+ *
219
+ * Use `RequestSource.ref()` to get reference to this request object.
220
+ */
221
+ final Servers:: ResponseSource getAResponseSource ( ) {
222
+ result .getRouteHandler ( ) = this
223
+ }
224
+
207
225
/**
208
226
* Gets an expression that contains a request object handled
209
227
* by this handler.
@@ -296,14 +314,21 @@ module HTTP {
296
314
*/
297
315
abstract RouteHandler getRouteHandler ( ) ;
298
316
299
- predicate flowsTo ( DataFlow:: Node nd ) { ref ( DataFlow:: TypeTracker:: end ( ) ) .flowsTo ( nd ) }
317
+ /** DEPRECATED. Use `ref().flowsTo()` instead. */
318
+ deprecated
319
+ predicate flowsTo ( DataFlow:: Node nd ) { ref ( ) .flowsTo ( nd ) }
300
320
301
321
private DataFlow:: SourceNode ref ( DataFlow:: TypeTracker t ) {
302
322
t .start ( ) and
303
323
result = this
304
324
or
305
325
exists ( DataFlow:: TypeTracker t2 | result = ref ( t2 ) .track ( t2 , t ) )
306
326
}
327
+
328
+ /** Gets a `SourceNode` that refers to this request object. */
329
+ DataFlow:: SourceNode ref ( ) {
330
+ result = ref ( DataFlow:: TypeTracker:: end ( ) )
331
+ }
307
332
}
308
333
309
334
/**
@@ -317,14 +342,20 @@ module HTTP {
317
342
*/
318
343
abstract RouteHandler getRouteHandler ( ) ;
319
344
320
- predicate flowsTo ( DataFlow:: Node nd ) { ref ( DataFlow:: TypeTracker:: end ( ) ) .flowsTo ( nd ) }
345
+ /** DEPRECATED. Use `ref().flowsTo()` instead. */
346
+ predicate flowsTo ( DataFlow:: Node nd ) { ref ( ) .flowsTo ( nd ) }
321
347
322
348
private DataFlow:: SourceNode ref ( DataFlow:: TypeTracker t ) {
323
349
t .start ( ) and
324
350
result = this
325
351
or
326
352
exists ( DataFlow:: TypeTracker t2 | result = ref ( t2 ) .track ( t2 , t ) )
327
353
}
354
+
355
+ /** Gets a `SourceNode` that refers to this response object. */
356
+ DataFlow:: SourceNode ref ( ) {
357
+ result = ref ( DataFlow:: TypeTracker:: end ( ) )
358
+ }
328
359
}
329
360
330
361
/**
@@ -333,7 +364,7 @@ module HTTP {
333
364
class StandardRequestExpr extends RequestExpr {
334
365
RequestSource src ;
335
366
336
- StandardRequestExpr ( ) { src .flowsTo ( DataFlow:: valueNode ( this ) ) }
367
+ StandardRequestExpr ( ) { src .ref ( ) . flowsTo ( DataFlow:: valueNode ( this ) ) }
337
368
338
369
override RouteHandler getRouteHandler ( ) { result = src .getRouteHandler ( ) }
339
370
}
@@ -344,7 +375,7 @@ module HTTP {
344
375
class StandardResponseExpr extends ResponseExpr {
345
376
ResponseSource src ;
346
377
347
- StandardResponseExpr ( ) { src .flowsTo ( DataFlow:: valueNode ( this ) ) }
378
+ StandardResponseExpr ( ) { src .ref ( ) . flowsTo ( DataFlow:: valueNode ( this ) ) }
348
379
349
380
override RouteHandler getRouteHandler ( ) { result = src .getRouteHandler ( ) }
350
381
}
0 commit comments