summaryrefslogtreecommitdiff
path: root/channels/sip/include/sip.h
diff options
context:
space:
mode:
authorTerry Wilson <twilson@digium.com>2012-05-22 17:29:12 +0000
committerTerry Wilson <twilson@digium.com>2012-05-22 17:29:12 +0000
commitc7f2d02ef1d4e5c10987c807ecec377453bb425c (patch)
treeda503e5fa4934f3ac37b243571c4cc6ca2641e0c /channels/sip/include/sip.h
parent1ffb200c0e8642b7fb5c4f174e0064877f0c3d85 (diff)
Fix race condition for CEL LINKEDID_END event
This patch fixes to situations that could cause the CEL LINKEDID_END event to be missed. 1) During a core stop gracefully, modules are unloaded when ast_active_channels == 0. The LINKDEDID_END event fires during the channel destructor. This means that occasionally, the cel_* module will be unloaded before the channel is destroyed. It seemed generally useful to wait until the refcount of all channels == 0 before unloading, so I added a channel counter and used it in the shutdown code. 2) During a masquerade, ast_channel_change_linkedid is called. It calls ast_cel_check_retire_linkedid which unrefs the linkedid in the linkedids container in cel.c. It didn't ref the new linkedid. Now it does. Review: https://reviewboard.asterisk.org/r/1900/ ........ Merged revisions 367292 from http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged revisions 367299 from http://svn.asterisk.org/svn/asterisk/branches/10 git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@367309 65c4cc65-6c06-0410-ace0-fbb531ad65f3
Diffstat (limited to 'channels/sip/include/sip.h')
0 files changed, 0 insertions, 0 deletions