From 1bc6611765f057c07abfadcfd137e755bcff9e96 Mon Sep 17 00:00:00 2001 From: David Yat Sin Date: Tue, 17 May 2011 10:27:49 -0400 Subject: [PATCH] freetdm - SS7:* is now transmitted as 0x0b in Called Party Number --- .../ftmod_sangoma_ss7_support.c | 30 ++++++++++++++----- 1 file changed, 22 insertions(+), 8 deletions(-) diff --git a/libs/freetdm/src/ftmod/ftmod_sangoma_ss7/ftmod_sangoma_ss7_support.c b/libs/freetdm/src/ftmod/ftmod_sangoma_ss7/ftmod_sangoma_ss7_support.c index a60a6c48ed..3ebd162f09 100644 --- a/libs/freetdm/src/ftmod/ftmod_sangoma_ss7/ftmod_sangoma_ss7_support.c +++ b/libs/freetdm/src/ftmod/ftmod_sangoma_ss7/ftmod_sangoma_ss7_support.c @@ -586,10 +586,17 @@ ftdm_status_t copy_tknStr_to_sngss7(char* val, TknStr *tknStr, TknU8 *oddEven) /* check if the digit is a number and that is not null */ while (!(isxdigit(tmp[0])) && (tmp[0] != '\0')) { - SS7_INFO("Dropping invalid digit: %c\n", tmp[0]); - /* move on to the next value */ - k++; - tmp[0] = val[k]; + if (tmp[0] == '*') { + /* Could not find a spec that specifies this , but on customer system, * was transmitted as 0x0b */ + SS7_DEBUG("Replacing * with 0x0b"); + k++; + tmp[0] = 0x0b; + } else { + SS7_INFO("Dropping invalid digit: %c\n", tmp[0]); + /* move on to the next value */ + k++; + tmp[0] = val[k]; + } } /* while(!(isdigit(tmp))) */ /* check if tmp is null or a digit */ @@ -1350,10 +1357,17 @@ ftdm_status_t encode_subAddrIE_nat(const char *subAddr, char *subAddrIE, int typ /* confirm it is a hex digit */ while ((!isxdigit(tmp[0])) && (tmp[0] != '\0')) { - SS7_INFO("Dropping invalid digit: %c\n", tmp[0]); - /* move to the next character in subAddr */ - x++; - tmp[0] = subAddr[x]; + if (tmp[0] == '*') { + /* Could not find a spec that specifies this, but on customer system, * was transmitted as 0x0b */ + SS7_DEBUG("Replacing * with 0x0b"); + x++; + tmp[0] = 0x0b; + } else { + SS7_INFO("Dropping invalid digit: %c\n", tmp[0]); + /* move to the next character in subAddr */ + x++; + tmp[0] = subAddr[x]; + } } /* check if tmp is null or a digit */