diff --git a/daemon/sdp.c b/daemon/sdp.c index d4297cdb2..bfb100fa9 100644 --- a/daemon/sdp.c +++ b/daemon/sdp.c @@ -2494,6 +2494,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, @@ -2519,12 +2526,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 df275d77c..53301f115 100755 --- a/t/auto-daemon-tests.pl +++ b/t/auto-daemon-tests.pl @@ -14793,5 +14793,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'] }, <