Dear chan_ss7 users,

I've bumped into a problem when using chan_ss7 1.0.0 in Germany. Overlapped dialing didn't work properly.

The relevant ss7 configuration reads

...
enable_st => yes
t35 => 4000,st

Asterisk configuration reads
...
exten => _0X.,1,Dial(ss7/myss7/${EXTEN:1})
...

The DTM switch is configured to signal incoming calls to Asterisk when it receives min. 7 digits.

If I dial a number longer than 7 digits using an analog handset. Asterisk tried to make ougoing call as soon as it has received 7 digits. Everything is OK if I use a digital handset, where the number is sent as a block.

After having traced the debug output I've found out when I call using analog handset the inmsg->iam.dni.complete is set to 0 but the function process_iam() calls check_iam_sam(pvt) anyway.

I've modified the code a bit and it works fine for me now. The modification is to be found in the attached patch file.

I'm very grateful if someone can take a look at my modification and gives feedback.

Cheers,
Hoai-Anh
--- chan_ss7-1.0.0/l4isup.c     2007-11-27 10:18:05.000000000 +0100
+++ chan_ss7-1.0.0.hngovi/l4isup.c      2009-06-08 16:04:31.000000000 +0200
@@ -2655,7 +2655,8 @@
   remove_from_idlelist(pvt);
   pvt->state = ST_GOT_IAM;
   memcpy(&pvt->iam, &inmsg->iam, sizeof(pvt->iam));
-  check_iam_sam(pvt);
+  /* hngovi: if DNI complete call check_iam_sam(pvt) */
+  if (inmsg->iam.dni.complete == 1) check_iam_sam(pvt);
   pvt->link->linkset->incoming_calls++;
 }
 
@@ -2675,7 +2676,10 @@
   }
   strcat(pvt->iam.dni.num, inmsg->sam.sni.num);
   pvt->iam.dni.complete = pvt->iam.dni.complete || inmsg->sam.sni.complete;
-  check_iam_sam(pvt);
+  
+  /* hngovi: if DNI complete call check_iam_sam(pvt) */
+  if (pvt->iam.dni.complete == 1) check_iam_sam(pvt);
+  
 }
 
 
_______________________________________________
--Bandwidth and Colocation Provided by http://www.api-digital.com--

asterisk-ss7 mailing list
To UNSUBSCRIBE or update options visit:
   http://lists.digium.com/mailman/listinfo/asterisk-ss7

Reply via email to