[libss7-commits] mattf: trunk r263 - in /trunk: isup.c isup.h libss7.h

SVN commits to the libss7 project libss7-commits at lists.digium.com
Tue Apr 28 17:31:47 CDT 2009


Author: mattf
Date: Tue Apr 28 17:31:42 2009
New Revision: 263

URL: http://svn.digium.com/svn-view/libss7?view=rev&rev=263
Log:
Add libss7 support for COT on previous CIC (#13495)

Modified:
    trunk/isup.c
    trunk/isup.h
    trunk/libss7.h

Modified: trunk/isup.c
URL: http://svn.digium.com/svn-view/libss7/trunk/isup.c?view=diff&rev=263&r1=262&r2=263
==============================================================================
--- trunk/isup.c (original)
+++ trunk/isup.c Tue Apr 28 17:31:42 2009
@@ -379,6 +379,11 @@
 		c->cot_check_required = 1;
 	else
 		c->cot_check_required = 0;
+
+	if (cci == 0x2)
+		c->cot_performed_on_previous_cic = 1;
+	else
+		c->cot_performed_on_previous_cic = 0;
 
 	if (parm[0] & 0x10)
 		c->echocontrol_ind = 1;
@@ -3306,6 +3311,7 @@
 			e->sam.got_sent_msg = c->got_sent_msg;
 			e->sam.cot_check_passed = c->cot_check_passed;
 			e->sam.cot_check_required = c->cot_check_required;
+			e->sam.cot_performed_on_previous_cic = c->cot_performed_on_previous_cic;
 			isup_start_timer(ss7, c, ISUP_TIMER_T35);
 			return 0;
 		case ISUP_INF:
@@ -3541,7 +3547,7 @@
 			return 0;
 		case ISUP_COT:
 			/* Got we CCR or CCR in IAM ?*/
-			if (!(c->got_sent_msg & ISUP_GOT_CCR)) {
+			if (!(c->got_sent_msg & ISUP_GOT_CCR) & !c->cot_performed_on_previous_cic) {
 				ss7_message(ss7, "Got COT but we didn't got CCR previously on CIC %d PC %d ", c->cic, opc);
 				return isup_handle_unexpected(ss7, c, opc);
 			}
@@ -3556,6 +3562,7 @@
 			e->e = ISUP_EVENT_COT;
 			e->cot.cic = c->cic;
 			e->cot.passed = c->cot_check_passed;
+			e->cot.cot_performed_on_previous_cic = c->cot_performed_on_previous_cic;
 			if (!c->cot_check_passed)
 				c->got_sent_msg &= ~ISUP_GOT_IAM; /* we will get a new IAM but we are kepping the call */
 			e->cot.call = c;
@@ -3938,6 +3945,7 @@
 	e->iam.cic = c->cic;
 	e->iam.transcap = c->transcap;
 	e->iam.cot_check_required = c->cot_check_required;
+	e->iam.cot_performed_on_previous_cic = c->cot_performed_on_previous_cic;
 	c->cot_check_passed = 0;
 	strncpy(e->iam.called_party_num, c->called_party_num, sizeof(e->iam.called_party_num));
 	e->iam.called_nai = c->called_nai;

Modified: trunk/isup.h
URL: http://svn.digium.com/svn-view/libss7/trunk/isup.h?view=diff&rev=263&r1=262&r2=263
==============================================================================
--- trunk/isup.h (original)
+++ trunk/isup.h Tue Apr 28 17:31:42 2009
@@ -146,6 +146,7 @@
 #define ISUP_TIMER_T5 5
 #define ISUP_TIMER_T6 6
 #define ISUP_TIMER_T7 7
+#define ISUP_TIMER_T8 8
 #define ISUP_TIMER_T12 12
 #define ISUP_TIMER_T13 13
 #define ISUP_TIMER_T14 14
@@ -242,6 +243,7 @@
 	int causeloc;
 	int cot_check_passed;
 	int cot_check_required;
+	int cot_performed_on_previous_cic;
 	int cicgroupsupervisiontype;
 	unsigned char event_info;
 	unsigned short cic;

Modified: trunk/libss7.h
URL: http://svn.digium.com/svn-view/libss7/trunk/libss7.h?view=diff&rev=263&r1=262&r2=263
==============================================================================
--- trunk/libss7.h (original)
+++ trunk/libss7.h Tue Apr 28 17:31:42 2009
@@ -179,6 +179,7 @@
 	int cic;
 	int transcap;
 	int cot_check_required;
+	int cot_performed_on_previous_cic;
 	char called_party_num[50];
 	unsigned char called_nai;
 	char calling_party_num[50];
@@ -323,6 +324,7 @@
 	int e;
 	int cic;
 	int passed;
+	int cot_performed_on_previous_cic;
 	unsigned int opc;
 	unsigned long got_sent_msg;
 	struct isup_call *call;
@@ -369,6 +371,7 @@
 	unsigned char called_nai;
 	int cot_check_required;
 	int cot_check_passed;
+	int cot_performed_on_previous_cic;
 	unsigned long got_sent_msg;
 	struct isup_call *call;
 } ss7_event_sam;




More information about the libss7-commits mailing list