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