summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMatthew Jordan <mjordan@digium.com>2014-09-06 22:49:43 +0000
committerMatthew Jordan <mjordan@digium.com>2014-09-06 22:49:43 +0000
commit128d187f385536d5b79d38d467f88d3e69dbafd3 (patch)
treefb7af21e1ff12a9dcf891830be988f8ddc01aa2d
parent8302bc7f0a72667a6d9fdc7d66828508977f1053 (diff)
main/cdr: Copy over location information during a fork
When a CDR is forked, a new CDR is created and appended to the CDR chain for the Party A. The forked CDR starts life off as a clone of the last non-finalized for the particular Party A. In the past, merely copying over the snapshots for Party A/Party B would be sufficient. However, as the CDRs now contain cached information from Party A - specifically application/data, context, and extension - we need to copy that over during a fork as well. Huzzah for unit tests catching this when the context/extension were derived from a cached value on the CDR instead of on Party A. ........ Merged revisions 422769 from http://svn.asterisk.org/svn/asterisk/branches/12 git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@422770 65c4cc65-6c06-0410-ace0-fbb531ad65f3
-rw-r--r--main/cdr.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/main/cdr.c b/main/cdr.c
index 5f2793ee8..823a9f13f 100644
--- a/main/cdr.c
+++ b/main/cdr.c
@@ -3386,6 +3386,10 @@ int ast_cdr_fork(const char *channel_name, struct ast_flags *options)
}
new_cdr->fn_table = cdr_obj->fn_table;
ast_string_field_set(new_cdr, bridge, cdr->bridge);
+ ast_string_field_set(new_cdr, appl, cdr->appl);
+ ast_string_field_set(new_cdr, data, cdr->data);
+ ast_string_field_set(new_cdr, context, cdr->context);
+ ast_string_field_set(new_cdr, exten, cdr->exten);
new_cdr->flags = cdr->flags;
/* Explicitly clear the AST_CDR_LOCK_APP flag - we want
* the application to be changed on the new CDR if the