From: Matthew Jordan Date: Sat, 6 Sep 2014 22:48:24 +0000 (+0000) Subject: main/cdr: Copy over location information during a fork X-Git-Tag: 12.6.0-rc1~28 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=218648e709d5c95847e7ce22fbb3c184b7f9837a;p=thirdparty%2Fasterisk.git 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. git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/12@422769 65c4cc65-6c06-0410-ace0-fbb531ad65f3 --- diff --git a/main/cdr.c b/main/cdr.c index 1c8b59b149..42633da79f 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