diff options
author | seanbright <seanbright@f38db490-d61c-443f-a65b-d21fe96a405b> | 2008-11-09 01:27:00 +0000 |
---|---|---|
committer | seanbright <seanbright@f38db490-d61c-443f-a65b-d21fe96a405b> | 2008-11-09 01:27:00 +0000 |
commit | 70ff546e20c930fe8c28001a7cef10d8ee569896 (patch) | |
tree | 9d9c7d00ae1f93a61488a183927f7571484ce363 /apps/app_followme.c | |
parent | cd55da2a782fe1b57c8f7c6d92615006b7d76177 (diff) |
Merged revisions 155553 via svnmerge from
https://origsvn.digium.com/svn/asterisk/branches/1.4
........
r155553 | seanbright | 2008-11-08 20:08:07 -0500 (Sat, 08 Nov 2008) | 6 lines
Use static functions here instead of nested ones. This requires a small
change to the ast_bridge_config struct as well. To understand the reason
for this change, see the following post:
http://gcc.gnu.org/ml/gcc-help/2008-11/msg00049.html
........
git-svn-id: http://svn.digium.com/svn/asterisk/trunk@155554 f38db490-d61c-443f-a65b-d21fe96a405b
Diffstat (limited to 'apps/app_followme.c')
-rw-r--r-- | apps/app_followme.c | 43 |
1 files changed, 22 insertions, 21 deletions
diff --git a/apps/app_followme.c b/apps/app_followme.c index 6e29ec114..1d324bdc2 100644 --- a/apps/app_followme.c +++ b/apps/app_followme.c @@ -971,6 +971,27 @@ static struct call_followme *find_realtime(const char *name) return new; } +static void end_bridge_callback(void *data) +{ + char buf[80]; + time_t end; + struct ast_channel *chan = data; + + time(&end); + + ast_channel_lock(chan); + if (chan->cdr->answer.tv_sec) { + snprintf(buf, sizeof(buf), "%ld", end - chan->cdr->answer.tv_sec); + pbx_builtin_setvar_helper(chan, "ANSWEREDTIME", buf); + } + + if (chan->cdr->start.tv_sec) { + snprintf(buf, sizeof(buf), "%ld", end - chan->cdr->start.tv_sec); + pbx_builtin_setvar_helper(chan, "DIALEDTIME", buf); + } + ast_channel_unlock(chan); +} + static int app_exec(struct ast_channel *chan, void *data) { struct fm_args targs; @@ -1085,27 +1106,6 @@ static int app_exec(struct ast_channel *chan, void *data) ast_stream_and_wait(chan, targs.sorryprompt, ""); res = 0; } else { - auto void end_bridge_callback(void); - void end_bridge_callback (void) - { - char buf[80]; - time_t end; - - time(&end); - - ast_channel_lock(chan); - if (chan->cdr->answer.tv_sec) { - snprintf(buf, sizeof(buf), "%ld", end - chan->cdr->answer.tv_sec); - pbx_builtin_setvar_helper(chan, "ANSWEREDTIME", buf); - } - - if (chan->cdr->start.tv_sec) { - snprintf(buf, sizeof(buf), "%ld", end - chan->cdr->start.tv_sec); - pbx_builtin_setvar_helper(chan, "DIALEDTIME", buf); - } - ast_channel_unlock(chan); - } - caller = chan; outbound = targs.outbound; /* Bridge the two channels. */ @@ -1115,6 +1115,7 @@ static int app_exec(struct ast_channel *chan, void *data) ast_set_flag(&(config.features_callee), AST_FEATURE_AUTOMON); ast_set_flag(&(config.features_caller), AST_FEATURE_AUTOMON); config.end_bridge_callback = end_bridge_callback; + config.end_bridge_callback_data = chan; ast_moh_stop(caller); /* Be sure no generators are left on it */ |