diff options
author | kpfleming <kpfleming@f38db490-d61c-443f-a65b-d21fe96a405b> | 2006-02-15 01:38:20 +0000 |
---|---|---|
committer | kpfleming <kpfleming@f38db490-d61c-443f-a65b-d21fe96a405b> | 2006-02-15 01:38:20 +0000 |
commit | 039789031cfec395474770919f4ec367108abc1c (patch) | |
tree | 0d01baad6f41c3d967f30e9a4ed5dfcbe02b06e0 /autoservice.c | |
parent | 864476b6ea3e1ca07762d0e9306c6b84910f53c9 (diff) |
various cleanups (issue #6389)
git-svn-id: http://svn.digium.com/svn/asterisk/trunk@10140 f38db490-d61c-443f-a65b-d21fe96a405b
Diffstat (limited to 'autoservice.c')
-rw-r--r-- | autoservice.c | 23 |
1 files changed, 8 insertions, 15 deletions
diff --git a/autoservice.c b/autoservice.c index 18620e9af..08cbb4734 100644 --- a/autoservice.c +++ b/autoservice.c @@ -30,7 +30,6 @@ #include <signal.h> #include <errno.h> #include <unistd.h> -#include <math.h> /* For PI */ #include "asterisk.h" @@ -64,15 +63,13 @@ static pthread_t asthread = AST_PTHREADT_NULL; static void *autoservice_run(void *ign) { - struct ast_channel *mons[MAX_AUTOMONS]; - int x; - int ms; - struct ast_channel *chan; - struct asent *as; - struct ast_frame *f; for(;;) { - x = 0; + struct ast_channel *mons[MAX_AUTOMONS]; + struct ast_channel *chan; + struct asent *as; + int x = 0, ms = 500; + AST_LIST_LOCK(&aslist); AST_LIST_TRAVERSE(&aslist, as, list) { if (!as->chan->_softhangup) { @@ -84,11 +81,10 @@ static void *autoservice_run(void *ign) } AST_LIST_UNLOCK(&aslist); - ms = 500; chan = ast_waitfor_n(mons, x, &ms); if (chan) { /* Read and ignore anything that occurs */ - f = ast_read(chan); + struct ast_frame *f = ast_read(chan); if (f) ast_frfree(f); } @@ -101,17 +97,14 @@ int ast_autoservice_start(struct ast_channel *chan) { int res = -1; struct asent *as; - int needstart; AST_LIST_LOCK(&aslist); - /* Check if autoservice thread is executing */ - needstart = (asthread == AST_PTHREADT_NULL) ? 1 : 0 ; - /* Check if the channel already has autoservice */ AST_LIST_TRAVERSE(&aslist, as, list) { if (as->chan == chan) break; } + /* XXX if found, we return -1, why ??? */ /* If not, start autoservice on channel */ if (!as) { @@ -120,7 +113,7 @@ int ast_autoservice_start(struct ast_channel *chan) as->chan = chan; AST_LIST_INSERT_HEAD(&aslist, as, list); res = 0; - if (needstart) { + if (asthread == AST_PTHREADT_NULL) { /* need start the thread */ if (ast_pthread_create(&asthread, NULL, autoservice_run, NULL)) { ast_log(LOG_WARNING, "Unable to create autoservice thread :(\n"); /* There will only be a single member in the list at this point, |