[libpri-commits] mattf: trunk r365 - /trunk/q931.c
libpri-commits at lists.digium.com
libpri-commits at lists.digium.com
Fri Jul 21 08:43:32 MST 2006
Author: mattf
Date: Fri Jul 21 10:43:31 2006
New Revision: 365
URL: http://svn.digium.com/view/libpri?rev=365&view=rev
Log:
Improve call state handling code. (#7269)
Modified:
trunk/q931.c
Modified: trunk/q931.c
URL: http://svn.digium.com/view/libpri/trunk/q931.c?rev=365&r1=364&r2=365&view=diff
==============================================================================
--- trunk/q931.c (original)
+++ trunk/q931.c Fri Jul 21 10:43:31 2006
@@ -2693,18 +2693,17 @@
c->progressmask = PRI_PROG_CALLED_NOT_ISDN;
} else
c->progressmask = 0;
- if (pri->localtype == PRI_CPE) {
+ if(pri->localtype == PRI_NETWORK || pri->switchtype == PRI_SWITCH_QSIG)
+ UPDATE_OURCALLSTATE(pri, c, Q931_CALL_STATE_ACTIVE);
+ else
UPDATE_OURCALLSTATE(pri, c, Q931_CALL_STATE_CONNECT_REQUEST);
- } else {
- UPDATE_OURCALLSTATE(pri, c, Q931_CALL_STATE_ACTIVE);
- }
c->peercallstate = Q931_CALL_STATE_ACTIVE;
c->alive = 1;
- /* Setup timer */
+ /* Connect request timer */
if (c->retranstimer)
pri_schedule_del(pri, c->retranstimer);
c->retranstimer = 0;
- if ((pri->localtype == PRI_CPE) && (!pri->subchannel))
+ if ((c->ourcallstate == Q931_CALL_STATE_CONNECT_REQUEST) && (!pri->subchannel))
c->retranstimer = pri_schedule_event(pri, pri->timers[PRI_TIMER_T313], pri_connect_timeout, c);
return send_message(pri, c, Q931_CONNECT, connect_ies);
}
@@ -3422,7 +3421,9 @@
q931_release_complete(pri,c,PRI_CAUSE_INVALID_CALL_REFERENCE);
break;
}
- if (c->ourcallstate != Q931_CALL_STATE_CONNECT_REQUEST) {
+ if (!(c->ourcallstate == Q931_CALL_STATE_CONNECT_REQUEST) &&
+ !(c->ourcallstate == Q931_CALL_STATE_ACTIVE &&
+ (pri->localtype == PRI_NETWORK || pri->switchtype == PRI_SWITCH_QSIG))) {
q931_status(pri,c,PRI_CAUSE_WRONG_MESSAGE);
break;
}
More information about the libpri-commits
mailing list