]> git.ipfire.org Git - thirdparty/asterisk.git/commitdiff
Update CDR variables as pbx starts
authorAlec L Davis <sivad.a@paradise.net.nz>
Wed, 20 Jan 2010 08:18:45 +0000 (08:18 +0000)
committerAlec L Davis <sivad.a@paradise.net.nz>
Wed, 20 Jan 2010 08:18:45 +0000 (08:18 +0000)
Allows CDR variables added in cdr.c:set_one_cid to become visable during the call,
by executing ast_cdr_update() early in __ast_pbx run.
Reverts sig_pri changes in trunk that are specific to isdn technology only.

(closes issue #16638)
Reported by: alecdavis
Patches:
      cdr_update.diff3.txt uploaded by alecdavis (license 585)
Tested by: alecdavis

git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@241416 65c4cc65-6c06-0410-ace0-fbb531ad65f3

channels/sig_pri.c
main/pbx.c

index 63b84e5f9b256e5bea7b25c3dfc16ee8ca9ec885..76f8f41e0a8ac1a38d5403e944fd6d3e9f41bbf3 100644 (file)
@@ -2515,7 +2515,6 @@ static void *pri_dchannel(void *vpri)
                                                                sig_pri_handle_subcmds(pri, chanpos, e->e, e->ring.channel,
                                                                        e->ring.subcmds, e->ring.call);
 
-                                                               ast_cdr_update(c);
                                                        }
                                                        if (c && !ast_pthread_create_detached(&threadid, NULL, pri_ss_thread, pri->pvts[chanpos])) {
                                                                ast_verb(3, "Accepting overlap call from '%s' to '%s' on channel %d/%d, span %d\n",
@@ -2618,7 +2617,6 @@ static void *pri_dchannel(void *vpri)
                                                                sig_pri_handle_subcmds(pri, chanpos, e->e, e->ring.channel,
                                                                        e->ring.subcmds, e->ring.call);
 
-                                                               ast_cdr_update(c);
                                                        }
                                                        if (c && !ast_pbx_start(c)) {
                                                                ast_verb(3, "Accepting call from '%s' to '%s' on channel %d/%d, span %d\n",
index 6f67abaea6fc69ea8b8fc5bf8f18835180264a3a..1b6e498f50b30d6a5b7172d817409dc266565f66 100644 (file)
@@ -4628,6 +4628,10 @@ static enum ast_pbx_result __ast_pbx_run(struct ast_channel *c,
                        ast_copy_string(c->context, "default", sizeof(c->context));
                }
        }
+       if (c->cdr) {
+               /* allow CDR variables that have been collected after channel was created to be visible during call */
+               ast_cdr_update(c);
+       }
        for (;;) {
                char dst_exten[256];    /* buffer to accumulate digits */
                int pos = 0;            /* XXX should check bounds */