aboutsummaryrefslogtreecommitdiffstats
path: root/main
diff options
context:
space:
mode:
authorrussell <russell@f38db490-d61c-443f-a65b-d21fe96a405b>2008-03-10 16:58:57 +0000
committerrussell <russell@f38db490-d61c-443f-a65b-d21fe96a405b>2008-03-10 16:58:57 +0000
commitd16c8c0af763b9c5df4dc1b37589966f5b21f737 (patch)
tree71d1e23e7ace8da3ad7e178e846d82cc479ca22c /main
parent8a4ad70752e33426b94631733696a05786ce99f1 (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.c6
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;