]> git.ipfire.org Git - thirdparty/freeswitch.git/commitdiff
fix not handling disconnect when in RINGING state
authorDavid Yat Sin <dyatsin@sangoma.com>
Thu, 9 Dec 2010 22:13:34 +0000 (17:13 -0500)
committerDavid Yat Sin <dyatsin@sangoma.com>
Thu, 9 Dec 2010 22:15:07 +0000 (17:15 -0500)
libs/freetdm/src/ftmod/ftmod_sangoma_isdn/ftmod_sangoma_isdn_stack_hndl.c

index cb9f6d33e1c56582ba33681a6fa573beb40cda42..fb65d20cab39466b11b778ccf145ce0ef74b1d48 100644 (file)
@@ -407,6 +407,7 @@ void sngisdn_process_cnst_ind (sngisdn_event_data_t *sngisdn_event)
                                        }
                                        break;
                                        case FTDM_CHANNEL_STATE_RING:
+                                       case FTDM_CHANNEL_STATE_RINGING:
                                        case FTDM_CHANNEL_STATE_PROCEED:
                                        case FTDM_CHANNEL_STATE_PROGRESS:
                                        case FTDM_CHANNEL_STATE_PROGRESS_MEDIA:
@@ -447,6 +448,7 @@ void sngisdn_process_disc_ind (sngisdn_event_data_t *sngisdn_event)
        ftdm_assert(!ftdm_test_flag(ftdmchan, FTDM_CHANNEL_STATE_CHANGE), "State change flag pending\n");
        switch (ftdmchan->state) {              
                case FTDM_CHANNEL_STATE_RING:
+               case FTDM_CHANNEL_STATE_RINGING:
                case FTDM_CHANNEL_STATE_DIALING:
                case FTDM_CHANNEL_STATE_PROCEED:
                case FTDM_CHANNEL_STATE_PROGRESS:
@@ -537,6 +539,7 @@ void sngisdn_process_rel_ind (sngisdn_event_data_t *sngisdn_event)
                case FTDM_CHANNEL_STATE_PROGRESS_MEDIA:
                case FTDM_CHANNEL_STATE_UP:
                case FTDM_CHANNEL_STATE_RING:
+               case FTDM_CHANNEL_STATE_RINGING:
                        /* If we previously had a glare on this channel,
                        this RELEASE could be for the previous call.  Confirm whether call_data has
                        not changed while we were waiting for ftdmchan->mutex by comparing suInstId's */
@@ -881,6 +884,7 @@ void sngisdn_process_sta_cfm (sngisdn_event_data_t *sngisdn_event)
                                                        break;
                                                case FTDM_CHANNEL_STATE_PROCEED:
                                                case FTDM_CHANNEL_STATE_PROGRESS:
+                                               case FTDM_CHANNEL_STATE_RINGING:
                                                case FTDM_CHANNEL_STATE_PROGRESS_MEDIA:
                                                        ftdm_log_chan_msg(ftdmchan, FTDM_LOG_WARNING, "Remote switch expecting OVERLAP receive, but we are already PROCEEDING\n");
                                                        sngisdn_snd_disconnect(ftdmchan);
@@ -899,6 +903,7 @@ void sngisdn_process_sta_cfm (sngisdn_event_data_t *sngisdn_event)
                                switch (ftdmchan->state) {
                                        case FTDM_CHANNEL_STATE_PROCEED:
                                        case FTDM_CHANNEL_STATE_PROGRESS:
+                                       case FTDM_CHANNEL_STATE_RINGING:
                                                /* T310 timer has expired */
                                                ftdmchan->caller_data.hangup_cause = staEvnt->causeDgn[0].causeVal.val;
                                                ftdm_log_chan_msg(ftdmchan, FTDM_LOG_DEBUG, "T310 Timer expired, hanging up call\n");
@@ -935,6 +940,7 @@ void sngisdn_process_sta_cfm (sngisdn_event_data_t *sngisdn_event)
                                break;
                        case 9: /* Remote switch is in "Incoming call proceeding" state */
                                switch (ftdmchan->state) {
+                                       case FTDM_CHANNEL_STATE_RINGING:
                                        case FTDM_CHANNEL_STATE_PROGRESS:
                                        case FTDM_CHANNEL_STATE_PROGRESS_MEDIA:
                                        case FTDM_CHANNEL_STATE_GET_CALLERID: