Handle the scenario where we are called to move audiohooks between channels
and the source channel does not actually have any on it.
(closes issue #14734)
Reported by: corruptor
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@185196
65c4cc65-6c06-0410-ace0-
fbb531ad65f3
void ast_audiohook_move_by_source (struct ast_channel *old_chan, struct ast_channel *new_chan, const char *source)
{
- struct ast_audiohook *audiohook = find_audiohook_by_source(old_chan->audiohooks, source);
+ struct ast_audiohook *audiohook;
- if (!audiohook) {
+ if (!old_chan->audiohooks || !(audiohook = find_audiohook_by_source(old_chan->audiohooks, source))) {
return;
}
-
+
/* By locking both channels and the audiohook, we can assure that
* another thread will not have a chance to read the audiohook's status
* as done, even though ast_audiohook_remove signals the trigger