From 303b8e5d6c8f46ba3648773cfb3483f2ddd57757 Mon Sep 17 00:00:00 2001 From: Simon Morlat Date: Thu, 13 Dec 2012 14:49:44 +0100 Subject: [PATCH] better proxy & route management. --- coreapi/proxy.c | 2 +- coreapi/sal_eXosip2.c | 18 ++++++++++++++---- 2 files changed, 15 insertions(+), 5 deletions(-) diff --git a/coreapi/proxy.c b/coreapi/proxy.c index 15f10b74..3b47af42 100644 --- a/coreapi/proxy.c +++ b/coreapi/proxy.c @@ -119,7 +119,7 @@ int linphone_proxy_config_set_server_addr(LinphoneProxyConfig *obj, const char * if (addr==NULL) addr=linphone_address_new(server_addr); if (addr){ - obj->reg_proxy=linphone_address_as_string_uri_only(addr); + obj->reg_proxy=linphone_address_as_string(addr); linphone_address_destroy(addr); }else{ ms_warning("Could not parse %s",server_addr); diff --git a/coreapi/sal_eXosip2.c b/coreapi/sal_eXosip2.c index 8dbf0173..325e495d 100644 --- a/coreapi/sal_eXosip2.c +++ b/coreapi/sal_eXosip2.c @@ -2233,11 +2233,21 @@ static void register_set_contact(osip_message_t *msg, const char *contact){ } static void sal_register_add_route(osip_message_t *msg, const char *proxy){ - char tmp[256]={0}; - snprintf(tmp,sizeof(tmp)-1,"<%s;lr>",proxy); - + osip_route_t *route; + osip_list_special_free(&msg->routes,(void (*)(void*))osip_route_free); - osip_message_set_route(msg,tmp); + + osip_route_init(&route); + if (osip_route_parse(route,proxy)==0){ + osip_uri_param_t *lr_param = NULL; + osip_uri_uparam_get_byname(route->url, "lr", &lr_param); + if (lr_param == NULL){ + osip_uri_uparam_add(route->url,osip_strdup("lr"),NULL); + } + osip_list_add(&msg->routes,route,0); + return; + } + osip_route_free(route); } -- 2.39.2