From 2f1b12fdc0f74b10fe8f38f3dc59f875ad4a072c Mon Sep 17 00:00:00 2001 From: Moises Silva Date: Sun, 9 Nov 2014 03:33:08 -0500 Subject: [PATCH] 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 --- .../ftmod_sangoma_isdn_stack_hndl.c | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) 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); }