diff options
Diffstat (limited to 'main/cdr.c')
-rw-r--r-- | main/cdr.c | 18 |
1 files changed, 11 insertions, 7 deletions
diff --git a/main/cdr.c b/main/cdr.c index ff0e4760e..df5d99b9b 100644 --- a/main/cdr.c +++ b/main/cdr.c @@ -223,7 +223,7 @@ static int cdr_toggle_runtime_options(void); /*! \brief The configuration settings for this module */ struct module_config { - struct ast_cdr_config *general; /*< CDR global settings */ + struct ast_cdr_config *general; /*!< CDR global settings */ }; /*! \brief The container for the module configuration */ @@ -1453,7 +1453,8 @@ static int base_process_parked_channel(struct cdr_object *cdr, struct ast_parked /* SINGLE STATE */ -static void single_state_init_function(struct cdr_object *cdr) { +static void single_state_init_function(struct cdr_object *cdr) +{ cdr->start = ast_tvnow(); cdr_object_check_party_a_answer(cdr); } @@ -2015,6 +2016,7 @@ static int cdr_object_finalize_party_b(void *obj, void *arg, int flags) struct cdr_object *cdr = obj; struct ast_channel_snapshot *party_b = arg; struct cdr_object *it_cdr; + for (it_cdr = cdr; it_cdr; it_cdr = it_cdr->next) { if (it_cdr->party_b.snapshot && !strcasecmp(it_cdr->party_b.snapshot->name, party_b->name)) { @@ -2032,6 +2034,7 @@ static int cdr_object_update_party_b(void *obj, void *arg, int flags) struct cdr_object *cdr = obj; struct ast_channel_snapshot *party_b = arg; struct cdr_object *it_cdr; + for (it_cdr = cdr; it_cdr; it_cdr = it_cdr->next) { if (!it_cdr->fn_table->process_party_b) { continue; @@ -2904,7 +2907,7 @@ void ast_cdr_format_var(struct ast_cdr *cdr, const char *name, char **ret, char } } -/* +/*! * \internal * \brief Callback that finds all CDRs that reference a particular channel by name */ @@ -2920,7 +2923,7 @@ static int cdr_object_select_all_by_name_cb(void *obj, void *arg, int flags) return 0; } -/* +/*! * \internal * \brief Callback that finds a CDR by channel name */ @@ -3157,8 +3160,9 @@ int ast_cdr_serialize_variables(const char *channel_name, struct ast_str **buf, ao2_lock(cdr); for (it_cdr = cdr; it_cdr; it_cdr = it_cdr->next) { - if (++x > 1) + if (++x > 1) { ast_str_append(buf, 0, "\n"); + } AST_LIST_TRAVERSE(&it_cdr->party_a.variables, variable, entries) { if (!(var = ast_var_name(variable))) { @@ -3241,6 +3245,7 @@ static int cdr_object_update_party_b_userfield_cb(void *obj, void *arg, int flag struct cdr_object *cdr = obj; 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 && it_cdr->next != NULL) { continue; @@ -3822,6 +3827,7 @@ static void cli_show_channel(struct ast_cli_args *a) ao2_lock(cdr); for (it_cdr = cdr; it_cdr; it_cdr = it_cdr->next) { struct timeval end; + if (snapshot_is_dialed(it_cdr->party_a.snapshot)) { continue; } @@ -4312,5 +4318,3 @@ int ast_cdr_engine_reload(void) return cdr_toggle_runtime_options(); } - - |