summaryrefslogtreecommitdiff
path: root/main/channel.c
diff options
context:
space:
mode:
authorGeorge Joseph <gjoseph@digium.com>2016-11-16 17:44:12 -0600
committerGerrit Code Review <gerrit2@gerrit.digium.api>2016-11-16 17:44:12 -0600
commit013e7dd4a654a58cc1fde0fa76a8736f3a1567bd (patch)
tree0c60b28a50ab233ade5fe70e4dff485ee94b181d /main/channel.c
parentac0a1ee6da03f729413160e31a0fbfa79ea6cb1d (diff)
parentf62c9c42fa8a8ca72496872c0d0065b2933e6d6b (diff)
Merge "Revert "Revert "AGI: Only defer frames when in an interception routine."""
Diffstat (limited to 'main/channel.c')
-rw-r--r--main/channel.c24
1 files changed, 24 insertions, 0 deletions
diff --git a/main/channel.c b/main/channel.c
index d3ca370a6..2930b895c 100644
--- a/main/channel.c
+++ b/main/channel.c
@@ -10323,9 +10323,15 @@ int ast_channel_connected_line_macro(struct ast_channel *autoservice_chan, struc
ast_party_connected_line_copy(ast_channel_connected(macro_chan), connected);
}
+ ast_channel_start_defer_frames(macro_chan);
ast_channel_unlock(macro_chan);
retval = ast_app_run_macro(autoservice_chan, macro_chan, macro, macro_args);
+
+ ast_channel_lock(macro_chan);
+ ast_channel_stop_defer_frames(macro_chan);
+ ast_channel_unlock(macro_chan);
+
if (!retval) {
struct ast_party_connected_line saved_connected;
@@ -10373,9 +10379,15 @@ int ast_channel_redirecting_macro(struct ast_channel *autoservice_chan, struct a
ast_party_redirecting_copy(ast_channel_redirecting(macro_chan), redirecting);
}
+ ast_channel_start_defer_frames(macro_chan);
ast_channel_unlock(macro_chan);
retval = ast_app_run_macro(autoservice_chan, macro_chan, macro, macro_args);
+
+ ast_channel_lock(macro_chan);
+ ast_channel_stop_defer_frames(macro_chan);
+ ast_channel_unlock(macro_chan);
+
if (!retval) {
struct ast_party_redirecting saved_redirecting;
@@ -10416,9 +10428,15 @@ int ast_channel_connected_line_sub(struct ast_channel *autoservice_chan, struct
ast_party_connected_line_copy(ast_channel_connected(sub_chan), connected);
}
+ ast_channel_start_defer_frames(sub_chan);
ast_channel_unlock(sub_chan);
retval = ast_app_run_sub(autoservice_chan, sub_chan, sub, sub_args, 0);
+
+ ast_channel_lock(sub_chan);
+ ast_channel_stop_defer_frames(sub_chan);
+ ast_channel_unlock(sub_chan);
+
if (!retval) {
struct ast_party_connected_line saved_connected;
@@ -10459,9 +10477,15 @@ int ast_channel_redirecting_sub(struct ast_channel *autoservice_chan, struct ast
ast_party_redirecting_copy(ast_channel_redirecting(sub_chan), redirecting);
}
+ ast_channel_start_defer_frames(sub_chan);
ast_channel_unlock(sub_chan);
retval = ast_app_run_sub(autoservice_chan, sub_chan, sub, sub_args, 0);
+
+ ast_channel_lock(sub_chan);
+ ast_channel_stop_defer_frames(sub_chan);
+ ast_channel_unlock(sub_chan);
+
if (!retval) {
struct ast_party_redirecting saved_redirecting;