Fix multiple issues with musiconhold, which led to classes not getting destroyed...
authorTilghman Lesher <tilghman@meg.abyt.es>
Thu, 3 Dec 2009 00:08:55 +0000 (00:08 +0000)
committerTilghman Lesher <tilghman@meg.abyt.es>
Thu, 3 Dec 2009 00:08:55 +0000 (00:08 +0000)
commit7e0a2db236b424064efc14379b17d87f2def2483
tree841ecef346092fe3d2611419c1ade7c8bb03dd1e
parent2081809b077db32dec931b45e8e2fc9dacd4fb23
Fix multiple issues with musiconhold, which led to classes not getting destroyed properly.
 * Classes are now tracked past removal from the core container, and module
   removal is actively prevented until all references are freed.
 * A hanging reference stored in the channel has been removed.  This could have
   caused a mismatch and the music state not properly cleared, if two or more
   reloads occurred between MOH being stopped and MOH being restarted.
 * In certain circumstances, duplicate classes were possible.
 * A race existed at reload time between a process being killed and the thread
   responsible for reading from the related pipe respawning that process.
 * Several reference counts have also been corrected.  At least one could have
   caused deleted classes to stick around forever, consuming resources.  This
   originally manifested as MOH external processes that were not killed at
   reload time.
(closes issue #16279, closes issue #16207)
 Reported by: parisioa, dcabot
 Patches:
       20091202__issue16279__2.diff.txt uploaded by tilghman (license 14)
 Tested by: parisioa, tilghman

git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@232660 65c4cc65-6c06-0410-ace0-fbb531ad65f3
include/asterisk/astobj2.h
res/res_musiconhold.c