]> sjero.net Git - linphone/commitdiff
better proxy & route management.
authorSimon Morlat <simon.morlat@linphone.org>
Thu, 13 Dec 2012 13:49:44 +0000 (14:49 +0100)
committerSimon Morlat <simon.morlat@linphone.org>
Thu, 13 Dec 2012 13:50:09 +0000 (14:50 +0100)
coreapi/proxy.c
coreapi/sal_eXosip2.c

index 15f10b744d3311d10fe800ed8899cba8a6938dc0..3b47af42ce0ec2232811abfcbfc08f414fc32c13 100644 (file)
@@ -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);
index 8dbf0173bfdb1bb78b9fd9cdf4554df4686fe09c..325e495d33c2abb0b5329d38bb8dade9cc4d7d0d 100644 (file)
@@ -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);
 }