diff options
author | Jenkins2 <jenkins2@gerrit.asterisk.org> | 2017-10-13 17:29:57 -0500 |
---|---|---|
committer | Gerrit Code Review <gerrit2@gerrit.digium.api> | 2017-10-13 17:29:57 -0500 |
commit | f584e10d9d84c4e1b9e016a95b45dad0f312d8cb (patch) | |
tree | 458fb3d0de317a1a77d445a688de64a2534c04bf /main | |
parent | 5e5383c47e3fa113093139f77b16e2dc21b4aa79 (diff) | |
parent | 6fdb992d12fe4783ae6553afa2bd9c8b3b7f27f4 (diff) |
Merge "cdr.c: Set stringfields only if they are different." into 15
Diffstat (limited to 'main')
-rw-r--r-- | main/cdr.c | 26 |
1 files changed, 18 insertions, 8 deletions
diff --git a/main/cdr.c b/main/cdr.c index fc125f254..6a3365ea0 100644 --- a/main/cdr.c +++ b/main/cdr.c @@ -1378,8 +1378,12 @@ static int base_process_party_a(struct cdr_object *cdr, struct ast_channel_snaps */ if (!ast_test_flag(&snapshot->flags, AST_FLAG_SUBROUTINE_EXEC) || ast_test_flag(&snapshot->softhangup_flags, AST_SOFTHANGUP_HANGUP_EXEC)) { - ast_string_field_set(cdr, context, snapshot->context); - ast_string_field_set(cdr, exten, snapshot->exten); + if (strcmp(cdr->context, snapshot->context)) { + ast_string_field_set(cdr, context, snapshot->context); + } + if (strcmp(cdr->exten, snapshot->exten)) { + ast_string_field_set(cdr, exten, snapshot->exten); + } } cdr_object_swap_snapshot(&cdr->party_a, snapshot); @@ -1389,11 +1393,15 @@ static int base_process_party_a(struct cdr_object *cdr, struct ast_channel_snaps * of "AppDialX". Prevent that, and any other application changes we might not want * here. */ - if (!ast_strlen_zero(snapshot->appl) - && (strncasecmp(snapshot->appl, "appdial", 7) || ast_strlen_zero(cdr->appl)) - && !ast_test_flag(&cdr->flags, AST_CDR_LOCK_APP)) { - ast_string_field_set(cdr, appl, snapshot->appl); - ast_string_field_set(cdr, data, snapshot->data); + if (!ast_test_flag(&cdr->flags, AST_CDR_LOCK_APP) + && !ast_strlen_zero(snapshot->appl) + && (strncasecmp(snapshot->appl, "appdial", 7) || ast_strlen_zero(cdr->appl))) { + if (strcmp(cdr->appl, snapshot->appl)) { + ast_string_field_set(cdr, appl, snapshot->appl); + } + if (strcmp(cdr->data, snapshot->data)) { + ast_string_field_set(cdr, data, snapshot->data); + } /* Dial (app_dial) is a special case. Because pre-dial handlers, which * execute before the dial begins, will alter the application/data to @@ -1405,7 +1413,9 @@ static int base_process_party_a(struct cdr_object *cdr, struct ast_channel_snaps } } - ast_string_field_set(cdr, linkedid, snapshot->linkedid); + if (strcmp(cdr->linkedid, snapshot->linkedid)) { + ast_string_field_set(cdr, linkedid, snapshot->linkedid); + } cdr_object_check_party_a_answer(cdr); cdr_object_check_party_a_hangup(cdr); |