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'] }, <