proxy: fix normalize_number when having invalid prefix dial code

This commit is contained in:
Gautier Pelloux-Prayer 2015-05-28 17:29:33 +02:00
parent 1bd8a6ad1e
commit 819e0f07dc
2 changed files with 8 additions and 5 deletions

View file

@ -948,17 +948,13 @@ bool_t linphone_proxy_config_normalize_number(LinphoneProxyConfig *inproxy, cons
if (linphone_proxy_config_is_phone_number(proxy, username)){
dial_plan_t dialplan = {0};
char *flatten=flatten_number(username);
bool_t dialplan_found = FALSE;
ms_debug("Flattened number is '%s'",flatten);
/*username does not contain a dial prefix nor the proxy, nothing else to do*/
if (proxy->dial_prefix==NULL || proxy->dial_prefix[0]=='\0'){
strncpy(result,flatten,result_len-1);
} else {
dialplan_found = lookup_dial_plan_by_ccc(proxy->dial_prefix,&dialplan);
}
if (dialplan_found) {
lookup_dial_plan_by_ccc(proxy->dial_prefix,&dialplan);
ms_debug("Using dial plan '%s'",dialplan.country);
/* the number has international prefix or +, so nothing to do*/
if (flatten[0]=='+'){
@ -1000,6 +996,7 @@ bool_t linphone_proxy_config_normalize_number(LinphoneProxyConfig *inproxy, cons
strncpy(result+i,flatten+skip,result_len-i-1);
}
}
ms_free(flatten);
ret = TRUE;
} else {

View file

@ -51,6 +51,12 @@ static void phone_normalization_with_proxy() {
BC_ASSERT_STRING_EQUAL(phone_normalization(proxy, "01 2345678"), "+33012345678");
BC_ASSERT_STRING_EQUAL(phone_normalization(proxy, "01234567891"), "+33234567891"); // invalid phone number (too long)
BC_ASSERT_STRING_EQUAL(phone_normalization(proxy, "I_AM_NOT_A_NUMBER"), "I_AM_NOT_A_NUMBER"); // invalid phone number
BC_ASSERT_STRING_EQUAL(phone_normalization(proxy, "+990012345678"), "+990012345678");
linphone_proxy_config_set_dial_prefix(proxy, "99");
BC_ASSERT_STRING_EQUAL(phone_normalization(proxy, "0012345678"), "+12345678");
linphone_proxy_config_destroy(proxy);
}