Merged revisions 142063 via svnmerge from
https://origsvn.digium.com/svn/asterisk/branches/1.4 ........ r142063 | russell | 2008-09-09 10:40:24 -0500 (Tue, 09 Sep 2008) | 5 lines Ensure that the stored CDR reference is still valid after the bridge before poking at it. Also, keep the channel locked while messing with this CDR. (fixes crashes reported in issue #13409) ........ git-svn-id: http://svn.digium.com/svn/asterisk/trunk@142064 f38db490-d61c-443f-a65b-d21fe96a405b
This commit is contained in:
parent
357d35e8b7
commit
99b68c950a
1 changed files with 17 additions and 0 deletions
|
@ -2345,6 +2345,22 @@ int ast_bridge_call(struct ast_channel *chan,struct ast_channel *peer,struct ast
|
|||
ast_cdr_specialized_reset(chan->cdr,0);
|
||||
}
|
||||
if (peer->cdr) {
|
||||
struct ast_cdr *cur;
|
||||
|
||||
ast_channel_lock(peer);
|
||||
for (cur = peer->cdr; cur; cur = cur->next) {
|
||||
if (cur == orig_peer_cdr) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (!cur) {
|
||||
/* orig_peer_cdr is gone, probably because of a masquerade
|
||||
* during the bridge. */
|
||||
ast_channel_unlock(peer);
|
||||
return res;
|
||||
}
|
||||
|
||||
/* before resetting the peer cdr, throw a copy of it to the
|
||||
backend, just in case the cdr.conf file is calling for
|
||||
unanswered CDR's. */
|
||||
|
@ -2361,6 +2377,7 @@ int ast_bridge_call(struct ast_channel *chan,struct ast_channel *peer,struct ast
|
|||
}
|
||||
}
|
||||
ast_cdr_specialized_reset(orig_peer_cdr,0);
|
||||
ast_channel_unlock(peer);
|
||||
}
|
||||
}
|
||||
return res;
|
||||
|
|
Reference in a new issue