[Asterisk-code-review] res_pjsip_sdp_rtp: implement hold state handling on moh_passthrough (asterisk[16])

George Joseph asteriskteam at digium.com
Tue Feb 18 10:08:30 CST 2020


George Joseph has submitted this change. ( https://gerrit.asterisk.org/c/asterisk/+/13821 )

Change subject: res_pjsip_sdp_rtp: implement hold state handling on moh_passthrough
......................................................................

res_pjsip_sdp_rtp: implement hold state handling on moh_passthrough

When moh_passthrough is used, asterisk is only generating invites
of type sendonly and sendrecv instead of taking fully into account
the on hold state of the local and remote parties

ASTERISK-28738 #close

Change-Id: Iaaad9fbc033cb14803d433b8a4071bc337047761
---
M res/res_pjsip_sdp_rtp.c
1 file changed, 15 insertions(+), 2 deletions(-)

Approvals:
  Joshua Colp: Looks good to me, but someone else must approve
  George Joseph: Looks good to me, approved; Approved for Submit



diff --git a/res/res_pjsip_sdp_rtp.c b/res/res_pjsip_sdp_rtp.c
index 8d9cece..dcdb827 100644
--- a/res/res_pjsip_sdp_rtp.c
+++ b/res/res_pjsip_sdp_rtp.c
@@ -1547,6 +1547,8 @@
 	static const pj_str_t STR_IP6 = { "IP6", 3};
 	static const pj_str_t STR_SENDRECV = { "sendrecv", 8 };
 	static const pj_str_t STR_SENDONLY = { "sendonly", 8 };
+	static const pj_str_t STR_INACTIVE = { "inactive", 8 };
+	static const pj_str_t STR_RECVONLY = { "recvonly", 8 };
 	pjmedia_sdp_media *media;
 	const char *hostip = NULL;
 	struct ast_sockaddr addr;
@@ -1811,9 +1813,20 @@
 		media->attr[media->attr_count++] = attr;
 	}
 
-	/* Add the sendrecv attribute - we purposely don't keep track because pjmedia-sdp will automatically change our offer for us */
 	attr = PJ_POOL_ZALLOC_T(pool, pjmedia_sdp_attr);
-	attr->name = !session_media->locally_held ? STR_SENDRECV : STR_SENDONLY;
+	if (session_media->locally_held) {
+		if (session_media->remotely_held) {
+			attr->name = STR_INACTIVE; /* To place on hold a recvonly stream, send inactive */
+		} else {
+			attr->name = STR_SENDONLY; /* Send sendonly to initate a local hold */
+		}
+	} else {
+		if (session_media->remotely_held) {
+			attr->name = STR_RECVONLY; /* Remote has sent sendonly, reply recvonly */
+		} else {
+			attr->name = STR_SENDRECV; /* No hold in either direction */
+		}
+	}
 	media->attr[media->attr_count++] = attr;
 
 	/* If we've got rtcp-mux enabled, add it unless we received an offer without it */

-- 
To view, visit https://gerrit.asterisk.org/c/asterisk/+/13821
To unsubscribe, or for help writing mail filters, visit https://gerrit.asterisk.org/settings

Gerrit-Project: asterisk
Gerrit-Branch: 16
Gerrit-Change-Id: Iaaad9fbc033cb14803d433b8a4071bc337047761
Gerrit-Change-Number: 13821
Gerrit-PatchSet: 1
Gerrit-Owner: Torrey Searle <tsearle at gmail.com>
Gerrit-Reviewer: Friendly Automation
Gerrit-Reviewer: George Joseph <gjoseph at digium.com>
Gerrit-Reviewer: Joshua Colp <jcolp at sangoma.com>
Gerrit-MessageType: merged
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.digium.com/pipermail/asterisk-code-review/attachments/20200218/2fd482e1/attachment.html>


More information about the asterisk-code-review mailing list