From 18141ff1db4dc8da6763efdaabc75372f741494d Mon Sep 17 00:00:00 2001 From: Jehan Monnier Date: Thu, 30 Mar 2017 17:03:55 +0200 Subject: [PATCH] make sure 00 are replaced by + only if proxy_config dial prefix is set --- coreapi/proxy.c | 14 ++++++++------ tester/proxy_config_tester.c | 9 ++++++--- 2 files changed, 14 insertions(+), 9 deletions(-) diff --git a/coreapi/proxy.c b/coreapi/proxy.c index 9018ad3c1..b3ed8d221 100644 --- a/coreapi/proxy.c +++ b/coreapi/proxy.c @@ -651,12 +651,14 @@ char* linphone_proxy_config_normalize_phone_number(LinphoneProxyConfig *proxy, c //probably generic dialplan, preserving proxy dial prefix strncpy(dialplan.ccc,tmpproxy->dial_prefix,sizeof(dialplan.ccc)); } - } - if (strstr(flatten,dialplan.icp)==flatten) { - char *e164 = replace_icp_with_plus(flatten,dialplan.icp); - result = linphone_proxy_config_normalize_phone_number(tmpproxy,e164); - ms_free(e164); - goto end; + /*it does not make sens to try replace icp with + if we are not sure from the country we are (I.E tmpproxy->dial_prefix==NULL)*/ + if (strstr(flatten,dialplan.icp)==flatten) { + char *e164 = replace_icp_with_plus(flatten,dialplan.icp); + result = linphone_proxy_config_normalize_phone_number(tmpproxy,e164); + ms_free(e164); + goto end; + } + } nationnal_significant_number=flatten; } diff --git a/tester/proxy_config_tester.c b/tester/proxy_config_tester.c index 7a315d259..6f38c30e6 100644 --- a/tester/proxy_config_tester.c +++ b/tester/proxy_config_tester.c @@ -67,7 +67,8 @@ static void phone_normalization_with_proxy(void) { BC_ASSERT_STRING_EQUAL(phone_normalization(proxy, "+3301234567891"), "+33234567891"); BC_ASSERT_STRING_EQUAL(phone_normalization(proxy, "+33 (0) 1 23 45 67 89"), "+33123456789"); BC_ASSERT_STRING_EQUAL(phone_normalization(proxy, "+90 (903) 1234567"), "+909031234567"); - + BC_ASSERT_STRING_EQUAL(phone_normalization(proxy, "0033123456789"), "0033123456789"); + linphone_proxy_config_set_dial_prefix(proxy, "33"); BC_ASSERT_STRING_EQUAL(phone_normalization(proxy, "123456789"), "+33123456789"); BC_ASSERT_STRING_EQUAL(phone_normalization(proxy, " 0123456789"), "+33123456789"); @@ -126,7 +127,7 @@ static void phone_normalization_with_proxy(void) { BC_ASSERT_STRING_EQUAL(phone_normalization(proxy, "0123456789"), "+990123456789"); BC_ASSERT_STRING_EQUAL(phone_normalization(proxy, "01234567890"), "+991234567890"); - linphone_proxy_config_destroy(proxy); + linphone_proxy_config_unref(proxy); } static void phone_normalization_with_dial_escape_plus(void){ @@ -149,8 +150,10 @@ static void phone_normalization_with_dial_escape_plus(void){ BC_ASSERT_STRING_EQUAL(phone_normalization(proxy, "0123456789"), "0033123456789"); BC_ASSERT_STRING_EQUAL(phone_normalization(proxy, "01234567890"), "0033234567890"); + linphone_proxy_config_set_dial_escape_plus(proxy, FALSE); + BC_ASSERT_STRING_EQUAL(phone_normalization(proxy, "+34952636505"), "+34952636505"); - linphone_proxy_config_destroy(proxy); + linphone_proxy_config_unref(proxy); } #define SIP_URI_CHECK(actual, expected) { \