X-Git-Url: http://git.madism.org/?a=blobdiff_plain;ds=sidebyside;f=postlicyd%2Ffilter.c;h=1ba19b50c94d0c8528c1cff484be173f92342bb1;hb=e327d3786ba0371eaaff8e6ba0fe3fc39f095ae2;hp=7861af4f05c5db6b42ec07657727c80424d67818;hpb=6deab7a7086ccb592daa0c41e12759ec0b9c7aa0;p=apps%2Fpfixtools.git diff --git a/postlicyd/filter.c b/postlicyd/filter.c index 7861af4..1ba19b5 100644 --- a/postlicyd/filter.c +++ b/postlicyd/filter.c @@ -63,6 +63,8 @@ static const filter_hook_t async_hook = { .filter_id = 0 }; +uint32_t filter_running = 0; + filter_type_t filter_register(const char *type, filter_constructor_t constructor, filter_destructor_t destructor, filter_runner_t runner, filter_context_constructor_t context_constructor, @@ -220,11 +222,13 @@ const filter_hook_t *filter_run(const filter_t *filter, const query_t *query, filter_context_t *context) { debug("running filter %s (%s)", filter->name, ftokens[filter->type]); + ++filter_running; filter_result_t res = runners[filter->type](filter, query, context); if (res == HTK_ASYNC) { context->current_filter = filter; } else { + --filter_running; context->current_filter = NULL; } @@ -319,6 +323,7 @@ void filter_post_async_result(filter_context_t *context, filter_result_t result) if (result == HTK_ASYNC) { return; } + --filter_running; hook = filter_hook_for_result(filter, result); async_handler(context, hook); }