1- var url = require ( 'url' )
2-
3- var qs = require ( 'qs' )
41var microtime = require ( '../../../optionalDependencies/microtime' )
52var isNumber = require ( 'lodash.isnumber' )
63var debug = require ( 'debug' ) ( 'risingstack/trace' )
74
85var util = require ( './util' )
96var consts = require ( '../../../consts' )
107
8+ function isPathIgnored ( ignorePaths , currentPath ) {
9+ if ( ! ignorePaths || ! ignorePaths . length ) {
10+ return false
11+ }
12+
13+ for ( var i = 0 ; i < ignorePaths . length ; i ++ ) {
14+ if ( currentPath . match ( ignorePaths [ i ] ) ) {
15+ return true
16+ }
17+ }
18+
19+ return false
20+ }
21+
1122function wrapListener ( listener , agent , mustCollectStore ) {
12- var ignoreHeaders = agent . getConfig ( ) . ignoreHeaders
23+ var config = agent . getConfig ( )
24+ var ignoreHeaders = config . ignoreHeaders
25+ var ignorePaths = config . ignorePaths
1326
1427 return function ( request , response ) {
28+ var requestUrl = request . url . split ( '?' ) [ 0 ]
1529 var serverReceiveTime
1630
1731 var headers = request . headers
1832 var spanId = headers [ 'x-span-id' ]
1933
20- var skipped = ignoreHeaders && Object . keys ( ignoreHeaders ) . some ( function ( key ) {
34+ var isSkippedHeader = ignoreHeaders && Object . keys ( ignoreHeaders ) . some ( function ( key ) {
2135 return headers [ key ] && ( ignoreHeaders [ key ] . indexOf ( '*' ) > - 1 || ignoreHeaders [ key ] . indexOf ( headers [ key ] ) > - 1 )
2236 } )
2337
24- if ( skipped ) {
25- debug ( 'trace event (sr); request skipped because of ignoreHeaders ' , headers )
38+ if ( isSkippedHeader || isPathIgnored ( ignorePaths , requestUrl ) ) {
39+ debug ( 'trace event (sr); request skipped because of ignore options ' , headers )
2640 return listener . apply ( this , arguments )
2741 }
2842
29- var requestUrl = url . parse ( request . url )
30- var requestQuery = qs . parse ( requestUrl . query ) . requestId
31-
3243 var originalWriteHead = response . writeHead
3344
34- var requestId = headers [ 'request-id' ] || headers [ 'x-request-id' ] || requestQuery || agent . generateId ( )
45+ var requestId = headers [ 'request-id' ] || headers [ 'x-request-id' ] || agent . generateId ( )
3546
3647 debug ( 'trace event (sr); request: %s' , requestId , headers )
3748
@@ -53,7 +64,7 @@ function wrapListener (listener, agent, mustCollectStore) {
5364 id : requestId ,
5465 spanId : spanId ,
5566 host : headers . host ,
56- url : util . formatDataUrl ( requestUrl . pathname ) ,
67+ url : util . formatDataUrl ( requestUrl ) ,
5768 time : serverReceiveTime ,
5869 method : method ,
5970 protocol : consts . PROTOCOLS . HTTP ,
@@ -76,7 +87,7 @@ function wrapListener (listener, agent, mustCollectStore) {
7687 id : requestId ,
7788 spanId : headers [ 'x-span-id' ] ,
7889 host : headers . host ,
79- url : util . formatDataUrl ( requestUrl . pathname ) ,
90+ url : util . formatDataUrl ( requestUrl ) ,
8091 time : serverSendTime ,
8192 protocol : consts . PROTOCOLS . HTTP ,
8293 statusCode : response . statusCode ,
0 commit comments