]> git.ipfire.org Git - thirdparty/asterisk.git/commit
main/cdr: Allow setting properties on a finalized CDR if it is the last one 98/1898/1
authorMatt Jordan <mjordan@digium.com>
Sat, 2 Jan 2016 16:26:04 +0000 (10:26 -0600)
committerMatt Jordan <mjordan@digium.com>
Sat, 2 Jan 2016 16:35:15 +0000 (10:35 -0600)
commit1087b0c6eda6a2372f923a6cac6dccc865fd438a
treef31119994b0373b2b7c906db21f12c0e2968ce74
parent1f23e65b89c939779c109689d6e99d79b01cd2bf
main/cdr: Allow setting properties on a finalized CDR if it is the last one

Prior to this patch, we explicitly disallowed setting any properties on a
finalized CDR. This seemed like a good idea at the time; in practice, it was
more restrictive.

There are weird and strange scenarios where setting a property on a finalized
CDR is definitely wrong. For example, we may Fork a CDR, finalizing the
previous one, then change a property. In said case, the old CDR is supposed
to now be 'immutable' (so to speak), and should not be updated. From the
perspective of the code, a forked CDR that is finalized is just finalized.
Hence why we decided these should not be updated.

In practice, it is much more common to want to set a property on a CDR in
the h extension or in a hangup handler. Disallowing a common scenario to make
an esoteric behaviour work isn't good. This patch fixes this by allowing
callers to set a property IF we are the last CDR in the chain. This preserves
the finalized CDR if it was forked, while allowing the more common case to
function.

ASTERISK-25458 #close

Change-Id: Icf3553c607b9f561152a41e6d8381d594ccdf4b9
main/cdr.c