summaryrefslogtreecommitdiff
path: root/rest-api-templates
diff options
context:
space:
mode:
Diffstat (limited to 'rest-api-templates')
-rw-r--r--rest-api-templates/res_ari_resource.c.mustache36
1 files changed, 20 insertions, 16 deletions
diff --git a/rest-api-templates/res_ari_resource.c.mustache b/rest-api-templates/res_ari_resource.c.mustache
index c28a62cd9..ca4e2f192 100644
--- a/rest-api-templates/res_ari_resource.c.mustache
+++ b/rest-api-templates/res_ari_resource.c.mustache
@@ -256,6 +256,19 @@ fin: __attribute__((unused))
{{> rest_handler}}
{{/root_path}}
+static int unload_module(void)
+{
+ ast_ari_remove_handler(&{{root_full_name}});
+{{#apis}}
+{{#has_websocket}}
+ ao2_cleanup({{full_name}}.ws_server);
+ {{full_name}}.ws_server = NULL;
+{{/has_websocket}}
+{{/apis}}
+ stasis_app_unref();
+ return 0;
+}
+
static int load_module(void)
{
int res = 0;
@@ -270,14 +283,14 @@ static int load_module(void)
{{full_name}}.ws_server = ast_websocket_server_create();
if (!{{full_name}}.ws_server) {
- return AST_MODULE_LOAD_FAILURE;
+ return AST_MODULE_LOAD_DECLINE;
}
protocol = ast_websocket_sub_protocol_alloc("{{websocket_protocol}}");
if (!protocol) {
ao2_ref({{full_name}}.ws_server, -1);
{{full_name}}.ws_server = NULL;
- return AST_MODULE_LOAD_FAILURE;
+ return AST_MODULE_LOAD_DECLINE;
}
protocol->session_attempted = ast_ari_{{c_name}}_{{c_nickname}}_ws_attempted_cb;
protocol->session_established = ast_ari_{{c_name}}_{{c_nickname}}_ws_established_cb;
@@ -289,21 +302,12 @@ static int load_module(void)
{{/apis}}
stasis_app_ref();
res |= ast_ari_add_handler(&{{root_full_name}});
- return res;
-}
+ if (res) {
+ unload_module();
+ return AST_MODULE_LOAD_DECLINE;
+ }
-static int unload_module(void)
-{
- ast_ari_remove_handler(&{{root_full_name}});
-{{#apis}}
-{{#has_websocket}}
- ao2_cleanup({{full_name}}.ws_server);
- {{full_name}}.ws_server = NULL;
- ast_ari_websocket_events_event_websocket_dtor();
-{{/has_websocket}}
-{{/apis}}
- stasis_app_unref();
- return 0;
+ return AST_MODULE_LOAD_SUCCESS;
}
AST_MODULE_INFO(ASTERISK_GPL_KEY, AST_MODFLAG_DEFAULT, "RESTful API module - {{{description}}}",