Browse Source

TT#107565 fix SDP ordering issue of s= vs o=

Change-Id: Id6ad795bf9304e66012958060104af00a4bc1c6b
(cherry picked from commit 2c0e196be9)
mr9.5.3
Richard Fuchs 4 years ago
parent
commit
a55a7036cb
2 changed files with 72 additions and 6 deletions
  1. +7
    -6
      daemon/sdp.c
  2. +65
    -0
      t/auto-daemon-tests.pl

+ 7
- 6
daemon/sdp.c View File

@ -2494,6 +2494,13 @@ int sdp_replace(struct sdp_chopper *chop, GQueue *sessions, struct call_monologu
monologue->sdp_version = ssl_random(); 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"; err = "error while processing s= line";
if (!monologue->sdp_session_name) if (!monologue->sdp_session_name)
monologue->sdp_session_name = call_strdup_len(monologue->call, session->session_name.s, 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 && if (session->connection.parsed && sess_conn &&
flags->ice_option != ICE_FORCE_RELAY) { flags->ice_option != ICE_FORCE_RELAY) {
err = "failed to replace network address"; err = "failed to replace network address";


+ 65
- 0
t/auto-daemon-tests.pl View File

@ -14793,5 +14793,70 @@ a=sendrecv
a=rtcp:PORT a=rtcp:PORT
SDP SDP
new_call;
offer('SDP replace everything', { replace => ['SDP version', 'origin', 'session-connection', 'username', 'session-name'] }, <<SDP);
v=0
o=- 1545997027 1 IN IP4 198.51.100.1
s=tester
c=IN IP4 198.51.100.1
t=0 0
m=audio 2000 RTP/AVP 0
c=IN IP4 198.51.100.1
----------------------------
v=0
o=- 1545997027 1 IN IP4 203.0.113.1
s=tester
c=IN IP4 203.0.113.1
t=0 0
m=audio PORT RTP/AVP 0
c=IN IP4 203.0.113.1
a=rtpmap:0 PCMU/8000
a=sendrecv
a=rtcp:PORT
SDP
offer('SDP replace everything', { replace => ['SDP version', 'origin', 'session-connection', 'username', 'session-name'] }, <<SDP);
v=0
o=- 1545997027 1 IN IP4 198.51.100.1
s=tester
c=IN IP4 198.51.100.1
t=0 0
m=audio 2000 RTP/AVP 0
c=IN IP4 198.51.100.1
----------------------------
v=0
o=- 1545997027 1 IN IP4 203.0.113.1
s=tester
c=IN IP4 203.0.113.1
t=0 0
m=audio PORT RTP/AVP 0
c=IN IP4 203.0.113.1
a=rtpmap:0 PCMU/8000
a=sendrecv
a=rtcp:PORT
SDP
offer('SDP replace everything', { replace => ['SDP version', 'origin', 'session-connection', 'username', 'session-name'] }, <<SDP);
v=0
o=- 1545997027 2 IN IP4 198.51.100.1
s=tester
c=IN IP4 198.51.100.1
t=0 0
m=audio 2000 RTP/AVP 0
c=IN IP4 198.51.100.1
----------------------------
v=0
o=- 1545997027 1 IN IP4 203.0.113.1
s=tester
c=IN IP4 203.0.113.1
t=0 0
m=audio PORT RTP/AVP 0
c=IN IP4 203.0.113.1
a=rtpmap:0 PCMU/8000
a=sendrecv
a=rtcp:PORT
SDP
done_testing(); done_testing();

Loading…
Cancel
Save