]> git.ipfire.org Git - thirdparty/freeswitch.git/commitdiff
freetdm: allow reception of FACILITY msg in any channel state when transparent facili...
authorDavid Yat Sin <dyatsin@sangoma.com>
Mon, 7 Feb 2011 22:29:26 +0000 (17:29 -0500)
committerDavid Yat Sin <dyatsin@sangoma.com>
Mon, 7 Feb 2011 22:29:52 +0000 (17:29 -0500)
libs/freetdm/src/ftmod/ftmod_sangoma_isdn/ftmod_sangoma_isdn_stack_hndl.c

index 0b52011d427d93f1828216a04f216285af09f784..fff34fcae64a9079f5e659cd38ffa730a846640c 100644 (file)
@@ -797,6 +797,23 @@ void sngisdn_process_fac_ind (sngisdn_event_data_t *sngisdn_event)
 
        ftdm_log_chan(ftdmchan, FTDM_LOG_DEBUG, "Processing FACILITY IND (suId:%u suInstId:%u spInstId:%u)\n", suId, suInstId, spInstId);
 
+       if (signal_data->facility_ie_decode == SNGISDN_OPT_FALSE) {
+               /* If Facility decoding is disabled, we do not care about current call state, just pass event up to user */
+               ftdm_sigmsg_t sigev;
+               if (facEvnt->facElmt.facStr.pres) {
+                       get_facility_ie_str(ftdmchan, &facEvnt->facElmt.facStr.val[2], facEvnt->facElmt.facStr.len-2);
+               }
+               memset(&sigev, 0, sizeof(sigev));
+               sigev.chan_id = ftdmchan->chan_id;
+               sigev.span_id = ftdmchan->span_id;
+               sigev.channel = ftdmchan;
+               
+               sigev.event_id = FTDM_SIGEVENT_FACILITY;
+               ftdm_span_send_signal(ftdmchan->span, &sigev);
+               ISDN_FUNC_TRACE_EXIT(__FUNCTION__);
+               return;
+       }
+
        switch (ftdmchan->state) {
                case FTDM_CHANNEL_STATE_GET_CALLERID:
                        /* Update the caller ID Name */