diff --git a/daemon/call.c b/daemon/call.c index 712e6c9af..ff523171b 100644 --- a/daemon/call.c +++ b/daemon/call.c @@ -5939,6 +5939,10 @@ void __monologue_unconfirm(struct call_monologue *monologue, const char *reason) if (!media) continue; __media_unconfirm(media, reason); + IQUEUE_FOREACH(&media->media_subscriptions, ms) + __media_unconfirm(ms->media, reason); + IQUEUE_FOREACH(&media->media_subscribers, ms) + __media_unconfirm(ms->media, reason); } } /** @@ -5956,28 +5960,6 @@ void __media_unconfirm(struct call_media *media, const char *reason) { __unconfirm_sinks(&stream->rtcp_sinks, reason); } } -/** - * Unconfirms all monologue medias and its subscribers/subscriptions. - */ -void dialogue_unconfirm(struct call_monologue *ml, const char *reason) { - __monologue_unconfirm(ml, reason); - - /* TODO: this seems to be doing similar work as `__monologue_unconfirm()` - * but works instead on subscriptions additionally. For the future - * this should probably be deprecated and `__monologue_unconfirm()` - * has to take the work on subscribers/subscriptions as well. - */ - for (unsigned int i = 0; i < ml->medias->len; i++) - { - struct call_media *media = ml->medias->pdata[i]; - if (!media) - continue; - IQUEUE_FOREACH(&media->media_subscriptions, ms) - __media_unconfirm(ms->media, reason); - IQUEUE_FOREACH(&media->media_subscribers, ms) - __media_unconfirm(ms->media, reason); - } -} static void __unkernelize_sinks(sink_handler_q *q, const char *reason) { for (__auto_type l = q->head; l; l = l->next) { @@ -6205,7 +6187,7 @@ static int call_get_monologue_new(struct call_monologue *monologues[2], call_t * __C_DBG("found existing monologue"); /* unkernelize existing monologue medias, which are subscribed to something */ - dialogue_unconfirm(ret, "signalling on existing monologue"); + __monologue_unconfirm(ret, "signalling on existing monologue"); /* If to-tag is present, retrieve it. * Create a new monologue for the other side, if the monologue with such to-tag not found. @@ -6365,12 +6347,12 @@ tag_setup: * derived from the viabranch. */ __monologue_tag(ft, fromtag); - dialogue_unconfirm(ft, "dialogue signalling event"); - dialogue_unconfirm(tt, "dialogue signalling event"); + __monologue_unconfirm(ft, "dialogue signalling event"); + __monologue_unconfirm(tt, "dialogue signalling event"); done: __monologue_unconfirm(ft, "dialogue signalling event"); - dialogue_unconfirm(ft, "dialogue signalling event"); + __monologue_unconfirm(ft, "dialogue signalling event"); __tags_associate(ft, tt); /* just provide gotten dialogs, diff --git a/daemon/call_interfaces.c b/daemon/call_interfaces.c index 67d8c9f99..d7b981f42 100644 --- a/daemon/call_interfaces.c +++ b/daemon/call_interfaces.c @@ -2044,7 +2044,7 @@ const char *call_play_dtmf_ng(ng_command_ctx_t *ctx) { found: ML_SET(monologue, DTMF_INJECTION_ACTIVE); - dialogue_unconfirm(monologue, "DTMF playback"); + __monologue_unconfirm(monologue, "DTMF playback"); for (unsigned int i = 0; i < monologue->medias->len; i++) { diff --git a/include/call.h b/include/call.h index 6ef649c58..34b08b0f4 100644 --- a/include/call.h +++ b/include/call.h @@ -938,7 +938,6 @@ void call_media_free(struct call_media **mdp); enum call_stream_state call_stream_state_machine(struct packet_stream *); void call_media_state_machine(struct call_media *m); void call_media_unkernelize(struct call_media *media, const char *reason); -void dialogue_unconfirm(struct call_monologue *ml, const char *); void __monologue_unconfirm(struct call_monologue *monologue, const char *); void __media_unconfirm(struct call_media *media, const char *); __attribute__((nonnull(1)))