aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rwxr-xr-xChangeLog2
-rwxr-xr-xapps/app_forkcdr.c9
2 files changed, 9 insertions, 2 deletions
diff --git a/ChangeLog b/ChangeLog
index 62e1b7a9c..78016cc9b 100755
--- a/ChangeLog
+++ b/ChangeLog
@@ -8,7 +8,7 @@
* many files: Update applications to add an exit status variable, make priority jumping optional, and use new args parsing macros
* pbx.c cdr.c res/res_features.c apps/app_dial.c include/asterisk/cdr.h: Convert some built-in applications to use new args parsing macros. Change ast_cdr_reset to take a pointer to an ast_flags structure instead of an integer for flags.
* channels/chan_agent.c: Don't loop forever on an invalid options string
- * apps/app_disa.c: Fix to use correct arguments to ast_cdr_reset
+ * apps/app_disa.c apps/app_forkcdr.c: Fix to use correct arguments to ast_cdr_reset
2005-11-05 Kevin P. Fleming <kpfleming@digium.com>
diff --git a/apps/app_forkcdr.c b/apps/app_forkcdr.c
index 0019ec1a4..ad8eaa0a7 100755
--- a/apps/app_forkcdr.c
+++ b/apps/app_forkcdr.c
@@ -57,16 +57,23 @@ static void ast_cdr_fork(struct ast_channel *chan)
{
struct ast_cdr *cdr;
struct ast_cdr *newcdr;
+ struct ast_flags flags = { AST_CDR_FLAG_KEEP_VARS };
+
if (!chan || !(cdr = chan->cdr))
return;
+
while (cdr->next)
cdr = cdr->next;
+
if (!(newcdr = ast_cdr_dup(cdr)))
return;
+
ast_cdr_append(cdr, newcdr);
- ast_cdr_reset(newcdr, AST_CDR_FLAG_KEEP_VARS);
+ ast_cdr_reset(newcdr, &flags);
+
if (!ast_test_flag(cdr, AST_CDR_FLAG_KEEP_VARS))
ast_cdr_free_vars(cdr, 0);
+
ast_set_flag(cdr, AST_CDR_FLAG_CHILD | AST_CDR_FLAG_LOCKED);
}