]> 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:26 +0000 (17:29 -0500)
libs/freetdm/src/ftmod/ftmod_sangoma_isdn/ftmod_sangoma_isdn_stack_hndl.c

index 578677a39f9f540698dec329759538de44e27a7a..bcc7d938b7b783a8fc8e903aeea4833f20536dda 100644 (file)
@@ -801,6 +801,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 */