diff options
author | russell <russell@f38db490-d61c-443f-a65b-d21fe96a405b> | 2008-03-10 16:58:57 +0000 |
---|---|---|
committer | russell <russell@f38db490-d61c-443f-a65b-d21fe96a405b> | 2008-03-10 16:58:57 +0000 |
commit | d16c8c0af763b9c5df4dc1b37589966f5b21f737 (patch) | |
tree | 71d1e23e7ace8da3ad7e178e846d82cc479ca22c /main | |
parent | 8a4ad70752e33426b94631733696a05786ce99f1 (diff) |
Fix a race condition where the generator can go away
(closes issue #12175, reported by edantie, patched by me)
git-svn-id: http://svn.digium.com/svn/asterisk/branches/1.4@107099 f38db490-d61c-443f-a65b-d21fe96a405b
Diffstat (limited to 'main')
-rw-r--r-- | main/channel.c | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/main/channel.c b/main/channel.c index 2cb3b7be3..d148cd97d 100644 --- a/main/channel.c +++ b/main/channel.c @@ -1560,9 +1560,13 @@ static int generator_force(const void *data) ast_channel_lock(chan); tmp = chan->generatordata; chan->generatordata = NULL; - generate = chan->generator->generate; + if (chan->generator) + generate = chan->generator->generate; ast_channel_unlock(chan); + if (!tmp || !generate) + return 0; + res = generate(chan, tmp, 0, 160); chan->generatordata = tmp; |