From f4860a0dd2841623e24a2c4e2d3fbad9e28e32aa Mon Sep 17 00:00:00 2001 From: Donat Zenichev Date: Thu, 6 Feb 2025 14:24:01 +0100 Subject: [PATCH] MT#62098 Support session level connection replacement in mr12.5+ NGCP-Flow: mr12.5.1 Only meant for mr12.5+ branches. Add a support of session level connection replacement by default, avoiding flag. This is due to the fact: we've managed to deprecate the replace-session-connection functionality, but the switch to the SDP create approach hadn't been done that time around, when branching the master to the mr12.5 branch. Change-Id: Ic5230180e3ba83cda59e62c567414c71b2d2f1aa --- daemon/sdp.c | 13 ++----------- t/auto-daemon-tests.pl | 32 ++++++++++++++++---------------- 2 files changed, 18 insertions(+), 27 deletions(-) diff --git a/daemon/sdp.c b/daemon/sdp.c index 0a6860d7e..921e82710 100644 --- a/daemon/sdp.c +++ b/daemon/sdp.c @@ -3239,7 +3239,6 @@ int sdp_replace(struct sdp_chopper *chop, sdp_sessions_q *sessions, struct sdp_session *session; struct sdp_session *first_session = NULL; struct sdp_media *sdp_media; - int sess_conn; struct call_media *call_media; struct packet_stream *ps; const char *err = NULL; @@ -3330,19 +3329,11 @@ int sdp_replace(struct sdp_chopper *chop, sdp_sessions_q *sessions, goto error; } - sess_conn = 0; - for (__auto_type k = session->media_streams.head; k; k = k->next) { - sdp_media = k->data; - if (!sdp_media->connection.parsed) { - sess_conn = 1; - break; - } - } - bool media_has_ice = MEDIA_ISSET(call_media, ICE); bool keep_zero_address = ! media_has_ice; - if (session->connection.parsed && sess_conn && + /* inconditionally replace session connection if present */ + if (session->connection.parsed && flags->ice_option != ICE_FORCE_RELAY) { err = "failed to replace network address"; if (replace_network_address(chop, &session->connection.address, ps, flags, diff --git a/t/auto-daemon-tests.pl b/t/auto-daemon-tests.pl index 7a7143f99..33d14292d 100755 --- a/t/auto-daemon-tests.pl +++ b/t/auto-daemon-tests.pl @@ -2959,7 +2959,7 @@ a=maxptime:40 v=0 o=- 4694032 4694033 IN IP4 10.104.1.81 s=- -c=IN IP4 10.104.1.141 +c=IN IP4 203.0.113.1 t=0 0 m=audio PORT RTP/AVP 98 c=IN IP4 203.0.113.1 @@ -3048,7 +3048,7 @@ a=maxptime:40 v=0 o=test 4694032 4694033 IN IP4 10.104.1.81 s=- -c=IN IP4 10.104.1.141 +c=IN IP4 203.0.113.1 t=0 0 m=audio PORT RTP/AVP 118 98 c=IN IP4 203.0.113.1 @@ -9344,7 +9344,7 @@ a=ptime:20 v=0 o=testlab 949032 0 IN IP4 127.0.0.1 s=session -c=IN IP4 192.168.1.1 +c=IN IP4 203.0.113.1 b=CT:10000000 t=0 0 m=audio PORT RTP/AVP 8 0 101 @@ -9377,7 +9377,7 @@ a=fmtp:101 0-16 v=0 o=testlab 3815920663 3815920664 IN IP4 192.168.1.1 s=pjmedia -c=IN IP4 192.168.1.1 +c=IN IP4 203.0.113.1 t=0 0 m=audio PORT RTP/AVP 8 13 101 c=IN IP4 203.0.113.1 @@ -12828,7 +12828,7 @@ a=fmtp:101 0-15 v=0 o=dev 5418 9648 IN IP4 8.8.8.60 s=SIP Call -c=IN IP4 8.8.8.60 +c=IN IP4 203.0.113.1 t=0 0 m=audio PORT RTP/AVP 0 101 c=IN IP4 203.0.113.1 @@ -22527,7 +22527,7 @@ a=ptime:20 v=0 o=- 100263 0 IN IP4 203.0.113.1 s=session -c=IN IP4 52.113.56.34 +c=IN IP4 203.0.113.1 b=CT:10000000 t=0 0 m=audio PORT RTP/AVP 104 9 103 111 8 101 @@ -23725,7 +23725,7 @@ c=IN IP4 198.51.100.1 v=0 o=test 1545997027 1 IN IP4 198.51.100.1 s=tester -c=IN IP4 198.51.100.1 +c=IN IP4 203.0.113.1 t=0 0 m=audio PORT RTP/AVP 0 c=IN IP4 203.0.113.1 @@ -23766,7 +23766,7 @@ c=IN IP4 198.51.100.1 v=0 o=test 1545997027 1 IN IP4 198.51.100.1 s=tester -c=IN IP4 198.51.100.1 +c=IN IP4 203.0.113.1 t=0 0 m=audio PORT RTP/AVP 0 c=IN IP4 203.0.113.1 @@ -23807,7 +23807,7 @@ c=IN IP4 198.51.100.1 v=0 o=test 1545997027 1 IN IP4 198.51.100.1 s=tester -c=IN IP4 198.51.100.1 +c=IN IP4 203.0.113.1 t=0 0 m=audio PORT RTP/AVP 0 c=IN IP4 203.0.113.1 @@ -23850,7 +23850,7 @@ c=IN IP4 198.51.100.1 v=0 o=- 1545997027 1 IN IP4 203.0.113.1 s=tester -c=IN IP4 198.51.100.1 +c=IN IP4 203.0.113.1 t=0 0 m=audio PORT RTP/AVP 0 c=IN IP4 203.0.113.1 @@ -23871,7 +23871,7 @@ c=IN IP4 198.51.100.1 v=0 o=- 1545997027 1 IN IP4 203.0.113.1 s=tester -c=IN IP4 198.51.100.1 +c=IN IP4 203.0.113.1 t=0 0 m=audio PORT RTP/AVP 0 c=IN IP4 203.0.113.1 @@ -23892,7 +23892,7 @@ c=IN IP4 198.51.100.1 v=0 o=- 1545997027 1 IN IP4 203.0.113.1 s=tester -c=IN IP4 198.51.100.1 +c=IN IP4 203.0.113.1 t=0 0 m=audio PORT RTP/AVP 0 c=IN IP4 203.0.113.1 @@ -23915,7 +23915,7 @@ c=IN IP4 198.51.100.1 v=0 o=test 1545997027 1 IN IP4 203.0.113.1 s=tester -c=IN IP4 198.51.100.1 +c=IN IP4 203.0.113.1 t=0 0 m=audio PORT RTP/AVP 0 c=IN IP4 203.0.113.1 @@ -23936,7 +23936,7 @@ c=IN IP4 198.51.100.1 v=0 o=test 1545997027 1 IN IP4 203.0.113.1 s=tester -c=IN IP4 198.51.100.1 +c=IN IP4 203.0.113.1 t=0 0 m=audio PORT RTP/AVP 0 c=IN IP4 203.0.113.1 @@ -23957,7 +23957,7 @@ c=IN IP4 198.51.100.1 v=0 o=test 1545997027 2 IN IP4 203.0.113.1 s=tester -c=IN IP4 198.51.100.1 +c=IN IP4 203.0.113.1 t=0 0 m=audio PORT RTP/AVP 0 c=IN IP4 203.0.113.1 @@ -24487,7 +24487,7 @@ a=rtcp-fb:8 quux v=0 o=- 1545997027 1 IN IP4 198.51.100.1 s=tester -c=IN IP4 198.51.100.1 +c=IN IP4 203.0.113.1 t=0 0 m=audio PORT RTP/AVP 0 c=IN IP4 203.0.113.1