MT#60476 sdp_create: handle rejection of first m=

Fix zero c= line when first m= line has a zero port.

Change-Id: Iecb022f768c53723d30bd5ce377e73f2cb64d358
mr13.0
Donat Zenichev 2 years ago
parent 8933c04be5
commit 1fc50a3188

@ -3685,12 +3685,30 @@ static void sdp_out_add_media_connection(GString *out, struct call_media *media,
address = &flags->media_address;
const char *media_conn_address = NULL;
const char *media_conn_address_type = address->family->rfc_name;
if (PS_ISSET(rtp_ps, ZERO_ADDR) && !MEDIA_ISSET(media, ICE))
media_conn_address = address->family->unspec_string;
else
const char *media_conn_address_type = NULL;
/* print zeroed address */
if (PS_ISSET(rtp_ps, ZERO_ADDR) && !MEDIA_ISSET(media, ICE)) {
if (!address) {
const struct intf_address *ifa_addr;
const struct local_intf *ifa;
if (rtp_ps->selected_sfd)
ifa = rtp_ps->selected_sfd->local_intf;
else
ifa = get_any_interface_address(rtp_ps->media->logical_intf, rtp_ps->media->desired_family);
ifa_addr = &ifa->spec->local_address;
media_conn_address_type = ifa_addr->addr.family->rfc_name;
media_conn_address = ifa_addr->addr.family->unspec_string;
}
else {
media_conn_address_type = address->family->rfc_name;
media_conn_address = address->family->unspec_string;
}
}
else {
media_conn_address_type = address->family->rfc_name;
media_conn_address = sockaddr_print_buf(address);
}
g_string_append_printf(out,
"c=IN %s %s\r\n",
@ -3806,6 +3824,10 @@ void handle_sdp_media_attributes(GString *s, struct call_media *media,
*/
if (media->media_id.s)
append_attr_to_gstring(s, "mid", &media->media_id, flags, media->type_id);
/* print zeroed address for the non accepted media, see RFC 3264 */
sdp_out_add_media_connection(s, media, rtp_ps, NULL, flags);
return;
}

Loading…
Cancel
Save