mirror of
				https://github.com/asterisk/asterisk.git
				synced 2025-10-31 10:47:18 +00:00 
			
		
		
		
	Merge "res_ari: Add "module loaded" check to ari stubs"
This commit is contained in:
		| @@ -268,4 +268,14 @@ void ast_ari_response_created(struct ast_ari_response *response, | |||||||
|  */ |  */ | ||||||
| void ast_ari_response_alloc_failed(struct ast_ari_response *response); | void ast_ari_response_alloc_failed(struct ast_ari_response *response); | ||||||
|  |  | ||||||
|  | /*! \brief Determines whether the res_ari module is loaded */ | ||||||
|  | #define CHECK_ARI_MODULE_LOADED()				\ | ||||||
|  | 	do {							\ | ||||||
|  | 		if (!ast_module_check("res_ari.so")		\ | ||||||
|  | 			|| !ast_ari_oom_json()) {	\ | ||||||
|  | 			return AST_MODULE_LOAD_DECLINE;		\ | ||||||
|  | 		}						\ | ||||||
|  | 	} while(0) | ||||||
|  |  | ||||||
|  |  | ||||||
| #endif /* _ASTERISK_ARI_H */ | #endif /* _ASTERISK_ARI_H */ | ||||||
|   | |||||||
| @@ -500,6 +500,10 @@ static int unload_module(void) | |||||||
| static int load_module(void) | static int load_module(void) | ||||||
| { | { | ||||||
| 	int res = 0; | 	int res = 0; | ||||||
|  |  | ||||||
|  | 	CHECK_ARI_MODULE_LOADED(); | ||||||
|  |  | ||||||
|  |  | ||||||
| 	stasis_app_ref(); | 	stasis_app_ref(); | ||||||
| 	res |= ast_ari_add_handler(&applications); | 	res |= ast_ari_add_handler(&applications); | ||||||
| 	if (res) { | 	if (res) { | ||||||
|   | |||||||
| @@ -1221,6 +1221,10 @@ static int unload_module(void) | |||||||
| static int load_module(void) | static int load_module(void) | ||||||
| { | { | ||||||
| 	int res = 0; | 	int res = 0; | ||||||
|  |  | ||||||
|  | 	CHECK_ARI_MODULE_LOADED(); | ||||||
|  |  | ||||||
|  |  | ||||||
| 	stasis_app_ref(); | 	stasis_app_ref(); | ||||||
| 	res |= ast_ari_add_handler(&asterisk); | 	res |= ast_ari_add_handler(&asterisk); | ||||||
| 	if (res) { | 	if (res) { | ||||||
|   | |||||||
| @@ -1547,6 +1547,10 @@ static int unload_module(void) | |||||||
| static int load_module(void) | static int load_module(void) | ||||||
| { | { | ||||||
| 	int res = 0; | 	int res = 0; | ||||||
|  |  | ||||||
|  | 	CHECK_ARI_MODULE_LOADED(); | ||||||
|  |  | ||||||
|  |  | ||||||
| 	stasis_app_ref(); | 	stasis_app_ref(); | ||||||
| 	res |= ast_ari_add_handler(&bridges); | 	res |= ast_ari_add_handler(&bridges); | ||||||
| 	if (res) { | 	if (res) { | ||||||
|   | |||||||
| @@ -2851,6 +2851,10 @@ static int unload_module(void) | |||||||
| static int load_module(void) | static int load_module(void) | ||||||
| { | { | ||||||
| 	int res = 0; | 	int res = 0; | ||||||
|  |  | ||||||
|  | 	CHECK_ARI_MODULE_LOADED(); | ||||||
|  |  | ||||||
|  |  | ||||||
| 	stasis_app_ref(); | 	stasis_app_ref(); | ||||||
| 	res |= ast_ari_add_handler(&channels); | 	res |= ast_ari_add_handler(&channels); | ||||||
| 	if (res) { | 	if (res) { | ||||||
|   | |||||||
| @@ -331,6 +331,10 @@ static int unload_module(void) | |||||||
| static int load_module(void) | static int load_module(void) | ||||||
| { | { | ||||||
| 	int res = 0; | 	int res = 0; | ||||||
|  |  | ||||||
|  | 	CHECK_ARI_MODULE_LOADED(); | ||||||
|  |  | ||||||
|  |  | ||||||
| 	stasis_app_ref(); | 	stasis_app_ref(); | ||||||
| 	res |= ast_ari_add_handler(&deviceStates); | 	res |= ast_ari_add_handler(&deviceStates); | ||||||
| 	if (res) { | 	if (res) { | ||||||
|   | |||||||
| @@ -455,6 +455,10 @@ static int unload_module(void) | |||||||
| static int load_module(void) | static int load_module(void) | ||||||
| { | { | ||||||
| 	int res = 0; | 	int res = 0; | ||||||
|  |  | ||||||
|  | 	CHECK_ARI_MODULE_LOADED(); | ||||||
|  |  | ||||||
|  |  | ||||||
| 	stasis_app_ref(); | 	stasis_app_ref(); | ||||||
| 	res |= ast_ari_add_handler(&endpoints); | 	res |= ast_ari_add_handler(&endpoints); | ||||||
| 	if (res) { | 	if (res) { | ||||||
|   | |||||||
| @@ -430,28 +430,35 @@ static int unload_module(void) | |||||||
| static int load_module(void) | static int load_module(void) | ||||||
| { | { | ||||||
| 	int res = 0; | 	int res = 0; | ||||||
| 	struct ast_websocket_protocol *protocol; |  | ||||||
|  |  | ||||||
| 	if (ast_ari_websocket_events_event_websocket_init() == -1) { | 	CHECK_ARI_MODULE_LOADED(); | ||||||
| 		return AST_MODULE_LOAD_DECLINE; |  | ||||||
|  | 	/* This is scoped to not conflict with CHECK_ARI_MODULE_LOADED */ | ||||||
|  | 	{ | ||||||
|  | 		struct ast_websocket_protocol *protocol; | ||||||
|  |  | ||||||
|  | 		if (ast_ari_websocket_events_event_websocket_init() == -1) { | ||||||
|  | 			return AST_MODULE_LOAD_DECLINE; | ||||||
|  | 		} | ||||||
|  |  | ||||||
|  | 		events.ws_server = ast_websocket_server_create(); | ||||||
|  | 		if (!events.ws_server) { | ||||||
|  | 			ast_ari_websocket_events_event_websocket_dtor(); | ||||||
|  | 			return AST_MODULE_LOAD_DECLINE; | ||||||
|  | 		} | ||||||
|  |  | ||||||
|  | 		protocol = ast_websocket_sub_protocol_alloc("ari"); | ||||||
|  | 		if (!protocol) { | ||||||
|  | 			ao2_ref(events.ws_server, -1); | ||||||
|  | 			events.ws_server = NULL; | ||||||
|  | 			ast_ari_websocket_events_event_websocket_dtor(); | ||||||
|  | 			return AST_MODULE_LOAD_DECLINE; | ||||||
|  | 		} | ||||||
|  | 		protocol->session_attempted = ast_ari_events_event_websocket_ws_attempted_cb; | ||||||
|  | 		protocol->session_established = ast_ari_events_event_websocket_ws_established_cb; | ||||||
|  | 		res |= ast_websocket_server_add_protocol2(events.ws_server, protocol); | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
| 	events.ws_server = ast_websocket_server_create(); |  | ||||||
| 	if (!events.ws_server) { |  | ||||||
| 		ast_ari_websocket_events_event_websocket_dtor(); |  | ||||||
| 		return AST_MODULE_LOAD_DECLINE; |  | ||||||
| 	} |  | ||||||
|  |  | ||||||
| 	protocol = ast_websocket_sub_protocol_alloc("ari"); |  | ||||||
| 	if (!protocol) { |  | ||||||
| 		ao2_ref(events.ws_server, -1); |  | ||||||
| 		events.ws_server = NULL; |  | ||||||
| 		ast_ari_websocket_events_event_websocket_dtor(); |  | ||||||
| 		return AST_MODULE_LOAD_DECLINE; |  | ||||||
| 	} |  | ||||||
| 	protocol->session_attempted = ast_ari_events_event_websocket_ws_attempted_cb; |  | ||||||
| 	protocol->session_established = ast_ari_events_event_websocket_ws_established_cb; |  | ||||||
| 	res |= ast_websocket_server_add_protocol2(events.ws_server, protocol); |  | ||||||
| 	stasis_app_ref(); | 	stasis_app_ref(); | ||||||
| 	res |= ast_ari_add_handler(&events); | 	res |= ast_ari_add_handler(&events); | ||||||
| 	if (res) { | 	if (res) { | ||||||
|   | |||||||
| @@ -337,6 +337,10 @@ static int unload_module(void) | |||||||
| static int load_module(void) | static int load_module(void) | ||||||
| { | { | ||||||
| 	int res = 0; | 	int res = 0; | ||||||
|  |  | ||||||
|  | 	CHECK_ARI_MODULE_LOADED(); | ||||||
|  |  | ||||||
|  |  | ||||||
| 	stasis_app_ref(); | 	stasis_app_ref(); | ||||||
| 	res |= ast_ari_add_handler(&mailboxes); | 	res |= ast_ari_add_handler(&mailboxes); | ||||||
| 	if (res) { | 	if (res) { | ||||||
|   | |||||||
| @@ -289,6 +289,10 @@ static int unload_module(void) | |||||||
| static int load_module(void) | static int load_module(void) | ||||||
| { | { | ||||||
| 	int res = 0; | 	int res = 0; | ||||||
|  |  | ||||||
|  | 	CHECK_ARI_MODULE_LOADED(); | ||||||
|  |  | ||||||
|  |  | ||||||
| 	stasis_app_ref(); | 	stasis_app_ref(); | ||||||
| 	res |= ast_ari_add_handler(&playbacks); | 	res |= ast_ari_add_handler(&playbacks); | ||||||
| 	if (res) { | 	if (res) { | ||||||
|   | |||||||
| @@ -873,6 +873,10 @@ static int unload_module(void) | |||||||
| static int load_module(void) | static int load_module(void) | ||||||
| { | { | ||||||
| 	int res = 0; | 	int res = 0; | ||||||
|  |  | ||||||
|  | 	CHECK_ARI_MODULE_LOADED(); | ||||||
|  |  | ||||||
|  |  | ||||||
| 	stasis_app_ref(); | 	stasis_app_ref(); | ||||||
| 	res |= ast_ari_add_handler(&recordings); | 	res |= ast_ari_add_handler(&recordings); | ||||||
| 	if (res) { | 	if (res) { | ||||||
|   | |||||||
| @@ -219,6 +219,10 @@ static int unload_module(void) | |||||||
| static int load_module(void) | static int load_module(void) | ||||||
| { | { | ||||||
| 	int res = 0; | 	int res = 0; | ||||||
|  |  | ||||||
|  | 	CHECK_ARI_MODULE_LOADED(); | ||||||
|  |  | ||||||
|  |  | ||||||
| 	stasis_app_ref(); | 	stasis_app_ref(); | ||||||
| 	res |= ast_ari_add_handler(&sounds); | 	res |= ast_ari_add_handler(&sounds); | ||||||
| 	if (res) { | 	if (res) { | ||||||
|   | |||||||
| @@ -273,36 +273,43 @@ static int unload_module(void) | |||||||
| static int load_module(void) | static int load_module(void) | ||||||
| { | { | ||||||
| 	int res = 0; | 	int res = 0; | ||||||
|  |  | ||||||
|  | 	CHECK_ARI_MODULE_LOADED(); | ||||||
|  |  | ||||||
| {{#apis}} | {{#apis}} | ||||||
| {{#operations}} | {{#operations}} | ||||||
| {{#has_websocket}} | {{#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) { | 		if (ast_ari_websocket_{{c_name}}_{{c_nickname}}_init() == -1) { | ||||||
| 		return AST_MODULE_LOAD_DECLINE; | 			return AST_MODULE_LOAD_DECLINE; | ||||||
| 	} | 		} | ||||||
|  |  | ||||||
| 	{{full_name}}.ws_server = ast_websocket_server_create(); | 		{{full_name}}.ws_server = ast_websocket_server_create(); | ||||||
| 	if (!{{full_name}}.ws_server) { | 		if (!{{full_name}}.ws_server) { | ||||||
| 		ast_ari_websocket_events_event_websocket_dtor(); | 			ast_ari_websocket_events_event_websocket_dtor(); | ||||||
| 		return AST_MODULE_LOAD_DECLINE; | 			return AST_MODULE_LOAD_DECLINE; | ||||||
| 	} | 		} | ||||||
|  |  | ||||||
| 	protocol = ast_websocket_sub_protocol_alloc("{{websocket_protocol}}"); | 		protocol = ast_websocket_sub_protocol_alloc("{{websocket_protocol}}"); | ||||||
| 	if (!protocol) { | 		if (!protocol) { | ||||||
| 		ao2_ref({{full_name}}.ws_server, -1); | 			ao2_ref({{full_name}}.ws_server, -1); | ||||||
| 		{{full_name}}.ws_server = NULL; | 			{{full_name}}.ws_server = NULL; | ||||||
| 		ast_ari_websocket_events_event_websocket_dtor(); | 			ast_ari_websocket_events_event_websocket_dtor(); | ||||||
| 		return AST_MODULE_LOAD_DECLINE; | 			return AST_MODULE_LOAD_DECLINE; | ||||||
| 	} | 		} | ||||||
| 	protocol->session_attempted = ast_ari_{{c_name}}_{{c_nickname}}_ws_attempted_cb; | 		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->session_established = ast_ari_{{c_name}}_{{c_nickname}}_ws_established_cb; | ||||||
| {{/has_websocket}} | {{/has_websocket}} | ||||||
| {{#is_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}} | {{/is_websocket}} | ||||||
| {{/operations}} | {{/operations}} | ||||||
| {{/apis}} | {{/apis}} | ||||||
|  |  | ||||||
| 	stasis_app_ref(); | 	stasis_app_ref(); | ||||||
| 	res |= ast_ari_add_handler(&{{root_full_name}}); | 	res |= ast_ari_add_handler(&{{root_full_name}}); | ||||||
| 	if (res) { | 	if (res) { | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user