From: Moises Silva Date: Sun, 9 Nov 2014 08:33:08 +0000 (-0500) Subject: OPENZAP-232 #resolve X-Git-Tag: v1.4.14~2^2~36 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=2f1b12fdc0f74b10fe8f38f3dc59f875ad4a072c;p=thirdparty%2Ffreeswitch.git OPENZAP-232 #resolve Patched-By: Florian Richter Check for digits received on sangoma isdn stack to avoid delaying moving to the ring state if all digits are received at once in overlap dialing mode --- diff --git a/libs/freetdm/src/ftmod/ftmod_sangoma_isdn/ftmod_sangoma_isdn_stack_hndl.c b/libs/freetdm/src/ftmod/ftmod_sangoma_isdn/ftmod_sangoma_isdn_stack_hndl.c index b414d4dfb1..f9516235b7 100644 --- a/libs/freetdm/src/ftmod/ftmod_sangoma_isdn/ftmod_sangoma_isdn_stack_hndl.c +++ b/libs/freetdm/src/ftmod/ftmod_sangoma_isdn/ftmod_sangoma_isdn_stack_hndl.c @@ -203,8 +203,17 @@ void sngisdn_process_con_ind (sngisdn_event_data_t *sngisdn_event) } } #endif - if (signal_data->overlap_dial == SNGISDN_OPT_TRUE && !conEvnt->sndCmplt.eh.pres) { - ftdm_set_state(ftdmchan, FTDM_CHANNEL_STATE_COLLECT); + if (signal_data->overlap_dial == SNGISDN_OPT_TRUE) { + ftdm_size_t min_digits = ((sngisdn_span_data_t*)ftdmchan->span->signal_data)->min_digits; + ftdm_size_t num_digits; + + num_digits = strlen(ftdmchan->caller_data.dnis.digits); + + if (conEvnt->sndCmplt.eh.pres || num_digits >= min_digits) { + ftdm_set_state(ftdmchan, FTDM_CHANNEL_STATE_RING); + } else { + ftdm_set_state(ftdmchan, FTDM_CHANNEL_STATE_COLLECT); + } } else { ftdm_set_state(ftdmchan, FTDM_CHANNEL_STATE_RING); }