diff --git a/coreapi/address.c b/coreapi/address.c index 1299a5351..79ed08d60 100644 --- a/coreapi/address.c +++ b/coreapi/address.c @@ -129,6 +129,20 @@ LinphoneTransportType linphone_address_get_transport(const LinphoneAddress *uri) return (LinphoneTransportType)sal_address_get_transport(uri); } +/** + * Set the value of the method parameter +**/ +void linphone_address_set_method_param(LinphoneAddress *addr, const char *method) { + sal_address_set_method_param(addr, method); +} + +/** + * Get the value of the method parameter +**/ +const char *linphone_address_get_method_param(const LinphoneAddress *addr) { + return sal_address_get_method_param(addr); +} + /** * Removes address's tags and uri headers so that it is displayable to the user. **/ diff --git a/coreapi/bellesip_sal/sal_address_impl.c b/coreapi/bellesip_sal/sal_address_impl.c index 2546e7850..b6ed5b77e 100644 --- a/coreapi/bellesip_sal/sal_address_impl.c +++ b/coreapi/bellesip_sal/sal_address_impl.c @@ -114,6 +114,15 @@ const char* sal_address_get_transport_name(const SalAddress* addr){ return NULL; } +const char *sal_address_get_method_param(const SalAddress *addr) { + belle_sip_header_address_t* header_addr = BELLE_SIP_HEADER_ADDRESS(addr); + belle_sip_uri_t* uri = belle_sip_header_address_get_uri(header_addr); + if (uri) { + return belle_sip_uri_get_method_param(uri); + } + return NULL; +} + void sal_address_set_display_name(SalAddress *addr, const char *display_name){ belle_sip_header_address_t* header_addr = BELLE_SIP_HEADER_ADDRESS(addr); belle_sip_header_address_set_displayname(header_addr,display_name); @@ -213,6 +222,10 @@ void sal_address_set_transport_name(SalAddress* addr,const char *transport){ SAL_ADDRESS_SET(addr,transport_param,transport); } +void sal_address_set_method_param(SalAddress *addr, const char *method) { + SAL_ADDRESS_SET(addr, method_param, method); +} + SalAddress *sal_address_ref(SalAddress *addr){ return (SalAddress*)belle_sip_object_ref(BELLE_SIP_HEADER_ADDRESS(addr)); } diff --git a/coreapi/linphonecore.h b/coreapi/linphonecore.h index 97b89a089..60d48fc9c 100644 --- a/coreapi/linphonecore.h +++ b/coreapi/linphonecore.h @@ -449,6 +449,8 @@ LINPHONE_PUBLIC void linphone_address_set_secure(LinphoneAddress *addr, bool_t e LINPHONE_PUBLIC bool_t linphone_address_is_sip(const LinphoneAddress *uri); LINPHONE_PUBLIC LinphoneTransportType linphone_address_get_transport(const LinphoneAddress *uri); LINPHONE_PUBLIC void linphone_address_set_transport(LinphoneAddress *uri,LinphoneTransportType type); +LINPHONE_PUBLIC const char *linphone_address_get_method_param(const LinphoneAddress *addr); +LINPHONE_PUBLIC void linphone_address_set_method_param(LinphoneAddress *addr, const char *method); LINPHONE_PUBLIC char *linphone_address_as_string(const LinphoneAddress *u); LINPHONE_PUBLIC char *linphone_address_as_string_uri_only(const LinphoneAddress *u); LINPHONE_PUBLIC bool_t linphone_address_weak_equal(const LinphoneAddress *a1, const LinphoneAddress *a2); diff --git a/include/sal/sal.h b/include/sal/sal.h index 6e1c4d068..a4e229ec8 100644 --- a/include/sal/sal.h +++ b/include/sal/sal.h @@ -102,6 +102,7 @@ void sal_address_set_secure(SalAddress *addr, bool_t enabled); SalTransport sal_address_get_transport(const SalAddress* addr); const char* sal_address_get_transport_name(const SalAddress* addr); +const char *sal_address_get_method_param(const SalAddress *addr); void sal_address_set_display_name(SalAddress *addr, const char *display_name); void sal_address_set_username(SalAddress *addr, const char *username); @@ -114,6 +115,7 @@ void sal_address_destroy(SalAddress *u); void sal_address_set_param(SalAddress *u,const char* name,const char* value); void sal_address_set_transport(SalAddress* addr,SalTransport transport); void sal_address_set_transport_name(SalAddress* addr,const char* transport); +void sal_address_set_method_param(SalAddress *addr, const char *method); void sal_address_set_params(SalAddress *addr, const char *params); void sal_address_set_uri_params(SalAddress *addr, const char *params); bool_t sal_address_is_ipv6(const SalAddress *addr);