[svn-commits] rmudgett: branch rmudgett/call_waiting r1521 - /team/rmudgett/call_waiting/
SVN commits to the Digium repositories
svn-commits at lists.digium.com
Mon Mar 8 17:26:49 CST 2010
Author: rmudgett
Date: Mon Mar 8 17:26:45 2010
New Revision: 1521
URL: http://svnview.digium.com/svn/libpri?view=rev&rev=1521
Log:
Adjust Q.931 call state for moved decision to send CONNECT_ACKNOWLEDGE.
Also make the channel specified in the CONNECT_ACKNOWLEDGE channel id
exclusive.
Modified:
team/rmudgett/call_waiting/q931.c
Modified: team/rmudgett/call_waiting/q931.c
URL: http://svnview.digium.com/svn/libpri/team/rmudgett/call_waiting/q931.c?view=diff&rev=1521&r1=1520&r2=1521
==============================================================================
--- team/rmudgett/call_waiting/q931.c (original)
+++ team/rmudgett/call_waiting/q931.c Mon Mar 8 17:26:45 2010
@@ -5108,10 +5108,14 @@
{
int *use_ies;
+ UPDATE_OURCALLSTATE(ctrl, call, Q931_CALL_STATE_ACTIVE);
+ call->peercallstate = Q931_CALL_STATE_ACTIVE;
if (channel) {
call->ds1no = (channel & 0xff00) >> 8;
call->ds1explicit = (channel & 0x10000) >> 16;
call->channelno = channel & 0xff;
+ call->chanflags &= ~FLAG_PREFERRED;
+ call->chanflags |= FLAG_EXCLUSIVE;
}
use_ies = NULL;
if (ctrl->subchannel && !ctrl->bri) {
@@ -5636,6 +5640,13 @@
disconnect = 0;
release_compl = 1;
break;
+ case Q931_CALL_STATE_CONNECT_REQUEST:
+ /*
+ * Send RELEASE because the B channel negotiation failed
+ * for call waiting.
+ */
+ disconnect = 0;
+ break;
default:
/*
* Send DISCONNECT because some other message
@@ -7190,8 +7201,6 @@
q931_status(ctrl, c, PRI_CAUSE_WRONG_MESSAGE);
break;
}
- UPDATE_OURCALLSTATE(ctrl, c, Q931_CALL_STATE_ACTIVE);
- c->peercallstate = Q931_CALL_STATE_CONNECT_REQUEST;
ctrl->ev.e = PRI_EVENT_ANSWER;
ctrl->ev.answer.subcmds = &ctrl->subcmds;
@@ -7205,6 +7214,9 @@
if (!PRI_MASTER(ctrl)->manual_connect_ack) {
q931_connect_acknowledge(ctrl, c, 0);
+ } else {
+ UPDATE_OURCALLSTATE(ctrl, c, Q931_CALL_STATE_CONNECT_REQUEST);
+ c->peercallstate = Q931_CALL_STATE_CONNECT_REQUEST;
}
if (c->cis_auto_disconnect && c->cis_call) {
More information about the svn-commits
mailing list