Address unload order issues for res_stasis* modules

I've noticed when doing a graceful shutdown that the res_stasis_http.so
module gets unloaded before the modules that use it, which causes some
asserts during their unload.

While r386928 was a quick hack to get it to not assert and die, this
patch increases the use counts on res_stasis.so and res_stasis_http.so
properly. It's a bigger change than I expected, hence the review instead
of just committing it.

Review: https://reviewboard.asterisk.org/r/2489/


git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@388350 65c4cc65-6c06-0410-ace0-fbb531ad65f3
This commit is contained in:
David M. Lee
2013-05-10 17:12:57 +00:00
parent db925c3f06
commit 4666079b05
16 changed files with 92 additions and 19 deletions

View File

@@ -38,6 +38,7 @@
/*** MODULEINFO
<depend type="module">res_stasis_http</depend>
<depend type="module">res_stasis</depend>
<support_level>core</support_level>
***/
@@ -46,6 +47,7 @@
ASTERISK_FILE_VERSION(__FILE__, "$Revision$")
#include "asterisk/module.h"
#include "asterisk/stasis_app.h"
#include "stasis_http/resource_{{name}}.h"
{{#has_events}}
#include "asterisk/stasis_channels.h"
@@ -184,12 +186,14 @@ static void stasis_http_{{c_nickname}}_cb(
{{/has_events}}
static int load_module(void)
{
stasis_app_ref();
return stasis_http_add_handler(&{{root_full_name}});
}
static int unload_module(void)
{
stasis_http_remove_handler(&{{root_full_name}});
stasis_app_unref();
return 0;
}
@@ -197,6 +201,6 @@ AST_MODULE_INFO(ASTERISK_GPL_KEY, AST_MODFLAG_DEFAULT,
"RESTful API module - {{{description}}}",
.load = load_module,
.unload = unload_module,
.nonoptreq = "res_stasis_http",
.nonoptreq = "res_stasis_http,res_stasis",
);
{{/api_declaration}}