]> git.ipfire.org Git - thirdparty/freeswitch.git/commitdiff
freetdm: ISDN - fixed channel restart command not specifying channel ID
authorDavid Yat Sin <dyatsin@sangoma.com>
Fri, 25 Mar 2011 18:49:14 +0000 (14:49 -0400)
committerDavid Yat Sin <dyatsin@sangoma.com>
Fri, 25 Mar 2011 18:49:14 +0000 (14:49 -0400)
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 01d5de7f8d3c9cba2220bc607de906c50bddca6b..b1af8a61c32fc7952b3bc50527ac00248311e13e 100644 (file)
@@ -662,7 +662,7 @@ void sngisdn_process_rel_ind (sngisdn_event_data_t *sngisdn_event)
                        }
                        break;
                case FTDM_CHANNEL_STATE_RESET:
-                       ftdm_log_chan_msg(ftdmchan, FTDM_LOG_DEBUG, "Processing SETUP but channel in RESET state, ignoring\n");
+                       ftdm_log_chan_msg(ftdmchan, FTDM_LOG_DEBUG, "Processing RELEASE but channel in RESET state, ignoring\n");
                        break;
                default:
                        ftdm_log_chan(ftdmchan, FTDM_LOG_CRIT, "Received RELEASE in an invalid state (%s)\n",
index b56c95b10dc0cecbf4655e64ebf1b021add7e806..674e642719cf3b78c57e662cdbbfe13285329f11 100644 (file)
@@ -60,7 +60,7 @@ void sngisdn_snd_setup(ftdm_channel_t *ftdmchan)
        }
        ftdm_log_chan(sngisdn_info->ftdmchan, FTDM_LOG_INFO, "Outgoing call: Called No:[%s] Calling No:[%s]\n", ftdmchan->caller_data.dnis.digits, ftdmchan->caller_data.cid_num.digits);
 
-       set_chan_id_ie(ftdmchan, &conEvnt.chanId);
+       set_chan_id_ie(ftdmchan, &conEvnt.chanId);      
        set_bear_cap_ie(ftdmchan, &conEvnt.bearCap[0]);
        set_called_num(ftdmchan, &conEvnt.cdPtyNmb);
        set_calling_num(ftdmchan, &conEvnt.cgPtyNmb);
@@ -125,8 +125,11 @@ void sngisdn_snd_con_complete(ftdm_channel_t *ftdmchan)
        }
        
        memset(&cnStEvnt, 0, sizeof(cnStEvnt));
-       
-       set_chan_id_ie(ftdmchan, &cnStEvnt.chanId);
+
+       /* Indicate channel ID only in first response */
+       if (!ftdm_test_flag(sngisdn_info, FLAG_SENT_CHAN_ID)) {
+               set_chan_id_ie(ftdmchan, &cnStEvnt.chanId);
+       }
 
        ftdm_log_chan(ftdmchan, FTDM_LOG_INFO, "Sending CONNECT COMPL (suId:%d suInstId:%u spInstId:%u dchan:%d ces:%d)\n", signal_data->cc_id, sngisdn_info->suInstId, sngisdn_info->spInstId, signal_data->dchan_id, sngisdn_info->ces);
 
@@ -152,7 +155,10 @@ void sngisdn_snd_proceed(ftdm_channel_t *ftdmchan, ftdm_sngisdn_progind_t prog_i
        
        memset(&cnStEvnt, 0, sizeof(cnStEvnt));
 
-       set_chan_id_ie(ftdmchan, &cnStEvnt.chanId);
+       /* Indicate channel ID only in first response */
+       if (!ftdm_test_flag(sngisdn_info, FLAG_SENT_CHAN_ID)) {
+               set_chan_id_ie(ftdmchan, &cnStEvnt.chanId);
+       }
        set_prog_ind_ie(ftdmchan, &cnStEvnt.progInd, prog_ind);
        set_facility_ie(ftdmchan, &cnStEvnt.facilityStr);
        
@@ -238,7 +244,10 @@ void sngisdn_snd_connect(ftdm_channel_t *ftdmchan)
        
        memset(&cnStEvnt, 0, sizeof(cnStEvnt));
 
-       set_chan_id_ie(ftdmchan, &cnStEvnt.chanId);
+       /* Indicate channel ID only in first response */
+       if (!ftdm_test_flag(sngisdn_info, FLAG_SENT_CHAN_ID)) {
+               set_chan_id_ie(ftdmchan, &cnStEvnt.chanId);
+       }
        set_prog_ind_ie(ftdmchan, &cnStEvnt.progInd, prog_ind);
        set_facility_ie(ftdmchan, &cnStEvnt.facilityStr);
 
index 0f9a5ebeb36c3ea9d7a6548ad1c1dca8da7d7dcd..0ac52b085c53b9d322bf28d656d75df1ed9019f7 100644 (file)
@@ -830,10 +830,6 @@ ftdm_status_t set_chan_id_ie(ftdm_channel_t *ftdmchan, ChanId *chanId)
                return FTDM_SUCCESS;
        }
 
-       if (ftdm_test_flag(sngisdn_info, FLAG_SENT_CHAN_ID)) {
-               /* Indicate channel ID only in first response */
-               return FTDM_SUCCESS;
-       }
        ftdm_set_flag(sngisdn_info, FLAG_SENT_CHAN_ID);
        
        chanId->eh.pres = PRSNT_NODEF;