|
|
|
@ -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; |
|
|
|
} |
|
|
|
|
|
|
|
|