|
|
|
@ -1965,6 +1965,20 @@ static void insert_crypto(struct call_media *media, struct sdp_chopper *chop, st |
|
|
|
for (GList *l = media->sdes_out.head; l; l = l->next) |
|
|
|
insert_crypto1(media, chop, l->data, flags); |
|
|
|
} |
|
|
|
static void insert_rtcp_attr(struct sdp_chopper *chop, struct packet_stream *ps, |
|
|
|
const struct sdp_ng_flags *flags) |
|
|
|
{ |
|
|
|
if (flags->no_rtcp_attr) |
|
|
|
return; |
|
|
|
chopper_append_printf(chop, "a=rtcp:%u", ps->selected_sfd->socket.local.port); |
|
|
|
if (flags->full_rtcp_attr) { |
|
|
|
char buf[64]; |
|
|
|
int len; |
|
|
|
call_stream_address46(buf, ps, SAF_NG, &len, NULL, 0); |
|
|
|
chopper_append_printf(chop, " IN %.*s", len, buf); |
|
|
|
} |
|
|
|
chopper_append_c(chop, "\r\n"); |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
/* called with call->master_lock held in W */ |
|
|
|
@ -2100,28 +2114,14 @@ int sdp_replace(struct sdp_chopper *chop, GQueue *sessions, struct call_monologu |
|
|
|
|| (flags->opmode == OP_OFFER |
|
|
|
&& flags->rtcp_mux_require))) |
|
|
|
{ |
|
|
|
if (!flags->no_rtcp_attr) { |
|
|
|
chopper_append_c(chop, "a=rtcp:"); |
|
|
|
chopper_append_printf(chop, "%u", ps->selected_sfd->socket.local.port); |
|
|
|
chopper_append_c(chop, "\r\na=rtcp-mux\r\n"); |
|
|
|
} |
|
|
|
else |
|
|
|
chopper_append_c(chop, "a=rtcp-mux\r\n"); |
|
|
|
insert_rtcp_attr(chop, ps, flags); |
|
|
|
chopper_append_c(chop, "a=rtcp-mux\r\n"); |
|
|
|
ps_rtcp = NULL; |
|
|
|
} |
|
|
|
else if (ps_rtcp && !flags->ice_force_relay) { |
|
|
|
if (!flags->no_rtcp_attr) { |
|
|
|
chopper_append_c(chop, "a=rtcp:"); |
|
|
|
chopper_append_printf(chop, "%u", ps_rtcp->selected_sfd->socket.local.port); |
|
|
|
if (!MEDIA_ISSET(call_media, RTCP_MUX)) |
|
|
|
chopper_append_c(chop, "\r\n"); |
|
|
|
else |
|
|
|
chopper_append_c(chop, "\r\na=rtcp-mux\r\n"); |
|
|
|
} |
|
|
|
else { |
|
|
|
if (MEDIA_ISSET(call_media, RTCP_MUX)) |
|
|
|
chopper_append_c(chop, "a=rtcp-mux\r\n"); |
|
|
|
} |
|
|
|
insert_rtcp_attr(chop, ps_rtcp, flags); |
|
|
|
if (MEDIA_ISSET(call_media, RTCP_MUX)) |
|
|
|
chopper_append_c(chop, "a=rtcp-mux\r\n"); |
|
|
|
} |
|
|
|
} |
|
|
|
else |
|
|
|
|