From 8fcc2ea86f344fac68e62510f5005f786913b349 Mon Sep 17 00:00:00 2001 From: Ghislain MARY Date: Wed, 8 Nov 2017 15:24:35 +0100 Subject: [PATCH] Fix Refer-To address in REFER messages sent by the ClientGroupChatRoom. --- src/chat/chat-room/client-group-chat-room.cpp | 4 ---- src/sal/refer-op.cpp | 7 +++++-- 2 files changed, 5 insertions(+), 6 deletions(-) diff --git a/src/chat/chat-room/client-group-chat-room.cpp b/src/chat/chat-room/client-group-chat-room.cpp index 0b5defc37..8b25a87e4 100644 --- a/src/chat/chat-room/client-group-chat-room.cpp +++ b/src/chat/chat-room/client-group-chat-room.cpp @@ -196,8 +196,6 @@ void ClientGroupChatRoom::removeParticipant (const shared_ptr Address referToAddr = participant->getAddress(); referToAddr.setParam("text"); referToAddr.setUriParam("method", "BYE"); - referToAddr.setDomain(""); - referToAddr.setPort(-1); referOp->send_refer(referToAddr.getPrivate()->getInternalAddress()); referOp->unref(); } @@ -224,8 +222,6 @@ void ClientGroupChatRoom::setParticipantAdminStatus (shared_ptr &pa Address referToAddr = participant->getAddress(); referToAddr.setParam("text"); referToAddr.setParam("admin", Utils::toString(isAdmin)); - referToAddr.setDomain(""); - referToAddr.setPort(-1); referOp->send_refer(referToAddr.getPrivate()->getInternalAddress()); referOp->unref(); } diff --git a/src/sal/refer-op.cpp b/src/sal/refer-op.cpp index bf666f43b..a6ea0425f 100644 --- a/src/sal/refer-op.cpp +++ b/src/sal/refer-op.cpp @@ -89,8 +89,11 @@ int SalReferOp::send_refer(const SalAddress *refer_to) { belle_sip_request_t* req=build_request("REFER"); if (req == NULL ) return -1; if (get_contact_address()) belle_sip_message_add_header(BELLE_SIP_MESSAGE(req),BELLE_SIP_HEADER(create_contact())); - belle_sip_header_refer_to_t *refer_to_header = belle_sip_header_refer_to_create(BELLE_SIP_HEADER_ADDRESS(refer_to)); - belle_sip_header_address_set_automatic(BELLE_SIP_HEADER_ADDRESS(refer_to_header), true); + belle_sip_header_address_t *address = BELLE_SIP_HEADER_ADDRESS(refer_to); + belle_sip_uri_t *uri = belle_sip_header_address_get_uri(address); + if (!belle_sip_uri_get_host(uri)) + belle_sip_header_address_set_automatic(address, true); + belle_sip_header_refer_to_t *refer_to_header = belle_sip_header_refer_to_create(address); belle_sip_message_add_header(BELLE_SIP_MESSAGE(req), BELLE_SIP_HEADER(refer_to_header)); return send_request(req); }