diff options
Diffstat (limited to 'apps/app_dial.c')
-rw-r--r-- | apps/app_dial.c | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/apps/app_dial.c b/apps/app_dial.c index cd675fad9..2fb7fc9ac 100644 --- a/apps/app_dial.c +++ b/apps/app_dial.c @@ -1958,10 +1958,12 @@ static void end_bridge_callback(void *data) time(&end); ast_channel_lock(chan); + ast_channel_stage_snapshot(chan); snprintf(buf, sizeof(buf), "%d", ast_channel_get_up_time(chan)); pbx_builtin_setvar_helper(chan, "ANSWEREDTIME", buf); snprintf(buf, sizeof(buf), "%d", ast_channel_get_duration(chan)); pbx_builtin_setvar_helper(chan, "DIALEDTIME", buf); + ast_channel_stage_snapshot_done(chan); ast_channel_unlock(chan); } @@ -2096,11 +2098,13 @@ static int dial_exec_full(struct ast_channel *chan, const char *data, struct ast struct ast_party_caller caller; /* Reset all DIAL variables back to blank, to prevent confusion (in case we don't reset all of them). */ + ast_channel_stage_snapshot(chan); pbx_builtin_setvar_helper(chan, "DIALSTATUS", ""); pbx_builtin_setvar_helper(chan, "DIALEDPEERNUMBER", ""); pbx_builtin_setvar_helper(chan, "DIALEDPEERNAME", ""); pbx_builtin_setvar_helper(chan, "ANSWEREDTIME", ""); pbx_builtin_setvar_helper(chan, "DIALEDTIME", ""); + ast_channel_stage_snapshot_done(chan); if (ast_strlen_zero(data)) { ast_log(LOG_WARNING, "Dial requires an argument (technology/resource)\n"); @@ -2431,6 +2435,9 @@ static int dial_exec_full(struct ast_channel *chan, const char *data, struct ast chanlist_free(tmp); continue; } + + ast_channel_stage_snapshot(tc); + ast_channel_get_device_name(tc, device_name, sizeof(device_name)); if (!ignore_cc) { ast_cc_extension_monitor_add_dialstring(chan, tmp->interface, device_name); @@ -2540,6 +2547,8 @@ static int dial_exec_full(struct ast_channel *chan, const char *data, struct ast else ast_channel_exten_set(tc, ast_channel_exten(chan)); + ast_channel_stage_snapshot_done(tc); + ast_channel_unlock(tc); ast_channel_unlock(chan); @@ -2690,6 +2699,7 @@ static int dial_exec_full(struct ast_channel *chan, const char *data, struct ast ast_answer(chan); strcpy(pa.status, "ANSWER"); + ast_channel_stage_snapshot(chan); pbx_builtin_setvar_helper(chan, "DIALSTATUS", pa.status); /* Ah ha! Someone answered within the desired timeframe. Of course after this we will always return with -1 so that it is hung up properly after the @@ -2708,6 +2718,7 @@ static int dial_exec_full(struct ast_channel *chan, const char *data, struct ast } ast_channel_unlock(peer); pbx_builtin_setvar_helper(chan, "DIALEDPEERNUMBER", number); + ast_channel_stage_snapshot_done(chan); if (!ast_strlen_zero(args.url) && ast_channel_supports_html(peer) ) { ast_debug(1, "app_dial: sendurl=%s.\n", args.url); @@ -2793,6 +2804,7 @@ static int dial_exec_full(struct ast_channel *chan, const char *data, struct ast /* chan and peer are going into the PBX; as such neither are considered * outgoing channels any longer */ ast_clear_flag(ast_channel_flags(chan), AST_FLAG_OUTGOING); + ast_channel_stage_snapshot(peer); ast_clear_flag(ast_channel_flags(peer), AST_FLAG_OUTGOING); ast_replace_subargument_delimiter(opt_args[OPT_ARG_GOTO]); @@ -2801,6 +2813,7 @@ static int dial_exec_full(struct ast_channel *chan, const char *data, struct ast ast_channel_context_set(peer, ast_channel_context(chan)); ast_channel_exten_set(peer, ast_channel_exten(chan)); ast_channel_priority_set(peer, ast_channel_priority(chan) + 2); + ast_channel_stage_snapshot_done(peer); if (ast_pbx_start(peer)) { ast_autoservice_chan_hangup_peer(chan, peer); } |