[Freeswitch-dev] get_trillium_val() loop termination
Juraj Fabo
juraj.fabo at gmail.com
Wed Feb 1 17:42:11 MSK 2012
Hi
I'm using freetdm from git downloaded on 30.1.2012.
On windows I had no problems, but on sles 11 sp1 64bit call setup message
was missing caller and called information elements.
I've tracked down the problem to file
src/ftmod/ftmod_sangoma_isdn/ftmod_sangoma_isdn_support.c, into function
get_trillium_val()
Particularly, when get_trillium_val(ton_codes, 0, IN_TON_UNK) is called,
0xe6 is returned (which is from the nsf_spec_codes[] table)
I think the loop should have some strict terminate condition but not sure
about the write intention.
My workaround to be able to continue development is following
diff -urN src/ftmod/ftmod_sangoma_isdn/ftmod_sangoma_isdn_support.c
src/ftmod/ftmod_sangoma_isdn/ftmod_sangoma_isdn_support_mod.c
--- src/ftmod/ftmod_sangoma_isdn/ftmod_sangoma_isdn_support.c 2012-02-01
14:02:30.000000000 +0000
+++ src/ftmod/ftmod_sangoma_isdn/ftmod_sangoma_isdn_support_mod.c
2012-02-01 14:02:08.000000000 +0000
@@ -106,10 +106,11 @@
static uint8_t get_trillium_val(ftdm2trillium_t *vals, uint8_t ftdm_val,
uint8_t default_val)
{
ftdm2trillium_t *val = vals;
- while(val++) {
+ while(val) {
if (val->ftdm_val == ftdm_val) {
return val->trillium_val;
}
+ val++;
}
return default_val;
}
@@ -117,10 +118,11 @@
static uint8_t get_ftdm_val(ftdm2trillium_t *vals, uint8_t trillium_val,
uint8_t default_val)
{
ftdm2trillium_t *val = vals;
- while(val++) {
+ while(val) {
if (val->trillium_val == trillium_val) {
return val->ftdm_val;
}
+ val++;
}
return default_val;
}
Is there some other way how to go around?
Thank you
Juraj
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.freeswitch.org/pipermail/freeswitch-dev/attachments/20120201/d73cce33/attachment.html
Join us at ClueCon 2011 Aug 9-11, 2011
More information about the FreeSWITCH-dev
mailing list