From 2c0e196be9f63c027b09b82884866843c3ed2e89 Mon Sep 17 00:00:00 2001 From: Richard Fuchs Date: Thu, 4 Nov 2021 14:39:49 -0400 Subject: [PATCH] TT#107565 fix SDP ordering issue of s= vs o= Change-Id: Id6ad795bf9304e66012958060104af00a4bc1c6b --- daemon/sdp.c | 13 +++++---- t/auto-daemon-tests.pl | 65 ++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 72 insertions(+), 6 deletions(-) diff --git a/daemon/sdp.c b/daemon/sdp.c index c1028a03b..f0a3f13a8 100644 --- a/daemon/sdp.c +++ b/daemon/sdp.c @@ -2672,6 +2672,13 @@ int sdp_replace(struct sdp_chopper *chop, GQueue *sessions, struct call_monologu monologue->sdp_version = ssl_random(); } + if (session->origin.parsed && flags->replace_origin && + flags->ice_option != ICE_FORCE_RELAY) { + err = "failed to replace network address"; + if (replace_network_address(chop, &session->origin.address, ps, flags, 0)) + goto error; + } + err = "error while processing s= line"; if (!monologue->sdp_session_name) monologue->sdp_session_name = call_strdup_len(monologue->call, session->session_name.s, @@ -2697,12 +2704,6 @@ int sdp_replace(struct sdp_chopper *chop, GQueue *sessions, struct call_monologu } } - if (session->origin.parsed && flags->replace_origin && - flags->ice_option != ICE_FORCE_RELAY) { - err = "failed to replace network address"; - if (replace_network_address(chop, &session->origin.address, ps, flags, 0)) - goto error; - } if (session->connection.parsed && sess_conn && flags->ice_option != ICE_FORCE_RELAY) { err = "failed to replace network address"; diff --git a/t/auto-daemon-tests.pl b/t/auto-daemon-tests.pl index 6888c4db1..96f3f796a 100755 --- a/t/auto-daemon-tests.pl +++ b/t/auto-daemon-tests.pl @@ -14611,5 +14611,70 @@ a=sendrecv a=rtcp:PORT SDP +new_call; + +offer('SDP replace everything', { replace => ['SDP version', 'origin', 'session-connection', 'username', 'session-name'] }, < ['SDP version', 'origin', 'session-connection', 'username', 'session-name'] }, < ['SDP version', 'origin', 'session-connection', 'username', 'session-name'] }, <