{FTDM_CHANNEL_STATE_RING, FTDM_END},
{FTDM_CHANNEL_STATE_SUSPENDED, FTDM_CHANNEL_STATE_RESTART,
FTDM_CHANNEL_STATE_TERMINATING, FTDM_CHANNEL_STATE_HANGUP,
- FTDM_CHANNEL_STATE_PROGRESS, FTDM_END}
+ FTDM_CHANNEL_STATE_RINGING, FTDM_CHANNEL_STATE_PROGRESS, FTDM_END}
+ },
+ {
+ ZSD_INBOUND,
+ ZSM_UNACCEPTABLE,
+ {FTDM_CHANNEL_STATE_RINGING, FTDM_END},
+ {FTDM_CHANNEL_STATE_TERMINATING, FTDM_CHANNEL_STATE_HANGUP,
+ FTDM_CHANNEL_STATE_PROGRESS, FTDM_CHANNEL_STATE_PROGRESS_MEDIA,
+ FTDM_CHANNEL_STATE_UP, FTDM_END},
},
{
ZSD_INBOUND,
break;
/**************************************************************************/
+ /* We handle RING indication the same way we would indicate PROGRESS */
+ case FTDM_CHANNEL_STATE_RINGING:
case FTDM_CHANNEL_STATE_PROGRESS:
if (ftdmchan->last_state == FTDM_CHANNEL_STATE_SUSPENDED) {
ftdm_set_state(ftdmchan, FTDM_CHANNEL_STATE_PROGRESS_MEDIA);
} else {
/* inbound call so we need to send out ACM */
- ft_to_sngss7_acm(ftdmchan);
+ if (!sngss7_test_ckt_flag(sngss7_info, FLAG_SENT_ACM)) {
+ sngss7_set_ckt_flag(sngss7_info, FLAG_SENT_ACM);
+ ft_to_sngss7_acm(ftdmchan);
+ }
}
break;