aboutsummaryrefslogtreecommitdiffstats
path: root/channel.c
diff options
context:
space:
mode:
authorkpfleming <kpfleming@f38db490-d61c-443f-a65b-d21fe96a405b>2005-12-01 23:34:58 +0000
committerkpfleming <kpfleming@f38db490-d61c-443f-a65b-d21fe96a405b>2005-12-01 23:34:58 +0000
commitc837ef2f4eba3b890a0e7792dccb1e5ac327733a (patch)
tree15f61b2ae5faaeb838797d68f40ed118c963f4dc /channel.c
parenta5ba1bf3b85dea32beb23a0b562275ad3b49fada (diff)
ensure channel's scheduling context is freed (issue #5788)
git-svn-id: http://svn.digium.com/svn/asterisk/branches/1.2@7268 f38db490-d61c-443f-a65b-d21fe96a405b
Diffstat (limited to 'channel.c')
-rw-r--r--channel.c9
1 files changed, 7 insertions, 2 deletions
diff --git a/channel.c b/channel.c
index e86afb25e..85a2882ff 100644
--- a/channel.c
+++ b/channel.c
@@ -909,8 +909,11 @@ void ast_channel_free(struct ast_channel *chan)
free(chan->tech_pvt);
}
+ if (chan->sched)
+ sched_context_destroy(chan->sched);
+
ast_copy_string(name, chan->name, sizeof(name));
-
+
/* Stop monitoring */
if (chan->monitor) {
chan->monitor->stop( chan, 0 );
@@ -1294,8 +1297,10 @@ int ast_hangup(struct ast_channel *chan)
ast_closestream(chan->stream);
if (chan->vstream) /* Close video stream */
ast_closestream(chan->vstream);
- if (chan->sched)
+ if (chan->sched) {
sched_context_destroy(chan->sched);
+ chan->sched = NULL;
+ }
if (chan->generatordata) /* Clear any tone stuff remaining */
chan->generator->release(chan, chan->generatordata);