linphone/linphone-3.5.2-regression.p...

126 lines
4.7 KiB
Diff

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));