@@ -184,6 +184,7 @@ static int parse_trace_id(unsigned int type, void *val);
184
184
185
185
void free_trace_info_pkg (void * param );
186
186
void free_trace_info_shm (void * param );
187
+ static void free_trace_filters (struct trace_filter * list );
187
188
188
189
189
190
static int init_dyn_tracing (void );
@@ -1111,12 +1112,18 @@ static void trace_transaction_dlgcb(struct dlg_cell* dlg, int type,
1111
1112
1112
1113
void free_trace_info_pkg (void * param )
1113
1114
{
1114
- pkg_free ((trace_info_p )param );
1115
+ trace_info_p info = (trace_info_p )param ;
1116
+ if (info -> trace_list -> dynamic )
1117
+ trace_id_unref (info -> trace_list );
1118
+ pkg_free (param );
1115
1119
}
1116
1120
1117
1121
void free_trace_info_shm (void * param )
1118
1122
{
1119
- shm_free ((trace_info_p )param );
1123
+ trace_info_p info = (trace_info_p )param ;
1124
+ if (info -> trace_list -> dynamic )
1125
+ trace_id_unref (info -> trace_list );
1126
+ shm_free (param );
1120
1127
}
1121
1128
1122
1129
static int trace_transaction (struct sip_msg * msg , trace_info_p info ,
@@ -3213,7 +3220,8 @@ static int process_dyn_tracing(struct sip_msg *msg, void *param)
3213
3220
break ;
3214
3221
}
3215
3222
}
3216
- sip_trace_handle (msg , it , el -> scope , el -> type , NULL );
3223
+ if (sip_trace_handle (msg , it , el -> scope , el -> type , NULL ) == 1 )
3224
+ trace_id_ref (el );
3217
3225
skip :
3218
3226
continue ;
3219
3227
}
0 commit comments