Reverting this commit fixes bug:

commit 2a5c2296ba555c1401267a4544507e2c6239622e
Merge: 38edeca 9563b0d
Author: Sylvain Berfini <[email protected]>
Date:   Tue Feb 14 11:02:33 2012 +0100

    Merge branch 'master' of git.linphone.org:linphone


> Hi,
> 
> linphone-3.5.2 asking password for incoming calls
> on @bluesip.net account if current identity set
> to other than @bluesip.net.
> 
> Password asked for login from other selected identity
> but in domain bluesip.net for example default identity
> or other proxy account registered or not.
> 
> This behavior is new in linphone-3.5.2 because no such
> problem in 3.5.0 and 3.5.1.
> 
> Is this right behavior or bug in linphone-3.5.2?
> 
> Thanks.
> 
-- 
Alexey Kurov <[email protected]>
diff --git a/coreapi/linphonecall.c b/coreapi/linphonecall.c
index 31c9cbf..1567221 100644
--- a/coreapi/linphonecall.c
+++ b/coreapi/linphonecall.c
@@ -350,7 +350,7 @@ LinphoneCall * linphone_call_new_incoming(LinphoneCore *lc, LinphoneAddress *fro
 		 we get a chance to discover our nat'd address before answering.*/
 		call->ping_op=sal_op_new(lc->sal);
 		from_str=linphone_address_as_string_uri_only(from);
-		sal_op_set_route(call->ping_op,sal_op_get_network_origin(op));
+		sal_op_set_route(call->ping_op,sal_op_get_network_origin(call->op));
 		sal_op_set_user_pointer(call->ping_op,call);
 		sal_ping(call->ping_op,linphone_core_find_best_identity(lc,from,NULL),from_str);
 		ms_free(from_str);
diff --git a/coreapi/linphonecore.c b/coreapi/linphonecore.c
index 4fd6c6a..ebdb615 100644
--- a/coreapi/linphonecore.c
+++ b/coreapi/linphonecore.c
@@ -1630,17 +1630,18 @@ static void monitor_network_state(LinphoneCore *lc, time_t curtime){
 }
 
 static void proxy_update(LinphoneCore *lc){
-	MSList *elem,*next;
 	ms_list_for_each(lc->sip_conf.proxies,(void (*)(void*))&linphone_proxy_config_update);
-	for(elem=lc->sip_conf.deleted_proxies;elem!=NULL;elem=next){
-		LinphoneProxyConfig* cfg = (LinphoneProxyConfig*)elem->data;
-		next=elem->next;
+	MSList* list=ms_list_copy(lc->sip_conf.deleted_proxies);
+	MSList* copy=list;
+	for(;list!=NULL;list=list->next){
+		LinphoneProxyConfig* cfg = (LinphoneProxyConfig*) list->data;
 		if (ms_time(NULL) - cfg->deletion_date > 5) {
-			lc->sip_conf.deleted_proxies =ms_list_remove_link(lc->sip_conf.deleted_proxies,elem);
+			lc->sip_conf.deleted_proxies =ms_list_remove(lc->sip_conf.deleted_proxies,(void *)cfg);
 			ms_message("clearing proxy config for [%s]",linphone_proxy_config_get_addr(cfg));
 			linphone_proxy_config_destroy(cfg);
 		}
 	}
+	ms_list_free(copy);
 }
 
 static void assign_buddy_info(LinphoneCore *lc, BuddyInfo *info){
diff --git a/coreapi/proxy.c b/coreapi/proxy.c
index a01f1ff..10400f5 100644
--- a/coreapi/proxy.c
+++ b/coreapi/proxy.c
@@ -172,20 +172,16 @@ int linphone_proxy_config_set_route(LinphoneProxyConfig *obj, const char *route)
 		obj->reg_route=NULL;
 	}
 	if (route!=NULL){
-		SalAddress *addr;
-		char *tmp;
+		LinphoneAddress *addr;
 		/*try to prepend 'sip:' */
 		if (strstr(route,"sip:")==NULL){
-			tmp=ms_strdup_printf("sip:%s",route);
-		}else tmp=ms_strdup(route);
-		addr=sal_address_new(tmp);
-		if (addr!=NULL){
-			sal_address_destroy(addr);
-		}else{
-			ms_free(tmp);
-			tmp=NULL;
-		}
-		obj->reg_route=tmp;
+			obj->reg_route=ms_strdup_printf("sip:%s",route);
+		}else obj->reg_route=ms_strdup(route);
+		addr=linphone_address_new(obj->reg_route);
+		if (addr==NULL){
+			ms_free(obj->reg_route);
+			obj->reg_route=NULL;
+		}else linphone_address_destroy(addr);
 	}
 	return 0;
 }
@@ -520,9 +516,11 @@ struct _LinphoneCore * linphone_proxy_config_get_core(const LinphoneProxyConfig
 **/
 int linphone_core_add_proxy_config(LinphoneCore *lc, LinphoneProxyConfig *cfg){
 	if (!linphone_proxy_config_check(lc,cfg)) {
+		linphone_proxy_config_destroy(cfg);
 		return -1;
 	}
 	if (ms_list_find(lc->sip_conf.proxies,cfg)!=NULL){
+		linphone_proxy_config_destroy(cfg);
 		ms_warning("ProxyConfig already entered, ignored.");
 		return 0;
 	}
diff --git a/coreapi/sal_eXosip2.c b/coreapi/sal_eXosip2.c
index 1c7fd5b..ace208e 100644
--- a/coreapi/sal_eXosip2.c
+++ b/coreapi/sal_eXosip2.c
@@ -717,8 +717,8 @@ int sal_ping(SalOp *op, const char *from, const char *to){
 	
 	sal_op_set_from(op,from);
 	sal_op_set_to(op,to);
-	sal_exosip_fix_route(op);
 
+	/*bug here: eXosip2 does not honor the route argument*/
 	eXosip_options_build_request (&options, sal_op_get_to(op),
 			sal_op_get_from(op),sal_op_get_route(op));
 	if (options){
@@ -2216,10 +2216,10 @@ void sal_address_set_param(SalAddress *u,const char* name,const char* value) {
 	osip_uri_param_t *param=NULL;
     osip_uri_uparam_get_byname(((osip_from_t*)u)->url,(char*)name,&param);
     if (param == NULL){
-        osip_uri_uparam_add	(((osip_from_t*)u)->url,ms_strdup(name),value ? ms_strdup(value) : NULL);
+        osip_uri_uparam_add	(((osip_from_t*)u)->url,ms_strdup(name),ms_strdup(value));
     } else {
         osip_free(param->gvalue);
-        param->gvalue=value ? osip_strdup(value) : NULL;
+        param->gvalue=osip_strdup(value);
     }
     
 }
diff --git a/coreapi/sal_eXosip2_presence.c b/coreapi/sal_eXosip2_presence.c
index f79866a..4a18c46 100644
--- a/coreapi/sal_eXosip2_presence.c
+++ b/coreapi/sal_eXosip2_presence.c
@@ -92,7 +92,6 @@ int sal_text_send(SalOp *op, const char *from, const char *to, const char *msg){
 		if (to)
 			sal_op_set_to(op,to);
 
-		sal_exosip_fix_route(op);
 		eXosip_lock();
 		eXosip_message_build_request(&sip,"MESSAGE",sal_op_get_to(op),
 			sal_op_get_from(op),sal_op_get_route(op));

_______________________________________________
Linphone-users mailing list
[email protected]
https://lists.nongnu.org/mailman/listinfo/linphone-users

Reply via email to