From 481032c0fb78522592e822f73aee09aa33ac5c2d Mon Sep 17 00:00:00 2001 From: Jehan Monnier Date: Mon, 14 Jun 2010 16:12:38 +0200 Subject: [PATCH] fix transport parameter in contact header (for tcp) --- coreapi/proxy.c | 8 +++++++- coreapi/sal.h | 2 +- coreapi/sal_eXosip2.c | 3 +++ 3 files changed, 11 insertions(+), 2 deletions(-) diff --git a/coreapi/proxy.c b/coreapi/proxy.c index 80eb5d522..babd13e34 100644 --- a/coreapi/proxy.c +++ b/coreapi/proxy.c @@ -244,7 +244,13 @@ static char *guess_contact_for_register(LinphoneProxyConfig *obj){ contact=linphone_address_new(obj->reg_identity); linphone_address_set_domain (contact,localip); linphone_address_set_port_int(contact,linphone_core_get_sip_port(obj->lc)); - ret=linphone_address_as_string_uri_only (contact); + linphone_address_set_display_name(contact,NULL); + LCSipTransports tr; + linphone_core_get_sip_transports(obj->lc,&tr); + if (tr.udp_port <= 0 && tr.tcp_port>0) { + sal_address_add_param(contact,"transport","tcp"); + } + ret=linphone_address_as_string(contact); linphone_address_destroy(contact); } linphone_address_destroy (proxy); diff --git a/coreapi/sal.h b/coreapi/sal.h index 9790b8c71..e6c1292a2 100644 --- a/coreapi/sal.h +++ b/coreapi/sal.h @@ -57,7 +57,7 @@ void sal_address_clean(SalAddress *addr); char *sal_address_as_string(const SalAddress *u); char *sal_address_as_string_uri_only(const SalAddress *u); void sal_address_destroy(SalAddress *u); - +void sal_address_add_param(SalAddress *u,const char* name,const char* value); diff --git a/coreapi/sal_eXosip2.c b/coreapi/sal_eXosip2.c index fa6fb5f11..df770ce12 100644 --- a/coreapi/sal_eXosip2.c +++ b/coreapi/sal_eXosip2.c @@ -1749,6 +1749,9 @@ char *sal_address_as_string_uri_only(const SalAddress *u){ osip_free(tmp); return ret; } +void sal_address_add_param(SalAddress *u,const char* name,const char* value) { + osip_uri_uparam_add (((osip_from_t*)u)->url,ms_strdup(name),ms_strdup(value)); +} void sal_address_destroy(SalAddress *u){ osip_from_free((osip_from_t*)u);