diff options
author | Richard Mudgett <rmudgett@digium.com> | 2017-10-05 18:12:04 -0500 |
---|---|---|
committer | Richard Mudgett <rmudgett@digium.com> | 2017-10-11 13:28:26 -0500 |
commit | 5f6bad67332921ce5af3bdf8ffddd02e5c203ca3 (patch) | |
tree | 2d8e16ef61c0d6ce1369cc308e7cd5e55acf1221 /main/cdr.c | |
parent | 4a0fa1ba59394a68a51fce660064112e5eac0a0e (diff) |
cdr.c: Defer misc checks.
Try to defer some checks until needed in case there is an early exit.
Change-Id: Ibc6b34c38a4f60ad4f9b67984b7d070a07257064
Diffstat (limited to 'main/cdr.c')
-rw-r--r-- | main/cdr.c | 20 |
1 files changed, 11 insertions, 9 deletions
diff --git a/main/cdr.c b/main/cdr.c index 8a1226bc4..ecf7bd30b 100644 --- a/main/cdr.c +++ b/main/cdr.c @@ -1932,6 +1932,10 @@ static void handle_dial_message(void *data, struct stasis_subscription *sub, str if (!peer && !caller) { return; } + if (filter_channel_snapshot(peer) || (caller && filter_channel_snapshot(caller))) { + return; + } + dial_status_blob = ast_json_object_get(ast_multi_channel_blob_get_json(payload), "dialstatus"); if (dial_status_blob) { dial_status = ast_json_string_get(dial_status_blob); @@ -1944,10 +1948,6 @@ static void handle_dial_message(void *data, struct stasis_subscription *sub, str (unsigned int)stasis_message_timestamp(message)->tv_sec, (unsigned int)stasis_message_timestamp(message)->tv_usec); - if (filter_channel_snapshot(peer) || (caller && filter_channel_snapshot(caller))) { - return; - } - /* Figure out who is running this show */ if (caller) { cdr = ao2_find(active_cdrs_by_channel, caller->uniqueid, OBJ_SEARCH_KEY); @@ -2077,8 +2077,6 @@ static void handle_channel_cache_message(void *data, struct stasis_subscription struct stasis_cache_update *update = stasis_message_data(message); struct ast_channel_snapshot *old_snapshot; struct ast_channel_snapshot *new_snapshot; - const char *uniqueid; - const char *name; struct cdr_object *it_cdr; ast_assert(update != NULL); @@ -2086,8 +2084,6 @@ static void handle_channel_cache_message(void *data, struct stasis_subscription old_snapshot = stasis_message_data(update->old_snapshot); new_snapshot = stasis_message_data(update->new_snapshot); - uniqueid = new_snapshot ? new_snapshot->uniqueid : old_snapshot->uniqueid; - name = new_snapshot ? new_snapshot->name : old_snapshot->name; if (filter_channel_cache_message(old_snapshot, new_snapshot)) { return; @@ -2101,11 +2097,17 @@ static void handle_channel_cache_message(void *data, struct stasis_subscription cdr->is_root = 1; ao2_link(active_cdrs_by_channel, cdr); } else { + const char *uniqueid; + + uniqueid = new_snapshot ? new_snapshot->uniqueid : old_snapshot->uniqueid; cdr = ao2_find(active_cdrs_by_channel, uniqueid, OBJ_SEARCH_KEY); } /* Handle Party A */ if (!cdr) { + const char *name; + + name = new_snapshot ? new_snapshot->name : old_snapshot->name; ast_log(AST_LOG_WARNING, "No CDR for channel %s\n", name); ast_assert(0); } else { @@ -4288,7 +4290,7 @@ int ast_cdr_engine_reload(void) RAII_VAR(struct module_config *, old_mod_cfg, ao2_global_obj_ref(module_configs), ao2_cleanup); RAII_VAR(struct module_config *, mod_cfg, NULL, ao2_cleanup); - if (process_config(1)) { + if (!old_mod_cfg || process_config(1)) { return -1; } |