|
|
@ -2349,6 +2349,16 @@ const char *call_stop_forwarding_ng(bencode_item_t *input, bencode_item_t *outpu |
|
|
return NULL; |
|
|
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) { |
|
|
const char *call_block_dtmf_ng(bencode_item_t *input, bencode_item_t *output) { |
|
|
AUTO_CLEANUP_NULL(struct call *call, call_unlock_release); |
|
|
AUTO_CLEANUP_NULL(struct call *call, call_unlock_release); |
|
|
struct call_monologue *monologue; |
|
|
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 (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) { |
|
|
for (GList *l = call->monologues.head; l; l = l->next) { |
|
|
struct call_monologue *ml = l->data; |
|
|
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; |
|
|
return NULL; |
|
|
|