[Freeswitch-dev] get_trillium_val() loop termination
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
Juraj, I thank you for your time to track this down. But we don't post patches to the mailing lists you'll need to open a jira at http://jira.freeswitch.org and attach the patch if possible. Thanks, Brian Sent from my hospital bed. On Feb 1, 2012, at 8:42 AM, Juraj Fabo wrote:
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 _________________________________________________________________________ Professional FreeSWITCH Consulting Services: consulting@freeswitch.org http://www.freeswitchsolutions.com
FreeSWITCH-powered IP PBX: The CudaTel Communication Server http://www.cudatel.com
Official FreeSWITCH Sites http://www.freeswitch.org http://wiki.freeswitch.org http://www.cluecon.com
FreeSWITCH-dev mailing list FreeSWITCH-dev@lists.freeswitch.org http://lists.freeswitch.org/mailman/listinfo/freeswitch-dev UNSUBSCRIBE:http://lists.freeswitch.org/mailman/options/freeswitch-dev http://www.freeswitch.org
-- Brian West FreeSWITCH Solutions, LLC Phone: +1 (918) 420-9266 Fax: +1 (918) 420-9267 brian@freeswitch.org http://www.freeswitch.org
On Feb 1, 2012, at 8:42 AM, Juraj Fabo wrote:
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?
All that looping code was f'd up pretty bad and it was fixed yesterday. Update to see the fix. *Moises Silva **Software Engineer, Development Manager*** msilva@sangoma.com Sangoma Technologies 100 Renfrew Drive, Suite 100, Markham, ON L3R 9R6 Canada t. +1 800 388 2475 (N. America) t. +1 905 474 1990 x128 f. +1 905 474 9223 **<http://www.sangoma.com/contact?utm_source=signature&utm_medium=email&utm_campaign=email+signatures> Products<http://sangoma.com/products?utm_source=signature&utm_medium=email&utm_campaign=email%2Bsignatures> | Solutions<http://sangoma.com/solutions?utm_source=signature&utm_medium=email&utm_campaign=email%2Bsignatures> | Events<http://sangoma.com/about_us/events?utm_source=signature&utm_medium=email&utm_campaign=email%2Bsignatures> | Contact<http://www.sangoma.com/contact?utm_source=signature&utm_medium=email&utm_campaign=email%2Bsignatures> | Wiki<http://wiki.sangoma.com/?utm_source=signature&utm_medium=email&utm_campaign=email%2Bsignatures> | Facebook<http://www.facebook.com/pages/Sangoma-VoIP-Cards/43578453335?utm_source=signature&utm_medium=email&utm_campaign=email%2Bsignatures> | Twitter<http://www.twitter.com/sangoma?utm_source=signature&utm_medium=email&utm_campaign=email%2Bsignatures>`| | YouTube<http://www.youtube.com/sangomatechnologies?utm_source=signature&utm_medium=email&utm_campaign=email%2Bsignatures>
participants (3)
-
Brian West
-
Juraj Fabo
-
Moises Silva