threadpool: Make ast_threadpool_push() return -1 if shutting_down
authorRichard Mudgett <rmudgett@digium.com>
Thu, 28 Feb 2013 21:31:14 +0000 (21:31 +0000)
committerRichard Mudgett <rmudgett@digium.com>
Thu, 28 Feb 2013 21:31:14 +0000 (21:31 +0000)
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@382295 65c4cc65-6c06-0410-ace0-fbb531ad65f3

main/threadpool.c

index 68d84af..58647d5 100644 (file)
@@ -898,7 +898,7 @@ int ast_threadpool_push(struct ast_threadpool *pool, int (*task)(void *data), vo
        if (!pool->shutting_down) {
                return ast_taskprocessor_push(pool->tps, task, data);
        }
-       return 0;
+       return -1;
 }
 
 void ast_threadpool_shutdown(struct ast_threadpool *pool)
@@ -1143,7 +1143,9 @@ static void serializer_task_pushed(struct ast_taskprocessor_listener *listener,
                struct serializer *ser = ast_taskprocessor_listener_get_user_data(listener);
                struct ast_taskprocessor *tps = ast_taskprocessor_listener_get_tps(listener);
 
-               ast_threadpool_push(ser->pool, execute_tasks, tps);
+               if (ast_threadpool_push(ser->pool, execute_tasks, tps)) {
+                       ast_taskprocessor_unreference(tps);
+               }
        }
 }