res_pjsip_session: Don't add declined stream if one does not exist.
authorJoshua Colp <jcolp@digium.com>
Tue, 18 Sep 2018 11:08:24 +0000 (11:08 +0000)
committerJoshua Colp <jcolp@digium.com>
Tue, 18 Sep 2018 11:11:23 +0000 (06:11 -0500)
Given a scenario where a session refresh was done with a removed
stream we would always add a removed stream to the outgoing SDP
even if one did not already exist.

This change makes it so that a removed stream is only placed into
the SDP if one already exists.

ASTERISK-28047

Change-Id: Ibb97d21cdeb87a8acae0c720861b0ff255708442

res/res_pjsip_session.c

index 2b78cfa..e681dcb 100644 (file)
@@ -1572,6 +1572,11 @@ int ast_sip_session_refresh(struct ast_sip_session *session,
 
                                /* No need to do anything with stream if it's media state is removed */
                                if (ast_stream_get_state(stream) == AST_STREAM_STATE_REMOVED) {
+                                       /* If there is no existing stream we can just not have this stream in the topology at all. */
+                                       if (!existing_stream) {
+                                               ast_stream_topology_del_stream(media_state->topology, index);
+                                               index -= 1;
+                                       }
                                        continue;
                                }