[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