From d484f81b49dceb149cca78a22ad4af43282b5fa2 Mon Sep 17 00:00:00 2001 From: Richard Fuchs Date: Wed, 15 Apr 2026 10:04:57 -0400 Subject: [PATCH] MT#55283 global namespacing for some funcs Change-Id: I7d9cffabefd0af18b133d10e9d675cad42cef483 --- daemon/call.c | 84 ++++++++++++++++++++++++++++++++++++++------------ daemon/codec.c | 6 ++-- daemon/redis.c | 2 +- include/call.h | 12 ++++++-- 4 files changed, 79 insertions(+), 25 deletions(-) diff --git a/daemon/call.c b/daemon/call.c index c95112889..6d2b647cd 100644 --- a/daemon/call.c +++ b/daemon/call.c @@ -4110,8 +4110,7 @@ static void __unsubscribe_media_link(struct call_media *which, struct media_subs /** * Unsubscribe one particular media subscriber from this call media. */ -__attribute__((nonnull(1, 2))) -bool __unsubscribe_media(struct call_media *which, struct call_media *from) +bool unsubscribe_media(struct call_media *which, struct call_media *from) { if (!t_hash_table_is_set(which->media_subscriptions_ht) || !t_hash_table_is_set(from->media_subscribers_ht)) @@ -4145,25 +4144,72 @@ static void __unsubscribe_all_offer_answer_medias(struct call_media *cm, medias_ t_queue_push_tail(medias, other_cm); - __unsubscribe_media(other_cm, cm); - __unsubscribe_media(cm, other_cm); + unsubscribe_media(other_cm, cm); + unsubscribe_media(cm, other_cm); } } __attribute__((nonnull(1))) -static inline void __unsubscribe_medias_from_all(struct call_monologue *ml, subscription_store_ht ht) +INLINE void __unsubscribe_media_from_all(struct call_media *media, subscription_store_ht ht) { - for (int i = 0; i < ml->medias->len; i++) + IQUEUE_FOREACH_SAFE(&media->media_subscriptions, subscription) + __unsubscribe_media_link_store(media, subscription, ht); +} + +__attribute__((nonnull(1))) +INLINE void __unsubscribe_all_from_media(struct call_media *media, subscription_store_ht ht) +{ + IQUEUE_FOREACH_SAFE(&media->media_subscribers, subscription) + __unsubscribe_media_link_store(media, subscription, ht); +} + +__attribute__((nonnull(1))) +INLINE void unsubscribe_media_from_all(struct call_media *media) +{ + __unsubscribe_media_from_all(media, subscription_store_ht_null()); +} + +__attribute__((nonnull(1))) +INLINE void unsubscribe_all_from_media(struct call_media *media) +{ + __unsubscribe_all_from_media(media, subscription_store_ht_null()); +} + +__attribute__((nonnull(1))) +INLINE void __unsubscribe_monologue_from_all(struct call_monologue *ml, subscription_store_ht ht) +{ + for (unsigned int i = 0; i < ml->medias->len; i++) { struct call_media *media = ml->medias->pdata[i]; if (!media) continue; - IQUEUE_FOREACH_SAFE(&media->media_subscriptions, subscription) - __unsubscribe_media_link_store(media, subscription, ht); + __unsubscribe_media_from_all(media, ht); } } +__attribute__((nonnull(1))) +INLINE void __unsubscribe_all_from_monologue(struct call_monologue *ml, subscription_store_ht ht) +{ + for (unsigned int i = 0; i < ml->medias->len; i++) + { + struct call_media *media = ml->medias->pdata[i]; + if (!media) + continue; + + __unsubscribe_all_from_media(media, ht); + } +} + +void unsubscribe_monologue_from_all(struct call_monologue *ml) { + __unsubscribe_monologue_from_all(ml, subscription_store_ht_null()); +} + +void unsubscribe_all_from_monologue(struct call_monologue *ml) { + __unsubscribe_monologue_from_all(ml, subscription_store_ht_null()); +} + + /** * Check whether this monologue medias are subscribed to a single other monologue medias. */ @@ -4184,7 +4230,7 @@ struct call_monologue *ml_medias_subscribed_to_single_ml(struct call_monologue * } return return_ml; } -struct media_subscription *__add_media_subscription(struct call_media *which, struct call_media *to, +struct media_subscription *add_media_subscription(struct call_media *which, struct call_media *to, const struct sink_attrs *attrs) { struct media_subscription *ret; @@ -4269,8 +4315,8 @@ static struct media_subscription *__subscribe_medias_both_ways(struct call_media __unsubscribe_all_offer_answer_medias(b, medias); /* (re)create, preserving existing attributes if there have been any */ - __add_media_subscription(b, a, &b_attrs); - return __add_media_subscription(a, b, &a_attrs); + add_media_subscription(b, a, &b_attrs); + return add_media_subscription(a, b, &a_attrs); } /** @@ -4456,10 +4502,10 @@ static int monologue_subscribe_request1(struct call_media *src_media, struct cal } /* subscribe dst_ml (subscriber) to src_ml, don't forget to carry the egress flag, if required */ - __add_media_subscription(dst_media, src_media, &(struct sink_attrs) { .egress = !!flags->egress }); + add_media_subscription(dst_media, src_media, &(struct sink_attrs) { .egress = !!flags->egress }); /* mirroring, so vice-versa: src_media gets subscribed to dst_media (subscriber) */ if (flags->rtcp_mirror) - __add_media_subscription(src_media, dst_media, + add_media_subscription(src_media, dst_media, &(struct sink_attrs) { .egress = !!flags->egress, .rtcp_only = true }); // track media index difference if one ml is subscribed to multiple other mls @@ -4537,7 +4583,7 @@ __attribute__((nonnull(1, 2, 3))) int monologue_subscribe_request(const medias_q *medias, struct call_monologue *dst_ml, sdp_ng_flags *flags) { g_auto(subscription_store_ht) ht = subscription_store_ht_new(); - __unsubscribe_medias_from_all(dst_ml, ht); + __unsubscribe_monologue_from_all(dst_ml, ht); __call_monologue_init_from_flags(dst_ml, NULL, flags); for (auto_iter(l, medias->head); l; l = l->next) { @@ -4816,7 +4862,7 @@ int monologue_inject_start(struct call_monologue *src_ml, struct call_monologue struct media_subscription *dst_to_src_ms = call_get_media_subscription(dst_media->media_subscriptions_ht, src_media); if (!dst_to_src_ms) { - __add_media_subscription(dst_media, src_media, &(struct sink_attrs) { .inject = true }); + add_media_subscription(dst_media, src_media, &(struct sink_attrs) { .inject = true }); dst_to_src_ms = call_get_media_subscription(dst_media->media_subscriptions_ht, src_media); } if (!dst_to_src_ms) @@ -4863,7 +4909,7 @@ int monologue_inject_stop(struct call_monologue *src_ml, struct call_monologue * if (ms->monologue != src_ml) continue; - if (!__unsubscribe_media(dst_media, src_media)) + if (!unsubscribe_media(dst_media, src_media)) continue; removed_any = true; @@ -4937,13 +4983,13 @@ void dialogue_connect(const medias_q *src_medias, struct call_monologue *dst_ml, __auto_type ms = call_get_media_subscription(dst_media->media_subscriptions_ht, src_media); if (!ms) - __add_media_subscription(dst_media, src_media, &(struct sink_attrs) { }); + add_media_subscription(dst_media, src_media, &(struct sink_attrs) { }); if (flags->bidirectional) { ms = call_get_media_subscription(src_media->media_subscriptions_ht, dst_media); if (!ms) - __add_media_subscription(src_media, dst_media, &(struct sink_attrs) { }); + add_media_subscription(src_media, dst_media, &(struct sink_attrs) { }); } } @@ -6527,7 +6573,7 @@ bool monologue_transform(struct call_monologue *ml, sdp_ng_flags *flags, medias_ t_queue_push_tail(out_q, m); // subscribe to itself - __add_media_subscription(m, m, NULL); + add_media_subscription(m, m, NULL); __auto_type ps = m->streams.head->data; ps->advertised_endpoint = ps->endpoint = media->destination; diff --git a/daemon/codec.c b/daemon/codec.c index e600c53cd..939bfc38b 100644 --- a/daemon/codec.c +++ b/daemon/codec.c @@ -408,7 +408,7 @@ static void __transform_handler_shutdown(struct transform_handler *tfh) { if (!tfh->call) return; obj_release(tfh->call); - __unsubscribe_media(tfh->transform_media, tfh->source_media); + unsubscribe_media(tfh->transform_media, tfh->source_media); } @@ -584,10 +584,10 @@ static void __transform_subscriptions(struct codec_handler *handler) { __auto_type tfh = handler->transform; // subscribe source to destination: send media to the remote - __add_media_subscription(tfh->transform_media, tfh->source_media, NULL); + add_media_subscription(tfh->transform_media, tfh->source_media, NULL); // subscribe destination to output: forward received media to output - __add_media_subscription(handler->i.sink, tfh->transform_media, NULL); + add_media_subscription(handler->i.sink, tfh->transform_media, NULL); } static void append_pt(GString *req, const rtp_payload_type *pt) { diff --git a/daemon/redis.c b/daemon/redis.c index 1d11e2ef0..acbcb9f21 100644 --- a/daemon/redis.c +++ b/daemon/redis.c @@ -1819,7 +1819,7 @@ static int rbl_subs_cb(str *s, callback_arg_t dummy, struct redis_list *list, vo if (!other_media) return -1; - __add_media_subscription(media, other_media, + add_media_subscription(media, other_media, &(struct sink_attrs) { .offer_answer = offer_answer, .rtcp_only = rtcp_only, diff --git a/include/call.h b/include/call.h index 631553c30..2bfd7664c 100644 --- a/include/call.h +++ b/include/call.h @@ -844,10 +844,18 @@ void __monologue_free(struct call_monologue *m); void __monologue_tag(struct call_monologue *ml, const str *tag); void __monologue_viabranch(struct call_monologue *ml, const str *viabranch); struct packet_stream *__packet_stream_new(call_t *call); + __attribute__((nonnull(1, 2))) -struct media_subscription *__add_media_subscription(struct call_media * which, struct call_media * to, +struct media_subscription *add_media_subscription(struct call_media * which, struct call_media * to, const struct sink_attrs *attrs); -bool __unsubscribe_media(struct call_media * which, struct call_media * from); + +__attribute__((nonnull(1, 2))) +bool unsubscribe_media(struct call_media *which, struct call_media *from); +__attribute__((nonnull(1))) +void unsubscribe_monologue_from_all(struct call_monologue *ml); +__attribute__((nonnull(1))) +void unsubscribe_all_from_monologue(struct call_monologue *ml); + struct media_subscription *call_ml_get_top_ms(struct call_monologue *ml); bool call_ml_sendonly_inactive(struct call_monologue *ml); struct media_subscription *call_media_get_top_ms(struct call_media *cm);