diff options
author | murf <murf@f38db490-d61c-443f-a65b-d21fe96a405b> | 2008-09-12 04:29:34 +0000 |
---|---|---|
committer | murf <murf@f38db490-d61c-443f-a65b-d21fe96a405b> | 2008-09-12 04:29:34 +0000 |
commit | 37ea54642638553893a0a7ae6f0075bdbd3120a6 (patch) | |
tree | e55d2a3f7742f9b2be4a85d79cb6286138fb8afe /apps/app_dial.c | |
parent | 629eb508718fcbbd1b63c060586a359f4a5018b7 (diff) |
Tested by: sergee, murf, chris-mac, andrew, KNK
This is a "second attempt" to restore the previous "endbeforeh" behavior
in 1.4 and up. In order to capture information concerning all the
legs of transfers in all their infinite combinations, I was forced
to this particular solution by a chain of logical necessities, the
first being that I was not allowed to rewrite the CDR mechanism from
the ground up!
This change basically leaves the original machinery alone, which allows
IVR and local channel type situations to generate CDR's as normal, but
a channel flag can be set to suppress the normal running of the h exten.
That flag would be set by the code that runs the h exten from the
ast_bridge_call routine, to prevent the h exten from being run twice.
Also, a flag in the ast_bridge_config struct passed into ast_bridge_call
can be used to suppress the running of the h exten in that routine. This
would happen, for instance, if you use the 'g' option in the Dial app.
Running this routine 'early' allows not only the CDR() func to be used
in the h extension for reading CDR variables, but also allows them to
be modified before the CDR is posted to the backends.
While I dearly hope that this patch overcomes all problems, and
introduces no new problems, reality suggests that surely someone
will have problems. In this case, please re-open 13251 (or 13289),
and we'll see if we can't fix any remaining issues.
git-svn-id: http://svn.digium.com/svn/asterisk/branches/1.4@142675 f38db490-d61c-443f-a65b-d21fe96a405b
Diffstat (limited to 'apps/app_dial.c')
-rw-r--r-- | apps/app_dial.c | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/apps/app_dial.c b/apps/app_dial.c index 540a74e89..8eaacce9f 100644 --- a/apps/app_dial.c +++ b/apps/app_dial.c @@ -1741,6 +1741,8 @@ static int dial_exec_full(struct ast_channel *chan, void *data, struct ast_flags ast_set_flag(&(config.features_callee), AST_FEATURE_PARKCALL); if (ast_test_flag(peerflags, OPT_CALLER_PARK)) ast_set_flag(&(config.features_caller), AST_FEATURE_PARKCALL); + if (ast_test_flag(peerflags, OPT_GO_ON)) + ast_set_flag(&(config.features_caller), AST_FEATURE_NO_H_EXTEN); config.timelimit = timelimit; config.play_warning = play_warning; |