Browse Source

MT#63317 split out flags and crypto setting

Change-Id: I62a5aed29f01ab548dbe1db4b6f9ba4dfbcfd8e8
pull/2008/head
Richard Fuchs 4 months ago
parent
commit
3f964a3f7c
1 changed files with 38 additions and 18 deletions
  1. +38
    -18
      daemon/call.c

+ 38
- 18
daemon/call.c View File

@ -2928,30 +2928,40 @@ static void media_copy_type(struct call_media *dst, struct call_media *src) {
dst->type_id = src->type_id;
}
__attribute__((nonnull(1, 2)))
static void media_update_flags(struct call_media *media, struct stream_params *sp) {
if (!sp->rtp_endpoint.port)
return;
/* copy parameters advertised by the sender of this message */
bf_copy_same(&media->media_flags, &sp->sp_flags,
SHARED_FLAG_RTCP_MUX | SHARED_FLAG_ASYMMETRIC | SHARED_FLAG_UNIDIRECTIONAL |
SHARED_FLAG_ICE | SHARED_FLAG_TRICKLE_ICE | SHARED_FLAG_ICE_LITE_PEER |
SHARED_FLAG_END_OF_CANDIDATES |
SHARED_FLAG_RTCP_FB | SHARED_FLAG_LEGACY_OSRTP | SHARED_FLAG_LEGACY_OSRTP_REV);
}
__attribute__((nonnull(1, 2, 3)))
static void media_update_crypto(struct call_media *media, struct stream_params *sp, sdp_ng_flags *flags) {
if (!sp->rtp_endpoint.port)
return;
// duplicate the entire queue of offered crypto params
crypto_params_sdes_queue_clear(&media->sdes_in);
crypto_params_sdes_queue_copy(&media->sdes_in, &sp->sdes_params);
if (media->sdes_in.length) {
MEDIA_SET(media, SDES);
__sdes_accept(media, flags);
}
}
// `media` can be NULL
__attribute__((nonnull(1, 3, 4)))
static void __media_init_from_flags(struct call_media *other_media, struct call_media *media,
struct stream_params *sp, sdp_ng_flags *flags)
{
if (sp->rtp_endpoint.port) {
/* copy parameters advertised by the sender of this message */
bf_copy_same(&other_media->media_flags, &sp->sp_flags,
SHARED_FLAG_RTCP_MUX | SHARED_FLAG_ASYMMETRIC | SHARED_FLAG_UNIDIRECTIONAL |
SHARED_FLAG_ICE | SHARED_FLAG_TRICKLE_ICE | SHARED_FLAG_ICE_LITE_PEER |
SHARED_FLAG_END_OF_CANDIDATES |
SHARED_FLAG_RTCP_FB | SHARED_FLAG_LEGACY_OSRTP | SHARED_FLAG_LEGACY_OSRTP_REV);
// duplicate the entire queue of offered crypto params
crypto_params_sdes_queue_clear(&other_media->sdes_in);
crypto_params_sdes_queue_copy(&other_media->sdes_in, &sp->sdes_params);
if (other_media->sdes_in.length) {
MEDIA_SET(other_media, SDES);
__sdes_accept(other_media, flags);
}
}
if (flags->opmode == OP_OFFER || flags->opmode == OP_ANSWER || flags->opmode == OP_PUBLISH) {
/* moved as plain text attributes, required later by sdp_create()
* extmap
@ -3079,6 +3089,8 @@ static struct call_media * monologue_add_zero_media(struct call_monologue *sende
media_update_protocol(sender_media, sp);
media_update_media_id(sender_media, sp);
media_loop_protect(sp, sender_media);
media_update_flags(sender_media, sp);
media_update_crypto(sender_media, sp, flags);
__media_init_from_flags(sender_media, NULL, sp, flags);
*num_ports_other = proto_num_ports(sp->num_ports, sender_media, flags,
(flags->rtcp_mux_demux || flags->rtcp_mux_accept) ? true : false);
@ -3202,6 +3214,8 @@ int monologue_offer_answer(struct call_monologue *monologues[2], sdp_streams_q *
else
media_answer_media_id(sender_media, sp);
media_loop_protect(sp, sender_media);
media_update_flags(sender_media, sp);
media_update_crypto(sender_media, sp, flags);
__media_init_from_flags(sender_media, receiver_media, sp, flags);
codecs_offer_answer(receiver_media, sender_media, sp, flags);
@ -3608,6 +3622,8 @@ int monologue_publish(struct call_monologue *ml, sdp_streams_q *streams, sdp_ng_
media_update_protocol(media, sp);
media_update_media_id(media, sp);
media_loop_protect(sp, media);
media_update_flags(media, sp);
media_update_crypto(media, sp, flags);
__media_init_from_flags(media, NULL, sp, flags);
codec_store_populate(&media->codecs, &sp->codecs,
@ -3699,6 +3715,8 @@ static int monologue_subscribe_request1(struct call_monologue *src_ml, struct ca
media_set_protocol(dst_media, src_media, sp, flags);
media_update_media_id(src_media, sp);
media_copy_media_id(dst_media, src_media, flags);
media_update_flags(dst_media, sp);
media_update_crypto(dst_media, sp, flags);
__media_init_from_flags(src_media, dst_media, sp, flags);
codec_store_populate(&dst_media->codecs, &src_media->codecs,
@ -3805,6 +3823,8 @@ int monologue_subscribe_answer(struct call_monologue *dst_ml, sdp_ng_flags *flag
media_update_protocol(dst_media, sp);
media_answer_media_id(dst_media, sp);
media_loop_protect(sp, dst_media);
media_update_flags(dst_media, sp);
media_update_crypto(dst_media, sp, flags);
__media_init_from_flags(dst_media, NULL, sp, flags);
if (flags->allow_transcoding) {


Loading…
Cancel
Save