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

 

Products | Solutions | Events | Contact | Wiki | Facebook | Twitter`| | YouTube