func_periodic_hook: move module ref

The previous code left one error path where the module would be unref'd twice
instead of once.  It was done once in the error handling block, and again inside
of datastore destruction.

Now the module ref is only released in the datastore destructor and only acquired
when the datastore has been successfully allocated.



git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@412280 65c4cc65-6c06-0410-ace0-fbb531ad65f3
This commit is contained in:
Russell Bryant 2014-04-12 01:35:34 +00:00
parent 23329d07cf
commit 39ba6a16f5
1 changed files with 1 additions and 3 deletions

View File

@ -300,13 +300,11 @@ 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;
}
ast_module_ref(ast_module_info->self);
if (!(state = hook_state_alloc(context, exten, interval, hook_id))) {
ast_module_unref(ast_module_info->self);
ast_datastore_free(datastore);
return -1;
}