diff --git a/daemon/call_interfaces.c b/daemon/call_interfaces.c index b69d634d0..4ca01f534 100644 --- a/daemon/call_interfaces.c +++ b/daemon/call_interfaces.c @@ -2349,6 +2349,16 @@ const char *call_stop_forwarding_ng(bencode_item_t *input, bencode_item_t *outpu return NULL; } +static void call_monologue_set_block_mode(struct call_monologue *ml, struct sdp_ng_flags *flags) { + if (flags->delay_buffer >= 0) { + for (GList *l = ml->medias.head; l; l = l->next) { + struct call_media *media = l->data; + media->buffer_delay = flags->delay_buffer; + } + } + ml->detect_dtmf = flags->detect_dtmf; + codec_update_all_handlers(ml); +} const char *call_block_dtmf_ng(bencode_item_t *input, bencode_item_t *output) { AUTO_CLEANUP_NULL(struct call *call, call_unlock_release); struct call_monologue *monologue; @@ -2374,28 +2384,14 @@ const char *call_block_dtmf_ng(bencode_item_t *input, bencode_item_t *output) { } if (is_dtmf_replace_mode(mode) || flags.delay_buffer >= 0) { - if (monologue) { - if (flags.delay_buffer >= 0) { - for (GList *l = monologue->medias.head; l; l = l->next) { - struct call_media *media = l->data; - media->buffer_delay = flags.delay_buffer; - } - } - monologue->detect_dtmf = flags.detect_dtmf; - codec_update_all_handlers(monologue); - } - else + if (monologue) + call_monologue_set_block_mode(monologue, &flags); + else { for (GList *l = call->monologues.head; l; l = l->next) { struct call_monologue *ml = l->data; - ml->detect_dtmf = flags.detect_dtmf; - if (flags.delay_buffer >= 0) { - for (GList *k = ml->medias.head; k; k = k->next) { - struct call_media *media = k->data; - media->buffer_delay = flags.delay_buffer; - } - } - codec_update_all_handlers(ml); + call_monologue_set_block_mode(ml, &flags); } + } } return NULL;