summaryrefslogtreecommitdiff
path: root/rest-api-templates
diff options
context:
space:
mode:
authorGeorge Joseph <gjoseph@digium.com>2017-06-13 10:33:34 -0600
committerGeorge Joseph <gjoseph@digium.com>2017-06-15 18:31:53 -0600
commit7901b9853e8f60e1d2dce44ce81dec6f7f866ccc (patch)
treec24a7afd0e45a19cb11a6ab2556ef7ae7eeee3f6 /rest-api-templates
parentbc51d4324a69a0b8ee4a3be208b91bb2081124ff (diff)
res_ari: Add "module loaded" check to ari stubs
The recent change to make the use of LOAD_DECLINE more consistent caused res_ari to unload itself before declining if the ari.conf file wasn't found. The ari stubs though still tried to use the configuration resulting in segfaults. This patch creates a new CHECK_ARI_MODULE_LOADED macro which tests to see if res_ari is actually loaded and causes the stubs to also decline if it isn't. The macro was then added to the mustache template's "load_module" function. ASTERISK-27026 #close Reported-by: Ronald Raikes Change-Id: I263d56efa628ee3c411bdcd16d49af6260c6c91d
Diffstat (limited to 'rest-api-templates')
-rw-r--r--rest-api-templates/res_ari_resource.c.mustache35
1 files changed, 21 insertions, 14 deletions
diff --git a/rest-api-templates/res_ari_resource.c.mustache b/rest-api-templates/res_ari_resource.c.mustache
index 921b007be..b4d80101e 100644
--- a/rest-api-templates/res_ari_resource.c.mustache
+++ b/rest-api-templates/res_ari_resource.c.mustache
@@ -262,30 +262,37 @@ static int unload_module(void)
static int load_module(void)
{
int res = 0;
+
+ CHECK_ARI_MODULE_LOADED();
+
{{#apis}}
{{#operations}}
{{#has_websocket}}
- struct ast_websocket_protocol *protocol;
+ /* This is scoped to not conflict with CHECK_ARI_MODULE_LOADED */
+ {
+ struct ast_websocket_protocol *protocol;
- {{full_name}}.ws_server = ast_websocket_server_create();
- if (!{{full_name}}.ws_server) {
- return AST_MODULE_LOAD_DECLINE;
- }
+ {{full_name}}.ws_server = ast_websocket_server_create();
+ if (!{{full_name}}.ws_server) {
+ 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_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;
+ 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_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;
{{/has_websocket}}
{{#is_websocket}}
- res |= ast_websocket_server_add_protocol2({{full_name}}.ws_server, protocol);
+ res |= ast_websocket_server_add_protocol2({{full_name}}.ws_server, protocol);
+ }
{{/is_websocket}}
{{/operations}}
{{/apis}}
+
stasis_app_ref();
res |= ast_ari_add_handler(&{{root_full_name}});
if (res) {