[Asterisk-code-review] res_pjsip_session: Preserve label on incoming re-INVITE. (asterisk[16])

Joshua Colp asteriskteam at digium.com
Wed Jun 17 03:59:33 CDT 2020


Joshua Colp has uploaded this change for review. ( https://gerrit.asterisk.org/c/asterisk/+/14566 )


Change subject: res_pjsip_session: Preserve label on incoming re-INVITE.
......................................................................

res_pjsip_session: Preserve label on incoming re-INVITE.

When a re-INVITE is received we create a new set of
streams that are then swapped in as the active streams.
We did not preserve the SDP label from the previous
streams, resulting in the label getting lost.

This change ensures that if an SDP label is present
on the previous stream then it is set on the new stream.

ASTERISK-28953

Change-Id: I9dd63b88b562fe96ce5c791a3dae5bcaca258445
---
M res/res_pjsip_session.c
1 file changed, 16 insertions(+), 0 deletions(-)



  git pull ssh://gerrit.asterisk.org:29418/asterisk refs/changes/66/14566/1

diff --git a/res/res_pjsip_session.c b/res/res_pjsip_session.c
index d339530..cda0953 100644
--- a/res/res_pjsip_session.c
+++ b/res/res_pjsip_session.c
@@ -761,6 +761,14 @@
 				ast_stream_free(stream);
 				return -1;
 			}
+			if (existing_stream) {
+				const char *stream_label = ast_stream_get_metadata(existing_stream, "SDP:LABEL");
+
+				if (!ast_strlen_zero(stream_label)) {
+					ast_stream_set_metadata(stream, "SDP:LABEL", stream_label);
+				}
+			}
+
 			/* For backwards compatibility with the core the default audio stream is always sendrecv */
 			if (!ast_sip_session_is_pending_stream_default(session, stream) || strcmp(media, "audio")) {
 				if (pjmedia_sdp_media_find_attr2(remote_stream, "sendonly", NULL)) {
@@ -1967,6 +1975,14 @@
 			return -1;
 		}
 
+		if (existing_stream) {
+			const char *stream_label = ast_stream_get_metadata(existing_stream, "SDP:LABEL");
+
+			if (!ast_strlen_zero(stream_label)) {
+				ast_stream_set_metadata(stream, "SDP:LABEL", stream_label);
+			}
+		}
+
 		session_media = ast_sip_session_media_state_add(session, session->pending_media_state, ast_media_type_from_str(media), i);
 		if (!session_media) {
 			return -1;

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

Gerrit-Project: asterisk
Gerrit-Branch: 16
Gerrit-Change-Id: I9dd63b88b562fe96ce5c791a3dae5bcaca258445
Gerrit-Change-Number: 14566
Gerrit-PatchSet: 1
Gerrit-Owner: Joshua Colp <jcolp at sangoma.com>
Gerrit-MessageType: newchange
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.digium.com/pipermail/asterisk-code-review/attachments/20200617/d402959b/attachment.html>


More information about the asterisk-code-review mailing list