[sr-dev] git:master:743fee55: tm: support to add text in Reason header for local generated CANCEL

Daniel-Constantin Mierla miconda at gmail.com
Tue Oct 6 17:54:18 CEST 2015


Module: kamailio
Branch: master
Commit: 743fee551c833bd31f1bfdf1a4b422886243f8b6
URL: https://github.com/kamailio/kamailio/commit/743fee551c833bd31f1bfdf1a4b422886243f8b6

Author: Daniel-Constantin Mierla <miconda at gmail.com>
Committer: Daniel-Constantin Mierla <miconda at gmail.com>
Date: 2015-10-06T17:53:15+02:00

tm: support to add text in Reason header for local generated CANCEL

---

Modified: modules/tm/t_cancel.c

---

Diff:  https://github.com/kamailio/kamailio/commit/743fee551c833bd31f1bfdf1a4b422886243f8b6.diff
Patch: https://github.com/kamailio/kamailio/commit/743fee551c833bd31f1bfdf1a4b422886243f8b6.patch

---

diff --git a/modules/tm/t_cancel.c b/modules/tm/t_cancel.c
index 69c5525..ce18354 100644
--- a/modules/tm/t_cancel.c
+++ b/modules/tm/t_cancel.c
@@ -37,6 +37,36 @@
 #include "t_hooks.h"
 
 
+typedef struct cancel_reason_map {
+	int code;
+	str text;
+} cancel_reason_map_t;
+
+static cancel_reason_map_t _cancel_reason_map[] = {
+	200, str_init("Answered elsewhere"),
+	0, {0, 0}
+};
+
+/**
+ *
+ */
+void cancel_reason_text(struct cancel_info* cancel_data)
+{
+	int i;
+
+	if(cancel_data->reason.cause<=0
+			|| cancel_data->reason.u.text.s!=NULL) return;
+
+	for(i=0; _cancel_reason_map[i].text.s!=0; i++) {
+		if(_cancel_reason_map[i].code==cancel_data->reason.cause) {
+			cancel_data->reason.u.text = _cancel_reason_map[i].text;
+			return;
+		}
+	}
+
+	return;
+}
+
 /** Prepare to cancel a transaction.
  * Determine which branches should be canceled and prepare them (internally
  * mark them as "cancel in progress", see prepare_cancel_branch()).
@@ -87,6 +117,9 @@ int cancel_uacs( struct cell *t, struct cancel_info* cancel_data, int flags)
 	int r;
 
 	ret=0;
+
+	cancel_reason_text(cancel_data);
+
 	/* cancel pending client transactions, if any */
 	for( i=0 ; i<t->nr_of_outgoings ; i++ ) 
 		if (cancel_data->cancel_bitmap & (1<<i)){




More information about the sr-dev mailing list