]> git.ipfire.org Git - thirdparty/asterisk.git/commitdiff
cdr: Allow setting of user field from 'h' extension
authorSebastian Gutierrez <sgutierrez@integraccs.com>
Tue, 21 Mar 2017 17:32:06 +0000 (14:32 -0300)
committerSebastian Gutierrez <scgm11@gmail.com>
Wed, 22 Mar 2017 13:49:28 +0000 (07:49 -0600)
The CDR code previously did not allow the user field to be set
from the 'h' extension in the dialplan. This change removes that
limitation and allows it to be set.

ASTERISK-26818

Change-Id: I0fed8a79b5e408bac4e30542b8f33a61c5ed9aa6

main/cdr.c

index baa17b96722312be14633b8e4b65b24c21c3bb66..005f68cbfc44c544e5dc36a26b7da10bcd72422a 100644 (file)
@@ -3253,7 +3253,7 @@ static int cdr_object_update_party_b_userfield_cb(void *obj, void *arg, int flag
        struct party_b_userfield_update *info = arg;
        struct cdr_object *it_cdr;
        for (it_cdr = cdr; it_cdr; it_cdr = it_cdr->next) {
-               if (it_cdr->fn_table == &finalized_state_fn_table) {
+               if (it_cdr->fn_table == &finalized_state_fn_table && it_cdr->next != NULL) {
                        continue;
                }
                if (it_cdr->party_b.snapshot
@@ -3277,7 +3277,7 @@ void ast_cdr_setuserfield(const char *channel_name, const char *userfield)
        if (cdr) {
                ao2_lock(cdr);
                for (it_cdr = cdr; it_cdr; it_cdr = it_cdr->next) {
-                       if (it_cdr->fn_table == &finalized_state_fn_table) {
+                       if (it_cdr->fn_table == &finalized_state_fn_table && it_cdr->next != NULL) {
                                continue;
                        }
                        strcpy(it_cdr->party_a.userfield, userfield);