[Asterisk-cvs] libpri q921.c,1.13,1.14 q931.c,1.63,1.64

markster at lists.digium.com markster at lists.digium.com
Mon Jun 7 10:53:03 CDT 2004


Update of /usr/cvsroot/libpri
In directory mongoose.digium.com:/tmp/cvs-serv2828

Modified Files:
	q921.c q931.c 
Log Message:
More GR-303 fixes, detect drop of D-channel


Index: q921.c
===================================================================
RCS file: /usr/cvsroot/libpri/q921.c,v
retrieving revision 1.13
retrieving revision 1.14
diff -u -d -r1.13 -r1.14
--- q921.c	5 Jun 2004 06:50:55 -0000	1.13
+++ q921.c	7 Jun 2004 15:55:39 -0000	1.14
@@ -355,9 +355,26 @@
          q921_start(pri, 1);
          pri->schedev = 1;
       }
+	} else if (pri->solicitfbit) {
+         if (pri->debug & PRI_DEBUG_Q921_STATE)
+            pri_message("-- Retrying poll with f-bit\n");
+		pri->retrans++;
+		if (pri->retrans < N_200) {
+			pri->solicitfbit = 1;
+			q921_rr(pri, 1, 1);
+			pri->t200_timer = pri_schedule_event(pri, T_200, t200_expire, pri);
+		} else {
+	         if (pri->debug & PRI_DEBUG_Q921_STATE) 
+	               pri_message("-- Timeout occured, restarting PRI\n");
+	         pri->q921_state = Q921_LINK_CONNECTION_RELEASED;
+	      	pri->t200_timer = 0;
+	         q921_dchannel_down(pri);
+	         q921_start(pri, 1);
+	         pri->schedev = 1;
+		}
 	} else {
 		pri_error("T200 counter expired, nothing to send...\n");
-   	pri->t200_timer = 0;
+	   	pri->t200_timer = 0;
 	}
 }
 
@@ -439,12 +456,13 @@
 			pri_message("T203 counter expired, sending RR and scheduling T203 again\n");
 		/* Solicit an F-bit in the other's RR */
 		pri->solicitfbit = 1;
+		pri->retrans = 0;
 		q921_rr(pri, 1, 1);
-		/* Restart ourselves */
-		pri->t203_timer = pri_schedule_event(pri, T_203, t203_expire, pri);
+		/* Start timer T200 to resend our RR if we don't get it */
+		pri->t203_timer = pri_schedule_event(pri, T_200, t200_expire, pri);
 	} else {
 		if (pri->debug &  PRI_DEBUG_Q921_STATE)
-			pri_message("T203 counter expired in weird statd %d\n", pri->q921_state);
+			pri_message("T203 counter expired in weird state %d\n", pri->q921_state);
 		pri->t203_timer = 0;
 	}
 }

Index: q931.c
===================================================================
RCS file: /usr/cvsroot/libpri/q931.c,v
retrieving revision 1.63
retrieving revision 1.64
diff -u -d -r1.63 -r1.64
--- q931.c	7 Jun 2004 03:33:51 -0000	1.63
+++ q931.c	7 Jun 2004 15:55:39 -0000	1.64
@@ -1923,9 +1923,16 @@
 
 static int connect_acknowledge_ies[] = { -1 };
 
+static int gr303_connect_acknowledge_ies[] = { Q931_CHANNEL_IDENT, -1 };
+
 static int q931_connect_acknowledge(struct pri *pri, q931_call *c)
 {
-	return send_message(pri, c, Q931_CONNECT_ACKNOWLEDGE, connect_acknowledge_ies);
+	if (pri->subchannel) {
+		if (pri->localtype == PRI_CPE)
+			return send_message(pri, c, Q931_CONNECT_ACKNOWLEDGE, gr303_connect_acknowledge_ies);
+	} else
+		return send_message(pri, c, Q931_CONNECT_ACKNOWLEDGE, connect_acknowledge_ies);
+	return 0;
 }
 
 int q931_hangup(struct pri *pri, q931_call *c, int cause)




More information about the svn-commits mailing list