[asterisk-commits] rmudgett: branch 1.8 r318499 - in /branches/1.8/channels: sig_pri.c sig_ss7.c

SVN commits to the Asterisk project asterisk-commits at lists.digium.com
Tue May 10 18:41:14 CDT 2011


Author: rmudgett
Date: Tue May 10 18:41:08 2011
New Revision: 318499

URL: http://svnview.digium.com/svn/asterisk?view=rev&rev=318499
Log:
Unable to pickup DAHDI/PRI call because call state is reported as DIALING.

The channel state is not updated to RINGING when an ALERTING message is
received.  Regression caused when sig_pri.c (also sig_ss7.c) extracted
from chan_dahdi.c.

* Added missing channel state update to RINGING when the
AST_CONTROL_RINGING frame is queued for ISDN and SS7.

(closes issue #19257)
Reported by: alecdavis
Patches:
      issue19257_v1.8_v2.patch uploaded by rmudgett (license 664)
Tested by: alecdavis, rmudgett

Modified:
    branches/1.8/channels/sig_pri.c
    branches/1.8/channels/sig_ss7.c

Modified: branches/1.8/channels/sig_pri.c
URL: http://svnview.digium.com/svn/asterisk/branches/1.8/channels/sig_pri.c?view=diff&rev=318499&r1=318498&r2=318499
==============================================================================
--- branches/1.8/channels/sig_pri.c (original)
+++ branches/1.8/channels/sig_pri.c Tue May 10 18:41:08 2011
@@ -5374,6 +5374,11 @@
 					e->ringing.subcmds, e->ringing.call);
 				sig_pri_cc_generic_check(pri, chanpos, AST_CC_CCNR);
 				sig_pri_set_echocanceller(pri->pvts[chanpos], 1);
+				sig_pri_lock_owner(pri, chanpos);
+				if (pri->pvts[chanpos]->owner) {
+					ast_setstate(pri->pvts[chanpos]->owner, AST_STATE_RINGING);
+					ast_channel_unlock(pri->pvts[chanpos]->owner);
+				}
 				pri_queue_control(pri, chanpos, AST_CONTROL_RINGING);
 				if (pri->pvts[chanpos]->call_level < SIG_PRI_CALL_LEVEL_ALERTING) {
 					pri->pvts[chanpos]->call_level = SIG_PRI_CALL_LEVEL_ALERTING;

Modified: branches/1.8/channels/sig_ss7.c
URL: http://svnview.digium.com/svn/asterisk/branches/1.8/channels/sig_ss7.c?view=diff&rev=318499&r1=318498&r2=318499
==============================================================================
--- branches/1.8/channels/sig_ss7.c (original)
+++ branches/1.8/channels/sig_ss7.c Tue May 10 18:41:08 2011
@@ -687,6 +687,11 @@
 					if (p->call_level < SIG_SS7_CALL_LEVEL_ALERTING) {
 						p->call_level = SIG_SS7_CALL_LEVEL_ALERTING;
 					}
+					sig_ss7_lock_owner(linkset, chanpos);
+					if (p->owner) {
+						ast_setstate(p->owner, AST_STATE_RINGING);
+						ast_channel_unlock(p->owner);
+					}
 					sig_ss7_queue_control(linkset, chanpos, AST_CONTROL_RINGING);
 					break;
 				case CPG_EVENT_PROGRESS:
@@ -937,6 +942,11 @@
 					if (e->acm.called_party_status_ind == 1) {
 						if (p->call_level < SIG_SS7_CALL_LEVEL_ALERTING) {
 							p->call_level = SIG_SS7_CALL_LEVEL_ALERTING;
+						}
+						sig_ss7_lock_owner(linkset, chanpos);
+						if (p->owner) {
+							ast_setstate(p->owner, AST_STATE_RINGING);
+							ast_channel_unlock(p->owner);
 						}
 						sig_ss7_queue_control(linkset, chanpos, AST_CONTROL_RINGING);
 					}




More information about the asterisk-commits mailing list