]> git.ipfire.org Git - thirdparty/freeswitch.git/commitdiff
chlog: Freetdm: Support for force_sending_complete (Requires libsng_isdn support)
authorDavid Yat Sin <dyatsin@sangoma.com>
Fri, 10 Jun 2011 15:11:44 +0000 (11:11 -0400)
committerDavid Yat Sin <dyatsin@sangoma.com>
Fri, 10 Jun 2011 15:11:44 +0000 (11:11 -0400)
libs/freetdm/src/ftmod/ftmod_sangoma_isdn/ftmod_sangoma_isdn.h
libs/freetdm/src/ftmod/ftmod_sangoma_isdn/ftmod_sangoma_isdn_cfg.c
libs/freetdm/src/ftmod/ftmod_sangoma_isdn/ftmod_sangoma_isdn_stack_out.c
libs/freetdm/src/ftmod/ftmod_sangoma_isdn/ftmod_sangoma_isdn_transfer.c

index 68e1371b79aa65cc897eeede1ccdd7b392d195f4..280b3ed5271531d04fc55f18d0887e84ae61a6a3 100644 (file)
@@ -251,7 +251,8 @@ typedef struct sngisdn_span_data {
        uint8_t                 raw_trace_q931; /* TODO: combine with trace_flags */
        uint8_t                 raw_trace_q921; /* TODO: combine with trace_flags */
        uint8_t                 timer_t3;
-       uint8_t                 restart_opt;    
+       uint8_t                 restart_opt;
+       uint8_t                 force_sending_complete;
        char*                   local_numbers[SNGISDN_NUM_LOCAL_NUMBERS];
        ftdm_sched_t    *sched;
        ftdm_queue_t    *event_queue;
index ec688eb2ba7fad788d1960987e2742647737ec68..c4e64d77274b64b64c207704d0dfe1f138dceecd 100644 (file)
@@ -286,7 +286,8 @@ ftdm_status_t ftmod_isdn_parse_cfg(ftdm_conf_parameter_t *ftdm_parameters, ftdm_
        signal_data->restart_opt = SNGISDN_OPT_DEFAULT;
        signal_data->link_id = span->span_id;
        signal_data->transfer_timeout = 20000;
-       signal_data->att_remove_dtmf = 1;
+       signal_data->att_remove_dtmf = SNGISDN_OPT_DEFAULT;
+       signal_data->force_sending_complete = SNGISDN_OPT_DEFAULT;
 
        span->default_caller_data.dnis.plan = FTDM_NPI_INVALID;
        span->default_caller_data.dnis.type = FTDM_TON_INVALID;
@@ -386,6 +387,8 @@ ftdm_status_t ftmod_isdn_parse_cfg(ftdm_conf_parameter_t *ftdm_parameters, ftdm_
                        parse_yesno(var, val, &signal_data->raw_trace_q931);
                } else if (!strcasecmp(var, "q921-raw-trace")) {
                        parse_yesno(var, val, &signal_data->raw_trace_q921);
+               } else if (!strcasecmp(var, "force-sending-complete")) {
+                       parse_yesno(var, val, &signal_data->force_sending_complete);
                } else if (!strcasecmp(var, "early-media-override")) {
                        if (parse_early_media(val, span) != FTDM_SUCCESS) {
                                return FTDM_FAIL;
index 9a1e66fe51c09f63fba77a3ac6724534b9435b6d..a424313fc1e260ba3445c247b68e9a2b8ba696a7 100644 (file)
@@ -51,9 +51,10 @@ void sngisdn_snd_setup(ftdm_channel_t *ftdmchan)
        ftdm_mutex_unlock(g_sngisdn_data.ccs[signal_data->cc_id].mutex);
 
        memset(&conEvnt, 0, sizeof(conEvnt));
-       if (signal_data->switchtype == SNGISDN_SWITCH_EUROISDN) {
+       if (signal_data->switchtype == SNGISDN_SWITCH_EUROISDN || signal_data->force_sending_complete == SNGISDN_OPT_TRUE) {
                conEvnt.sndCmplt.eh.pres = PRSNT_NODEF;
        }
+       
        if (ftdmchan->span->trunk_type == FTDM_TRUNK_BRI_PTMP &&
                signal_data->signalling == SNGISDN_SIGNALING_NET) {
                sngisdn_info->ces = CES_MNGMNT;
index f00087a0618b0b5fee2878536a9d8fa5760928a2..4c0c9555ddc0e2c849c7970680a9a6a28fba058d 100644 (file)
@@ -273,7 +273,7 @@ ftdm_status_t sngisdn_att_transfer_process_dtmf(ftdm_channel_t *ftdmchan, const
                att_courtesy_transfer_complete(sngisdn_info, sngisdn_info->transfer_data.response);
        }
 
-       if (signal_data->att_remove_dtmf) {
+       if (signal_data->att_remove_dtmf != SNGISDN_OPT_FALSE) {
                /* If we return FTDM_BREAK, dtmf event is not queue'ed to user */
                status = FTDM_BREAK;
        }