]> git.ipfire.org Git - thirdparty/asterisk.git/commitdiff
main/cdr: Carry over the disable flag when 'disable all' is specified 56/656/2
authormjordan <mjordan@digium.com>
Mon, 15 Jun 2015 00:48:26 +0000 (19:48 -0500)
committerRichard Mudgett <rmudgett@digium.com>
Mon, 15 Jun 2015 15:35:01 +0000 (10:35 -0500)
The CDR_PROP function (as well as the NoCDR application) set the
'disable all' flag (AST_CDR_FLAG_DISABLE_ALL) on the current CDR. This
flag is supposed to be applied to all CDRs that are currently in the
chain, as well as all CDRs that may be created in the future. Currently,
however, the flag is only applied to the existing CDRs in the chain; new
CDRs do not receive the 'disable all' flag. In particular, this affects
parallel dials, which generate new CDRs for each pair of channels in
the dial attempt.

This patch carries over the 'disable all' flag when it is specified on a
CDR and a new CDR is generated for the chain.

ASTERISK-24344 #close

Change-Id: I91a0f0031e4d147bdf8a68ecd08304d506fb6a0e

main/cdr.c

index c1fea78dbf505f3247cfd53f0d829e5f384df722..8d7f53f174639b7e1db5c29f3bb7e555d309a27a 100644 (file)
@@ -915,6 +915,14 @@ static struct cdr_object *cdr_object_create_and_append(struct cdr_object *cdr)
        ast_string_field_set(new_cdr, context, cdr_last->context);
        ast_string_field_set(new_cdr, exten, cdr_last->exten);
 
+       /*
+        * If the current CDR says to disable all future ones,
+        * keep the disable chain going
+        */
+       if (ast_test_flag(&cdr_last->flags, AST_CDR_FLAG_DISABLE_ALL)) {
+               ast_set_flag(&new_cdr->flags, AST_CDR_FLAG_DISABLE_ALL);
+       }
+
        /* Copy over other Party A information */
        cdr_object_snapshot_copy(&new_cdr->party_a, &cdr_last->party_a);