]> git.ipfire.org Git - thirdparty/asterisk.git/commit
moh: fix a refcount error with realtime MOH
authorRussell Bryant <russell@russellbryant.com>
Thu, 6 Mar 2014 23:40:42 +0000 (23:40 +0000)
committerRussell Bryant <russell@russellbryant.com>
Thu, 6 Mar 2014 23:40:42 +0000 (23:40 +0000)
commit5f22c3ae657fc5a56e555b54cc29c7ae3ad0ee68
tree2d473124d0ccf1132a681946992c49306df3b155
parentb4865a4b5329b3645cf0fb74f03313daf4bb61a4
moh: fix a refcount error with realtime MOH

I observed a crash in res_musiconhold on an Asterisk 11 system using realtime
MOH.  Investigation of the backtrace showed a corrupt mohclass, implying that
it got destroyed before the code expected it to.  I went looking for reference
counting errors that could have caused this crash and this patch this result.
It contains 2 changes.

1) Remove a usless block of code that was impossible to reach.  There was even
a comment indicating that it was impossible to reach.  The conditional includes
"!ast_test_flag(global_flags, MOH_CACHERTCLASSES)" and it's inside of an if
block with the opposite check "ast_test_flag(global_flags,
MOH_CACHERTCLASSES)".  There's no good reason to keep it around.

2) A similar block to #1 contained a reference counting error.  It stores
state->class in the local variable mohclass without increasing its reference
count.  The reference count on mohclass is decremented at the end of the
function.  This block of code probably very rarely runs, which would help
explain why this system was working fine for many months before experiencing a
crash.

Review: https://reviewboard.asterisk.org/r/3282/
........

Merged revisions 410043 from http://svn.asterisk.org/svn/asterisk/branches/1.8
........

Merged revisions 410044 from http://svn.asterisk.org/svn/asterisk/branches/11

git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/12@410090 65c4cc65-6c06-0410-ace0-fbb531ad65f3
res/res_musiconhold.c