Index: channels/sig_ss7.c =================================================================== --- channels/sig_ss7.c (revision 318485) +++ channels/sig_ss7.c (working copy) @@ -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: @@ -938,6 +943,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); } sig_ss7_unlock_private(p); Index: channels/sig_pri.c =================================================================== --- channels/sig_pri.c (revision 318485) +++ channels/sig_pri.c (working copy) @@ -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;