diff options
author | murf <murf@f38db490-d61c-443f-a65b-d21fe96a405b> | 2008-11-21 21:19:47 +0000 |
---|---|---|
committer | murf <murf@f38db490-d61c-443f-a65b-d21fe96a405b> | 2008-11-21 21:19:47 +0000 |
commit | 06c89ad29c07eefb88804403b9d9ff1e6895b54c (patch) | |
tree | d489669d84004e66a8c7a95caff7693c2b8cc76e /res | |
parent | d554cec97557c7eda74672ccef88d56e329538b4 (diff) |
(closes issue #13871)
Reported by: mdu113
This one is totally my fault. The code doesn't even
create a bridge if the channel CDR has POST_DISABLED.
I didn't check for that at the end of the bridge.
Fixed with a few small insertions. Tested. Looks
good. No cdr generated, no crash, no unnecc. data
objects created either.
git-svn-id: http://svn.digium.com/svn/asterisk/branches/1.4@158483 f38db490-d61c-443f-a65b-d21fe96a405b
Diffstat (limited to 'res')
-rw-r--r-- | res/res_features.c | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/res/res_features.c b/res/res_features.c index a5c3dc9b5..31f3aa935 100644 --- a/res/res_features.c +++ b/res/res_features.c @@ -1772,13 +1772,15 @@ int ast_bridge_call(struct ast_channel *chan,struct ast_channel *peer,struct ast /* obey the NoCDR() wishes. -- move the DISABLED flag to the bridge CDR if it was set on the channel during the bridge... */ if (res != AST_PBX_KEEPALIVE) { new_chan_cdr = pick_unlocked_cdr(chan->cdr); /* the proper chan cdr, if there are forked cdrs */ - if (new_chan_cdr && ast_test_flag(new_chan_cdr, AST_CDR_FLAG_POST_DISABLED)) + if (bridge_cdr && new_chan_cdr && ast_test_flag(new_chan_cdr, AST_CDR_FLAG_POST_DISABLED)) ast_set_flag(bridge_cdr, AST_CDR_FLAG_POST_DISABLED); } /* we can post the bridge CDR at this point */ - ast_cdr_end(bridge_cdr); - ast_cdr_detach(bridge_cdr); + if (bridge_cdr) { + ast_cdr_end(bridge_cdr); + ast_cdr_detach(bridge_cdr); + } /* do a specialized reset on the beginning channel CDR's, if they still exist, so as not to mess up |