]> git.ipfire.org Git - thirdparty/freeswitch.git/commitdiff
OPENZAP-232 #resolve
authorMoises Silva <moy@sangoma.com>
Sun, 9 Nov 2014 08:33:08 +0000 (03:33 -0500)
committerMoises Silva <moy@sangoma.com>
Sun, 9 Nov 2014 08:33:43 +0000 (03:33 -0500)
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

libs/freetdm/src/ftmod/ftmod_sangoma_isdn/ftmod_sangoma_isdn_stack_hndl.c

index b414d4dfb1c749ecc65d339c112a7b603222700c..f9516235b71c8ba9be1f469e4fdad669150004ac 100644 (file)
@@ -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);
                        }