diff options
author | Mark Michelson <mmichelson@digium.com> | 2012-12-07 19:05:30 +0000 |
---|---|---|
committer | Mark Michelson <mmichelson@digium.com> | 2012-12-07 19:05:30 +0000 |
commit | 3a25935f7d0109aa63da14589790bd695fd1164c (patch) | |
tree | 536b4c0d0f728944fcf37d9ec48ec2f420c6ecb6 /main | |
parent | ec29862a92eec18050ade673e924ecb72f04985f (diff) |
Fix infinite looping and crash problem.
MALLOC_DEBUG is complaining about corrupted memory on taskprocessor
listeners, but I'm not seeing it, nor is valgrind. Not sure what's up
there.
git-svn-id: https://origsvn.digium.com/svn/asterisk/team/mmichelson/threadpool@377377 65c4cc65-6c06-0410-ace0-fbb531ad65f3
Diffstat (limited to 'main')
-rw-r--r-- | main/taskprocessor.c | 7 | ||||
-rw-r--r-- | main/threadpool.c | 2 |
2 files changed, 2 insertions, 7 deletions
diff --git a/main/taskprocessor.c b/main/taskprocessor.c index 80875ec4a..1a768de2f 100644 --- a/main/taskprocessor.c +++ b/main/taskprocessor.c @@ -581,8 +581,6 @@ struct ast_taskprocessor *ast_taskprocessor_create_with_listener(const char *nam /* decrement the taskprocessor reference count and unlink from the container if necessary */ void *ast_taskprocessor_unreference(struct ast_taskprocessor *tps) { - struct ast_taskprocessor_listener *listener; - if (!tps) { return NULL; } @@ -596,10 +594,7 @@ void *ast_taskprocessor_unreference(struct ast_taskprocessor *tps) * 3. The listener */ ao2_unlink(tps_singletons, tps); - listener = tps->listener; - tps->listener = NULL; - listener_shutdown(listener); - ao2_ref(listener, -1); + listener_shutdown(tps->listener); return NULL; } diff --git a/main/threadpool.c b/main/threadpool.c index 1b0477926..5ed9a42d1 100644 --- a/main/threadpool.c +++ b/main/threadpool.c @@ -784,7 +784,7 @@ static void worker_active(struct worker_thread *worker) { int alive = 1; while (alive) { - if (threadpool_execute(worker->pool)) { + if (threadpool_execute(worker->pool) == 0) { alive = worker_idle(worker); } } |