]> git.ipfire.org Git - thirdparty/freeswitch.git/commitdiff
Freetdm - ISDN:Fix for progress indicator not set properly. Allow state change from...
authorDavid Yat Sin <dyatsin@sangoma.com>
Wed, 5 Jan 2011 21:25:06 +0000 (16:25 -0500)
committerDavid Yat Sin <dyatsin@sangoma.com>
Wed, 5 Jan 2011 21:25:06 +0000 (16:25 -0500)
libs/freetdm/src/ftmod/ftmod_sangoma_isdn/ftmod_sangoma_isdn.c
libs/freetdm/src/ftmod/ftmod_sangoma_isdn/ftmod_sangoma_isdn_stack_hndl.c
libs/freetdm/src/ftmod/ftmod_sangoma_isdn/ftmod_sangoma_isdn_stack_out.c
libs/freetdm/src/ftmod/ftmod_sangoma_isdn/ftmod_sangoma_isdn_support.c

index 259bf18b81647d25f4a2d7669a1d359a8af0c68b..214a83f631841ff9bec3dc0f21a7cc664c1a44f7 100644 (file)
@@ -234,7 +234,7 @@ ftdm_state_map_t sangoma_isdn_state_map = {
                ZSD_OUTBOUND,
                ZSM_UNACCEPTABLE,
                {FTDM_CHANNEL_STATE_RINGING, FTDM_END},
-               {FTDM_CHANNEL_STATE_TERMINATING, FTDM_CHANNEL_STATE_HANGUP, FTDM_CHANNEL_STATE_PROGRESS_MEDIA, FTDM_CHANNEL_STATE_UP, 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_OUTBOUND,
index 05b7158d6eb1f1c3372a6b8c1c1b5d079fcdb2ac..f8a257ebc5c9b619a48f7d028c52f81d3b7f64c4 100644 (file)
@@ -372,7 +372,10 @@ void sngisdn_process_cnst_ind (sngisdn_event_data_t *sngisdn_event)
                                case FTDM_CHANNEL_STATE_PROGRESS:
                                case FTDM_CHANNEL_STATE_RINGING:
                                        if (cnStEvnt->progInd.eh.pres && cnStEvnt->progInd.progDesc.val == IN_PD_IBAVAIL) {
+                                               ftdm_log_chan_msg(ftdmchan, FTDM_LOG_DEBUG, "Early media available\n");
                                                sngisdn_set_flag(sngisdn_info, FLAG_MEDIA_READY);
+                                       } else {
+                                               ftdm_log_chan_msg(ftdmchan, FTDM_LOG_DEBUG, "Early media not available\n");
                                        }
                                        switch (evntType) {
                                                case MI_CALLPROC:
@@ -387,10 +390,8 @@ void sngisdn_process_cnst_ind (sngisdn_event_data_t *sngisdn_event)
                                                        break;
                                                case MI_PROGRESS:
                                                        if (sngisdn_test_flag(sngisdn_info, FLAG_MEDIA_READY)) {
-                                                               
                                                                ftdm_set_state(ftdmchan, FTDM_CHANNEL_STATE_PROGRESS_MEDIA);
                                                        } else if (ftdmchan->state != FTDM_CHANNEL_STATE_PROGRESS) {
-                                                                                                                               
                                                                ftdm_set_state(ftdmchan, FTDM_CHANNEL_STATE_PROGRESS);
                                                        }
                                                        break;
index bb04f887abf591fb8fe246ca72bf6858010cc75c..26d8bec0f00b2726ad42fd64b69fe4d10556d35e 100644 (file)
@@ -39,7 +39,7 @@ void sngisdn_snd_setup(ftdm_channel_t *ftdmchan)
        ConEvnt conEvnt;        
        sngisdn_chan_data_t *sngisdn_info = ftdmchan->call_data;
        sngisdn_span_data_t *signal_data = (sngisdn_span_data_t*) ftdmchan->span->signal_data;
-       ftdm_sngisdn_progind_t prog_ind = {SNGISDN_PROGIND_LOC_USER, SNGISDN_PROGIND_DESCR_NETE_ISDN};
+       ftdm_sngisdn_progind_t prog_ind = {SNGISDN_PROGIND_LOC_USER, SNGISDN_PROGIND_DESCR_ORIG_NISDN};
 
        ftdm_assert((!sngisdn_info->suInstId && !sngisdn_info->spInstId), "Trying to call out, but call data was not cleared\n");
        
index a2cf2efb487e492e3c6dfbd7532b5fc4258a3549..7e90ccd12654afe52822abbf140c9598c78a3425 100644 (file)
@@ -789,7 +789,7 @@ ftdm_status_t set_prog_ind_ie(ftdm_channel_t *ftdmchan, ProgInd *progInd, ftdm_s
                        break;
                default:
                        ftdm_log(FTDM_LOG_WARNING, "Invalid prog_ind location:%d\n", loc);
-                       progInd->location.val = IN_PD_NOTETEISDN;
+                       progInd->location.val = IN_LOC_USER;
        }
        return FTDM_SUCCESS;
 }