MT#60476 Discontinue `replace_sdp_media_section()`

Discontinue `replace_sdp_media_section()` used before
to replace media sessions, also deprecate all subsequent
functionality:
- replace_network_address()
- synth_session_connection()
- replace_media_type()
- replace_media_port()
- replace_consecutive_port_count()
- replace_transport_protocol()
- replace_codec_list()

Change-Id: I0a455f6d105fa0a2ea61461ee92944ec990240ef
pull/1870/head
Donat Zenichev 1 year ago
parent e45c351b9c
commit 9273cc897a

@ -2133,23 +2133,6 @@ static int skip_over(struct sdp_chopper *chop, str *where) {
return 0;
}
static int replace_transport_protocol(struct sdp_chopper *chop,
struct sdp_media *media, struct call_media *cm)
{
str *tp = &media->transport;
if (!cm->protocol)
return 0;
if (copy_up_to(chop, tp))
return -1;
chopper_append_c(chop, cm->protocol->name);
if (skip_over(chop, tp))
return -1;
return 0;
}
static int print_format_str(GString *s, struct call_media *cm) {
if (!cm->format_str.s)
return 0;
@ -2173,17 +2156,6 @@ static int print_codec_list(GString *s, struct call_media *media) {
return 0;
}
static int replace_codec_list(struct sdp_chopper *chop,
struct sdp_media *media, struct call_media *cm)
{
if (copy_up_to(chop, &media->formats))
return -1;
if (skip_over(chop, &media->formats))
return -1;
return print_codec_list(chop->output, cm);
}
static void insert_codec_parameters(GString *s, struct call_media *cm,
const sdp_ng_flags *flags)
{
@ -2257,68 +2229,6 @@ void sdp_insert_all_attributes(GString *s, struct call_media *media, struct sdp_
}
}
static int replace_media_type(struct sdp_chopper *chop, struct sdp_media *media, struct call_media *cm) {
str *type = &media->media_type_str;
if (!cm->type.s)
return 0;
if (copy_up_to(chop, type))
return -1;
chopper_append_str(chop, &cm->type);
if (skip_over(chop, type))
return -1;
return 0;
}
static int replace_media_port(struct sdp_chopper *chop, struct sdp_media *media, struct packet_stream *ps) {
str *port = &media->port;
unsigned int p;
if (!media->port_num)
return 0;
if (copy_up_to(chop, port))
return -1;
p = ps->selected_sfd ? ps->selected_sfd->socket.local.port : 0;
chopper_append_printf(chop, "%u", p);
if (skip_over(chop, port))
return -1;
return 0;
}
static int replace_consecutive_port_count(struct sdp_chopper *chop, struct sdp_media *media,
struct packet_stream *ps, packet_stream_list *j)
{
int cons;
struct packet_stream *ps_n;
if (media->port_count == 1 || !ps->selected_sfd)
return 0;
for (cons = 1; cons < media->port_count; cons++) {
j = j->next;
if (!j)
goto warn;
ps_n = j->data;
if (ps_n->selected_sfd->socket.local.port != ps->selected_sfd->socket.local.port + cons) {
warn:
ilog(LOG_WARN, "Failed to handle consecutive ports");
break;
}
}
chopper_append_printf(chop, "/%i", cons);
return 0;
}
static int insert_ice_address(GString *s, stream_fd *sfd, const sdp_ng_flags *flags) {
if (!is_addr_unspecified(&flags->media_address))
sockaddr_print_gstring(s, &flags->media_address);
@ -2341,42 +2251,6 @@ static int insert_raddr_rport(GString *s, stream_fd *sfd, const sdp_ng_flags *fl
return 0;
}
static int replace_network_address(struct sdp_chopper *chop, struct network_address *address,
struct packet_stream *ps, sdp_ng_flags *flags, bool keep_unspec)
{
if (copy_up_to(chop, &address->address_type))
return -1;
if (!is_addr_unspecified(&flags->media_address))
g_string_append_printf(chop->output, "%s %s",
flags->media_address.family->rfc_name,
sockaddr_print_buf(&flags->media_address));
else
call_stream_address(chop->output, ps, SAF_NG, NULL, keep_unspec);
if (skip_over(chop, &address->address))
return -1;
return 0;
}
static int synth_session_connection(struct sdp_chopper *chop, struct sdp_media *sdp_media) {
if (!sdp_media->session->connection.s.s)
return -1;
if (sdp_media->c_line_pos)
copy_up_to_ptr(chop, sdp_media->c_line_pos);
else
copy_up_to_end_of(chop, chop->input);
chopper_append_c(chop, "c=");
chopper_append_str(chop, &sdp_media->session->connection.s);
chopper_append_c(chop, "\n");
return 0;
}
void sdp_chopper_destroy(struct sdp_chopper *chop) {
if (chop->output)
g_string_free(chop->output, TRUE);
@ -3237,70 +3111,6 @@ static struct packet_stream *print_sdp_media_section(GString *s, struct call_med
return ps_rtcp;
}
static const char *replace_sdp_media_section(struct sdp_chopper *chop, struct call_media *call_media,
struct sdp_media *sdp_media, packet_stream_list *rtp_ps_link, sdp_ng_flags *flags,
const bool keep_zero_address)
{
const char *err = NULL;
struct packet_stream *ps = rtp_ps_link->data;
bool is_active = true;
if (flags->ice_option != ICE_FORCE_RELAY && call_media->type_id != MT_MESSAGE) {
err = "failed to replace media type";
if (replace_media_type(chop, sdp_media, call_media))
goto error;
err = "failed to replace media port";
if (replace_media_port(chop, sdp_media, ps))
goto error;
err = "failed to replace media port count";
if (replace_consecutive_port_count(chop, sdp_media, ps, rtp_ps_link))
goto error;
err = "failed to replace media protocol";
if (replace_transport_protocol(chop, sdp_media, call_media))
goto error;
err = "failed to replace media formats";
if (replace_codec_list(chop, sdp_media, call_media))
goto error;
if (sdp_media->connection.parsed) {
err = "failed to replace media network address";
if (replace_network_address(chop, &sdp_media->connection.address, ps,
flags, keep_zero_address))
goto error;
}
}
else if (call_media->type_id == MT_MESSAGE) {
err = "failed to generate connection line";
if (!sdp_media->connection.parsed)
if (synth_session_connection(chop, sdp_media))
goto error;
// leave everything untouched
is_active = false;
goto next;
}
/* all unknown type attributes will stripped here */
err = "failed to process media attributes";
if (process_media_attributes(chop, sdp_media, flags, call_media))
goto error;
copy_up_to_end_of(chop, &sdp_media->s);
if (!sdp_media->port_num || !ps->selected_sfd)
is_active = false;
next:;
struct call_media *source_media = sdp_out_set_source_media_address(call_media, ps, flags, NULL);
print_sdp_media_section(chop->output, call_media, source_media, flags, rtp_ps_link, is_active,
attr_get_by_id(&sdp_media->attributes, ATTR_END_OF_CANDIDATES), false);
return NULL;
error:
return err;
}
static void sdp_out_add_origin(GString *out, struct call_monologue *monologue,
struct packet_stream *first_ps, sdp_ng_flags *flags)
{

Loading…
Cancel
Save