[sr-dev] git:master:83758719: siptrace: add trace_flag after it was removed

Henning Westerholt henningw at users.noreply.github.com
Tue Apr 9 21:26:04 CEST 2019


Module: kamailio
Branch: master
Commit: 8375871957ce931b87cc03442915fa319b5b3ef6
URL: https://github.com/kamailio/kamailio/commit/8375871957ce931b87cc03442915fa319b5b3ef6

Author: iionita <ionut-razvan.ionita at 1and1.ro>
Committer: Henning Westerholt <henningw at users.noreply.github.com>
Date: 2019-04-09T21:25:53+02:00

siptrace: add trace_flag after it was removed

	As requested trace_flag is added back to siptrace module.
Kamailio users requested ways to be able to stop tracing at any
moment during the script.

---

Modified: src/modules/siptrace/siptrace.c

---

Diff:  https://github.com/kamailio/kamailio/commit/8375871957ce931b87cc03442915fa319b5b3ef6.diff
Patch: https://github.com/kamailio/kamailio/commit/8375871957ce931b87cc03442915fa319b5b3ef6.patch

---

diff --git a/src/modules/siptrace/siptrace.c b/src/modules/siptrace/siptrace.c
index 2f8f32a11f..9af3b522bf 100644
--- a/src/modules/siptrace/siptrace.c
+++ b/src/modules/siptrace/siptrace.c
@@ -132,6 +132,8 @@ static str siptrace_info_avp_str = str_init("$avp(__siptrace_info_avp__)");
 #define NR_KEYS 12
 #define SIP_TRACE_TABLE_VERSION 4
 
+int trace_flag = 0;
+
 int trace_on = 0;
 int trace_sl_acks = 1;
 
@@ -213,6 +215,7 @@ static param_export_t params[] = {
 	{"fromtag_column", PARAM_STR, &fromtag_column},
 	{"totag_column", PARAM_STR, &totag_column},
 	{"direction_column", PARAM_STR, &direction_column},
+	{"trace_flag", INT_PARAM, &trace_flag},
 	{"trace_on", INT_PARAM, &trace_on},
 	{"traced_user_avp", PARAM_STR, &traced_user_avp_str},
 	{"trace_table_avp", PARAM_STR, &trace_table_avp_str},
@@ -274,6 +277,12 @@ static int mod_init(void)
 		return -1;
 	}
 
+	if(trace_flag < 0 || trace_flag > (int)MAX_FLAG) {
+		LM_ERR("invalid trace flag %d\n", trace_flag);
+		return -1;
+	}
+	trace_flag = 1 << trace_flag;
+
 	trace_to_database_flag = (int *)shm_malloc(sizeof(int));
 	if(trace_to_database_flag == NULL) {
 		LM_ERR("no more shm memory left\n");
@@ -1122,7 +1131,8 @@ static int sip_trace(sip_msg_t *msg, dest_info_t *dst,
 }
 
 #define trace_is_off(_msg)                        \
-	 (((_msg)->msg_flags & FL_SIPTRACE) == 0)
+	 ((((_msg)->msg_flags & FL_SIPTRACE) == 0) \
+		|| ((_msg->flags & trace_flag) == 0))
 
 static void trace_onreq_out(struct cell *t, int type, struct tmcb_params *ps)
 {
@@ -1529,6 +1539,11 @@ static void trace_tm_neg_ack_in(struct cell *t, int type, struct tmcb_params *ps
 		return;
 	}
 
+	if(trace_is_off(ps->req)) {
+		LM_DBG("trace off...\n");
+		return;
+	}
+
 	sip_trace(ps->req, info->uriState == STRACE_PARSED_URI ? &info->u.dest_info : NULL , NULL, NULL);
 }
 




More information about the sr-dev mailing list