summaryrefslogtreecommitdiff
path: root/funcs/func_periodic_hook.c
diff options
context:
space:
mode:
authorRussell Bryant <russell@russellbryant.com>2014-04-12 01:26:28 +0000
committerRussell Bryant <russell@russellbryant.com>2014-04-12 01:26:28 +0000
commit23329d07cf8107f3c2990b20f53e10f5487d60b0 (patch)
treec7a53b05dc5d0b97a0adcd1dd12d1080e8bd475d /funcs/func_periodic_hook.c
parent04429e5c399079cfc02aada5cae3fab3d37aba55 (diff)
func_periodic_hook: add module ref counting
This module lacked necessary module ref count incrementing and decrementing when used. This patch adds it. There's already a datastore used, so doing the ref counting along with the lifetime of the datastore provides a convenient place to do it. git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@412279 65c4cc65-6c06-0410-ace0-fbb531ad65f3
Diffstat (limited to 'funcs/func_periodic_hook.c')
-rw-r--r--funcs/func_periodic_hook.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/funcs/func_periodic_hook.c b/funcs/func_periodic_hook.c
index d40e420f7..1f6f3aea9 100644
--- a/funcs/func_periodic_hook.c
+++ b/funcs/func_periodic_hook.c
@@ -135,6 +135,8 @@ static void hook_datastore_destroy_callback(void *data)
ast_free(state->context);
ast_free(state->exten);
ast_free(state);
+
+ ast_module_unref(ast_module_info->self);
}
static const struct ast_datastore_info hook_datastore = {
@@ -298,10 +300,13 @@ static int init_hook(struct ast_channel *chan, const char *context, const char *
snprintf(uid, sizeof(uid), "%u", hook_id);
+ ast_module_ref(ast_module_info->self);
if (!(datastore = ast_datastore_alloc(&hook_datastore, uid))) {
+ ast_module_unref(ast_module_info->self);
return -1;
}
if (!(state = hook_state_alloc(context, exten, interval, hook_id))) {
+ ast_module_unref(ast_module_info->self);
ast_datastore_free(datastore);
return -1;
}