Merged revisions 142064 via svnmerge from

https://origsvn.digium.com/svn/asterisk/trunk

................
r142064 | russell | 2008-09-09 10:44:10 -0500 (Tue, 09 Sep 2008) | 13 lines

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: https://origsvn.digium.com/svn/asterisk/branches/1.6.0@142065 65c4cc65-6c06-0410-ace0-fbb531ad65f3
1.6.0
Russell Bryant 17 years ago
parent 9e68d473d9
commit f573a4785e

@ -2159,6 +2159,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. */
@ -2175,6 +2191,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;

Loading…
Cancel
Save