mirror of
				https://github.com/asterisk/asterisk.git
				synced 2025-10-31 18:55:19 +00:00 
			
		
		
		
	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
This commit is contained in:
		| @@ -273,36 +273,43 @@ 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; | ||||
|  | ||||
| 	if (ast_ari_websocket_{{c_name}}_{{c_nickname}}_init() == -1) { | ||||
| 		return AST_MODULE_LOAD_DECLINE; | ||||
| 	} | ||||
| 		if (ast_ari_websocket_{{c_name}}_{{c_nickname}}_init() == -1) { | ||||
| 			return AST_MODULE_LOAD_DECLINE; | ||||
| 		} | ||||
|  | ||||
| 	{{full_name}}.ws_server = ast_websocket_server_create(); | ||||
| 	if (!{{full_name}}.ws_server) { | ||||
| 		ast_ari_websocket_events_event_websocket_dtor(); | ||||
| 		return AST_MODULE_LOAD_DECLINE; | ||||
| 	} | ||||
| 		{{full_name}}.ws_server = ast_websocket_server_create(); | ||||
| 		if (!{{full_name}}.ws_server) { | ||||
| 			ast_ari_websocket_events_event_websocket_dtor(); | ||||
| 			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; | ||||
| 		ast_ari_websocket_events_event_websocket_dtor(); | ||||
| 		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; | ||||
| 			ast_ari_websocket_events_event_websocket_dtor(); | ||||
| 			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) { | ||||
|   | ||||
		Reference in New Issue
	
	Block a user