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(call->op));
+ sal_op_set_route(call->ping_op,sal_op_get_network_origin(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);
obj->reg_route=NULL;
}
if (route!=NULL){
- LinphoneAddress *addr;
+ SalAddress *addr;
+ char *tmp;
/*try to prepend 'sip:' */
if (strstr(route,"sip:")==NULL){
- 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);
+ 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;
}
return 0;
}
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){
osip_uri_param_t *param=NULL;
osip_uri_uparam_get_byname(((osip_from_t*)u)->url,(char*)name,¶m);
if (param == NULL){
- osip_uri_uparam_add (((osip_from_t*)u)->url,ms_strdup(name),ms_strdup(value));
+ osip_uri_uparam_add (((osip_from_t*)u)->url,ms_strdup(name),value ? ms_strdup(value) : NULL);
} else {
osip_free(param->gvalue);
- param->gvalue=osip_strdup(value);
+ param->gvalue=value ? osip_strdup(value) : NULL;
}
}
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));