diff options
author | Richard Mudgett <rmudgett@digium.com> | 2014-03-13 21:27:15 +0000 |
---|---|---|
committer | Richard Mudgett <rmudgett@digium.com> | 2014-03-13 21:27:15 +0000 |
commit | 251868dc57b1b754efb8ec1a3f671ce785d57650 (patch) | |
tree | 1818674431cce1dc0a98f2f75738813b4e262a44 | |
parent | 5247a0d99078ecc0a108aba5ac24570f6f082f46 (diff) |
cdr.c: Add missing aow_unlock(cdr) in off nominal path of handle_dial_message().
* Trivial common code hoisting in handle_bridge_leave_message().
* Some whitespace fixing.
........
Merged revisions 410541 from http://svn.asterisk.org/svn/asterisk/branches/12
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@410542 65c4cc65-6c06-0410-ace0-fbb531ad65f3
-rw-r--r-- | main/cdr.c | 12 |
1 files changed, 6 insertions, 6 deletions
diff --git a/main/cdr.c b/main/cdr.c index c15da10d5..e1060a517 100644 --- a/main/cdr.c +++ b/main/cdr.c @@ -1973,6 +1973,7 @@ static void handle_dial_message(void *data, struct stasis_subscription *sub, str new_cdr = cdr_object_create_and_append(cdr); if (!new_cdr) { + ao2_unlock(cdr); return; } new_cdr->fn_table->process_dial_begin(new_cdr, @@ -2217,7 +2218,6 @@ static void handle_bridge_leave_message(void *data, struct stasis_subscription * /* Party A */ ao2_lock(cdr); for (it_cdr = cdr; it_cdr; it_cdr = it_cdr->next) { - if (!it_cdr->fn_table->process_bridge_leave) { continue; } @@ -2228,11 +2228,10 @@ static void handle_bridge_leave_message(void *data, struct stasis_subscription * left_bridge = 1; } } + ao2_unlock(cdr); if (!left_bridge) { - ao2_unlock(cdr); return; } - ao2_unlock(cdr); if (strcmp(bridge->subclass, "parking")) { /* Party B */ @@ -2436,10 +2435,10 @@ static void handle_standard_bridge_enter_message(struct cdr_object *cdr, if (!handled_cdr) { handled_cdr = it_cdr; } - break; + break; case BRIDGE_ENTER_NEED_CDR: /* Pass */ - break; + break; case BRIDGE_ENTER_NO_PARTY_B: /* We didn't win on any - end this CDR. If someone else comes in later * that is Party B to this CDR, it can re-activate this CDR. @@ -2448,7 +2447,7 @@ static void handle_standard_bridge_enter_message(struct cdr_object *cdr, handled_cdr = it_cdr; } cdr_object_finalize(cdr); - break; + break; } } } @@ -3355,6 +3354,7 @@ int ast_cdr_fork(const char *channel_name, struct ast_flags *options) { SCOPED_AO2LOCK(lock, cdr); + cdr_obj = cdr->last; if (cdr_obj->fn_table == &finalized_state_fn_table) { /* If the last CDR in the chain is finalized, don't allow a fork - |