diff --git a/apps/app_mixmonitor.c b/apps/app_mixmonitor.c index bb47cfc340efdf411f2da6726a67144f5ff62939..af2949209056d91034ca12b886501bc5029a3def 100644 --- a/apps/app_mixmonitor.c +++ b/apps/app_mixmonitor.c @@ -1556,4 +1556,9 @@ static int load_module(void) return res; } -AST_MODULE_INFO_STANDARD(ASTERISK_GPL_KEY, "Mixed Audio Monitoring Application"); +AST_MODULE_INFO(ASTERISK_GPL_KEY, AST_MODFLAG_DEFAULT, "Mixed Audio Monitoring Application", + .support_level = AST_MODULE_SUPPORT_CORE, + .load = load_module, + .unload = unload_module, + .optional_modules = "func_periodic_hook", +); diff --git a/apps/app_statsd.c b/apps/app_statsd.c index 54f9511a8b4de7d78dec65165f6c70eeeafd166d..a4ca233ea255fb184469c31ac593dae5c23229d7 100644 --- a/apps/app_statsd.c +++ b/apps/app_statsd.c @@ -420,4 +420,9 @@ static int load_module(void) return ast_register_application_xml(app, statsd_exec); } -AST_MODULE_INFO_STANDARD_EXTENDED(ASTERISK_GPL_KEY, "StatsD Dialplan Application"); +AST_MODULE_INFO(ASTERISK_GPL_KEY, AST_MODFLAG_DEFAULT, "StatsD Dialplan Application", + .support_level = AST_MODULE_SUPPORT_EXTENDED, + .load = load_module, + .unload = unload_module, + .requires = "res_statsd", +); diff --git a/bridges/bridge_builtin_features.c b/bridges/bridge_builtin_features.c index e6cacbf7eaed42759b70c7435c707295ba32016b..e9efb916cc176dfae711583da8b163884cc23dde 100644 --- a/bridges/bridge_builtin_features.c +++ b/bridges/bridge_builtin_features.c @@ -519,4 +519,9 @@ static int load_module(void) return AST_MODULE_LOAD_SUCCESS; } -AST_MODULE_INFO_STANDARD(ASTERISK_GPL_KEY, "Built in bridging features"); +AST_MODULE_INFO(ASTERISK_GPL_KEY, AST_MODFLAG_DEFAULT, "Built in bridging features", + .support_level = AST_MODULE_SUPPORT_CORE, + .load = load_module, + .unload = unload_module, + .optional_modules = "res_monitor", +); diff --git a/res/ari/resource_bridges.c b/res/ari/resource_bridges.c index a320c29872985b26ce890400bb608522707773f9..9808288e9c1b682998d88f033b8eef30f436c644 100644 --- a/res/ari/resource_bridges.c +++ b/res/ari/resource_bridges.c @@ -24,8 +24,6 @@ */ /*** MODULEINFO - <depend type="module">res_stasis_recording</depend> - <depend type="module">res_stasis_playback</depend> <support_level>core</support_level> ***/ diff --git a/res/ari/resource_channels.c b/res/ari/resource_channels.c index 6b4f26c25a86bb86e69f6aae7d689339ff5eb07d..cdf0f88207f5b93866da62427e71cff446ba36f0 100644 --- a/res/ari/resource_channels.c +++ b/res/ari/resource_channels.c @@ -24,10 +24,6 @@ */ /*** MODULEINFO - <depend type="module">res_stasis_answer</depend> - <depend type="module">res_stasis_playback</depend> - <depend type="module">res_stasis_recording</depend> - <depend type="module">res_stasis_snoop</depend> <support_level>core</support_level> ***/ diff --git a/res/ari/resource_device_states.c b/res/ari/resource_device_states.c index 020d9301f2792279f591f9bd30cf12c98c5bb4dd..c442fa51b355415157f28f7c92ba3bb23bca4011 100644 --- a/res/ari/resource_device_states.c +++ b/res/ari/resource_device_states.c @@ -24,7 +24,6 @@ */ /*** MODULEINFO - <depend type="module">res_stasis_device_state</depend> <support_level>core</support_level> ***/ diff --git a/res/ari/resource_events.c b/res/ari/resource_events.c index d81067f151e764e4a821607b5072bce8d2d4e60c..5a8e8985858cd5c69fa4bf0ed6a74ad5845199b0 100644 --- a/res/ari/resource_events.c +++ b/res/ari/resource_events.c @@ -24,7 +24,6 @@ */ /*** MODULEINFO - <depend type="module">res_http_websocket</depend> <support_level>core</support_level> ***/ diff --git a/res/ari/resource_mailboxes.c b/res/ari/resource_mailboxes.c index 3577e6515332653bf52abd718f8d1a4e5f3d51c3..ae0f249784bd28980b6d65220b62b2159d27f172 100644 --- a/res/ari/resource_mailboxes.c +++ b/res/ari/resource_mailboxes.c @@ -24,7 +24,6 @@ */ /*** MODULEINFO - <depend type="module">res_stasis_mailbox</depend> <support_level>core</support_level> ***/ diff --git a/res/ari/resource_playbacks.c b/res/ari/resource_playbacks.c index 57f424c016f4b7cbf7244ef60bff6ff22b86f3e4..fc05a8d03a0543db78f6f2579498dac3059df846 100644 --- a/res/ari/resource_playbacks.c +++ b/res/ari/resource_playbacks.c @@ -24,7 +24,6 @@ */ /*** MODULEINFO - <depend type="module">res_stasis_playback</depend> <support_level>core</support_level> ***/ diff --git a/res/ari/resource_recordings.c b/res/ari/resource_recordings.c index 39ef65ce34fb6ba959447903fa824406b94ec0e0..090f26370089e1d1868ded1c61ff81016f9722f8 100644 --- a/res/ari/resource_recordings.c +++ b/res/ari/resource_recordings.c @@ -24,7 +24,6 @@ */ /*** MODULEINFO - <depend type="module">res_stasis_recording</depend> <support_level>core</support_level> ***/ diff --git a/res/res_ari_bridges.c b/res/res_ari_bridges.c index 34b9d898cc49314fa26e8d4d02abad5e4bf79578..93cf7c49bf4aa5bc605f1340f0b68d4b13e53b6f 100644 --- a/res/res_ari_bridges.c +++ b/res/res_ari_bridges.c @@ -35,6 +35,8 @@ <depend type="module">res_ari</depend> <depend type="module">res_ari_model</depend> <depend type="module">res_stasis</depend> + <depend type="module">res_stasis_recording</depend> + <depend type="module">res_stasis_playback</depend> <support_level>core</support_level> ***/ @@ -1579,5 +1581,5 @@ AST_MODULE_INFO(ASTERISK_GPL_KEY, AST_MODFLAG_DEFAULT, "RESTful API module - Bri .support_level = AST_MODULE_SUPPORT_CORE, .load = load_module, .unload = unload_module, - .requires = "res_ari,res_ari_model,res_stasis", + .requires = "res_ari,res_ari_model,res_stasis,res_stasis_recording,res_stasis_playback", ); diff --git a/res/res_ari_channels.c b/res/res_ari_channels.c index 7862c10069b7aae58d4b65f38c1526ea7d3b02e3..7ca7e2e4d356fd7f4efbc908652f239ac80433dd 100644 --- a/res/res_ari_channels.c +++ b/res/res_ari_channels.c @@ -35,6 +35,10 @@ <depend type="module">res_ari</depend> <depend type="module">res_ari_model</depend> <depend type="module">res_stasis</depend> + <depend type="module">res_stasis_answer</depend> + <depend type="module">res_stasis_playback</depend> + <depend type="module">res_stasis_recording</depend> + <depend type="module">res_stasis_snoop</depend> <support_level>core</support_level> ***/ @@ -2869,5 +2873,5 @@ AST_MODULE_INFO(ASTERISK_GPL_KEY, AST_MODFLAG_DEFAULT, "RESTful API module - Cha .support_level = AST_MODULE_SUPPORT_CORE, .load = load_module, .unload = unload_module, - .requires = "res_ari,res_ari_model,res_stasis", + .requires = "res_ari,res_ari_model,res_stasis,res_stasis_answer,res_stasis_playback,res_stasis_recording,res_stasis_snoop", ); diff --git a/res/res_ari_device_states.c b/res/res_ari_device_states.c index ec8890b1e9cf3ddf06f01a35ae3cda8d0a01f1aa..04479e6ace14f2ade82dfc1338bda830cf8d7141 100644 --- a/res/res_ari_device_states.c +++ b/res/res_ari_device_states.c @@ -35,6 +35,7 @@ <depend type="module">res_ari</depend> <depend type="module">res_ari_model</depend> <depend type="module">res_stasis</depend> + <depend type="module">res_stasis_device_state</depend> <support_level>core</support_level> ***/ @@ -349,5 +350,5 @@ AST_MODULE_INFO(ASTERISK_GPL_KEY, AST_MODFLAG_DEFAULT, "RESTful API module - Dev .support_level = AST_MODULE_SUPPORT_CORE, .load = load_module, .unload = unload_module, - .requires = "res_ari,res_ari_model,res_stasis", + .requires = "res_ari,res_ari_model,res_stasis,res_stasis_device_state", ); diff --git a/res/res_ari_events.c b/res/res_ari_events.c index f750a5454dc64339d7a9880c7f93322f01d46246..06eb77a3806f9d75bbfea1a3ebc016313bba9cf8 100644 --- a/res/res_ari_events.c +++ b/res/res_ari_events.c @@ -35,6 +35,7 @@ <depend type="module">res_ari</depend> <depend type="module">res_ari_model</depend> <depend type="module">res_stasis</depend> + <depend type="module">res_http_websocket</depend> <support_level>core</support_level> ***/ @@ -473,5 +474,5 @@ AST_MODULE_INFO(ASTERISK_GPL_KEY, AST_MODFLAG_DEFAULT, "RESTful API module - Web .support_level = AST_MODULE_SUPPORT_CORE, .load = load_module, .unload = unload_module, - .requires = "res_ari,res_ari_model,res_stasis", + .requires = "res_ari,res_ari_model,res_stasis,res_http_websocket", ); diff --git a/res/res_ari_mailboxes.c b/res/res_ari_mailboxes.c index 6469f936ee23274c54f6225f19a359d900cc30e6..123664e46e73aedc82e7577ee79a3b95a57cfda3 100644 --- a/res/res_ari_mailboxes.c +++ b/res/res_ari_mailboxes.c @@ -35,6 +35,7 @@ <depend type="module">res_ari</depend> <depend type="module">res_ari_model</depend> <depend type="module">res_stasis</depend> + <depend type="module">res_stasis_mailbox</depend> <support_level>core</support_level> ***/ @@ -355,5 +356,5 @@ AST_MODULE_INFO(ASTERISK_GPL_KEY, AST_MODFLAG_DEFAULT, "RESTful API module - Mai .support_level = AST_MODULE_SUPPORT_CORE, .load = load_module, .unload = unload_module, - .requires = "res_ari,res_ari_model,res_stasis", + .requires = "res_ari,res_ari_model,res_stasis,res_stasis_mailbox", ); diff --git a/res/res_ari_playbacks.c b/res/res_ari_playbacks.c index 0148a740096175e7515af98365c008bde3d9893d..547b39e391b48196fa8acf0a437455ee23e557af 100644 --- a/res/res_ari_playbacks.c +++ b/res/res_ari_playbacks.c @@ -35,6 +35,7 @@ <depend type="module">res_ari</depend> <depend type="module">res_ari_model</depend> <depend type="module">res_stasis</depend> + <depend type="module">res_stasis_playback</depend> <support_level>core</support_level> ***/ @@ -307,5 +308,5 @@ AST_MODULE_INFO(ASTERISK_GPL_KEY, AST_MODFLAG_DEFAULT, "RESTful API module - Pla .support_level = AST_MODULE_SUPPORT_CORE, .load = load_module, .unload = unload_module, - .requires = "res_ari,res_ari_model,res_stasis", + .requires = "res_ari,res_ari_model,res_stasis,res_stasis_playback", ); diff --git a/res/res_ari_recordings.c b/res/res_ari_recordings.c index 531ff6574dfdb314ab97c995686f0a69775c957a..45c789c2d496c2c7caf53e6c1ba347d31eeef0fd 100644 --- a/res/res_ari_recordings.c +++ b/res/res_ari_recordings.c @@ -35,6 +35,7 @@ <depend type="module">res_ari</depend> <depend type="module">res_ari_model</depend> <depend type="module">res_stasis</depend> + <depend type="module">res_stasis_recording</depend> <support_level>core</support_level> ***/ @@ -891,5 +892,5 @@ AST_MODULE_INFO(ASTERISK_GPL_KEY, AST_MODFLAG_DEFAULT, "RESTful API module - Rec .support_level = AST_MODULE_SUPPORT_CORE, .load = load_module, .unload = unload_module, - .requires = "res_ari,res_ari_model,res_stasis", + .requires = "res_ari,res_ari_model,res_stasis,res_stasis_recording", ); diff --git a/res/res_monitor.c b/res/res_monitor.c index 9dcbdbe62fe54255a8d9c70f798258cd37ad74c4..e2b5fb2521da97425e8c5eeb25a3731ee819f92e 100644 --- a/res/res_monitor.c +++ b/res/res_monitor.c @@ -1013,4 +1013,5 @@ AST_MODULE_INFO(ASTERISK_GPL_KEY, AST_MODFLAG_GLOBAL_SYMBOLS | AST_MODFLAG_LOAD_ .load = load_module, .unload = unload_module, .load_pri = AST_MODPRI_CHANNEL_DEPEND, + .optional_modules = "func_periodic_hook", ); diff --git a/res/res_pjsip.c b/res/res_pjsip.c index ff262c9dc5024b3e82ecd1bbb8ff6aa87b8dd413..6a6ba0f75faf92757cbbe3a1c0d317f5bb92127b 100644 --- a/res/res_pjsip.c +++ b/res/res_pjsip.c @@ -5139,4 +5139,5 @@ AST_MODULE_INFO(ASTERISK_GPL_KEY, AST_MODFLAG_GLOBAL_SYMBOLS | AST_MODFLAG_LOAD_ .reload = reload_module, .load_pri = AST_MODPRI_CHANNEL_DEPEND - 5, .requires = "res_pjproject", + .optional_modules = "res_statsd", ); diff --git a/res/res_pjsip/config_transport.c b/res/res_pjsip/config_transport.c index 63bf11812f7385c97f1250e65923eb1875826e15..713ab024beb01e056f6a193e63805494caf8758f 100644 --- a/res/res_pjsip/config_transport.c +++ b/res/res_pjsip/config_transport.c @@ -30,6 +30,7 @@ #include "asterisk/acl.h" #include "asterisk/utils.h" #include "include/res_pjsip_private.h" +/* We're only using a #define from http_websocket.h, no OPTIONAL_API symbols are used. */ #include "asterisk/http_websocket.h" #define MAX_POINTER_STRING 33 diff --git a/res/res_pjsip_outbound_registration.c b/res/res_pjsip_outbound_registration.c index 79bea482bdca2b8a4836d36d708fde2d88b8d461..80b885fb43363c187c8ab1dc4328d93e50d2e85b 100644 --- a/res/res_pjsip_outbound_registration.c +++ b/res/res_pjsip_outbound_registration.c @@ -2290,4 +2290,5 @@ AST_MODULE_INFO(ASTERISK_GPL_KEY, AST_MODFLAG_LOAD_ORDER, "PJSIP Outbound Regist .unload = unload_module, .load_pri = AST_MODPRI_APP_DEPEND, .requires = "res_pjsip", + .optional_modules = "res_statsd", ); diff --git a/res/res_statsd.c b/res/res_statsd.c index 221b359c9e878fce45ea2d3749f3eb6e65d8e19b..8565e41cb491701b1c16261b9fc9177b0e5b0ef1 100644 --- a/res/res_statsd.c +++ b/res/res_statsd.c @@ -381,13 +381,13 @@ static int reload_module(void) } } -/* The priority of this module is set to be as low as possible, since it could - * be used by any other sort of module. +/* The priority of this module is set just after realtime, since it loads + * configuration and could be used by any other sort of module. */ AST_MODULE_INFO(ASTERISK_GPL_KEY, AST_MODFLAG_GLOBAL_SYMBOLS | AST_MODFLAG_LOAD_ORDER, "Statsd client support", .support_level = AST_MODULE_SUPPORT_EXTENDED, .load = load_module, .unload = unload_module, .reload = reload_module, - .load_pri = 0, + .load_pri = AST_MODPRI_REALTIME_DRIVER + 5, ); diff --git a/rest-api-templates/res_ari_resource.c.mustache b/rest-api-templates/res_ari_resource.c.mustache index c1f680f21d16ef9bdd3a2d19c622451db6b5dca7..c69734539075de41b4c82db685fbd14e972b31d2 100644 --- a/rest-api-templates/res_ari_resource.c.mustache +++ b/rest-api-templates/res_ari_resource.c.mustache @@ -40,6 +40,9 @@ <depend type="module">res_ari</depend> <depend type="module">res_ari_model</depend> <depend type="module">res_stasis</depend> +{{#requires_modules}} + <depend type="module">{{.}}</depend> +{{/requires_modules}} <support_level>core</support_level> ***/ @@ -324,6 +327,6 @@ AST_MODULE_INFO(ASTERISK_GPL_KEY, AST_MODFLAG_DEFAULT, "RESTful API module - {{{ .support_level = AST_MODULE_SUPPORT_CORE, .load = load_module, .unload = unload_module, - .requires = "res_ari,res_ari_model,res_stasis", + .requires = "res_ari,res_ari_model,res_stasis{{#requires_modules}},{{.}}{{/requires_modules}}", ); {{/api_declaration}} diff --git a/rest-api-templates/swagger_model.py b/rest-api-templates/swagger_model.py index 08852415c00eb658e7114ce2852db17775cca7f8..3f729d8b52dc46f2386ddd8b2a262a62724d4e0a 100644 --- a/rest-api-templates/swagger_model.py +++ b/rest-api-templates/swagger_model.py @@ -647,6 +647,7 @@ class ApiDeclaration(Stringify): self.api_version = api_decl_json.get('apiVersion') self.base_path = api_decl_json.get('basePath') self.resource_path = api_decl_json.get('resourcePath') + self.requires_modules = api_decl_json.get('requiresModules') or [] api_json = api_decl_json.get('apis') or [] self.apis = [ Api().load(j, processor, context) for j in api_json] diff --git a/rest-api/api-docs/bridges.json b/rest-api/api-docs/bridges.json index cf8ee3156b3770615064f00ace0fcb83eb956257..04416c1236130458db1e04b2b37ea337dd0f2d5b 100644 --- a/rest-api/api-docs/bridges.json +++ b/rest-api/api-docs/bridges.json @@ -6,6 +6,10 @@ "swaggerVersion": "1.1", "basePath": "http://localhost:8088/ari", "resourcePath": "/api-docs/bridges.{format}", + "requiresModules": [ + "res_stasis_recording", + "res_stasis_playback" + ], "apis": [ { "path": "/bridges", diff --git a/rest-api/api-docs/channels.json b/rest-api/api-docs/channels.json index 602606cfe7cbbec90c4aa9efd23e9c2bf32d0614..ec8bae235d32a2909dd6329d9b91965f944e3fe0 100644 --- a/rest-api/api-docs/channels.json +++ b/rest-api/api-docs/channels.json @@ -6,6 +6,12 @@ "swaggerVersion": "1.1", "basePath": "http://localhost:8088/ari", "resourcePath": "/api-docs/channels.{format}", + "requiresModules": [ + "res_stasis_answer", + "res_stasis_playback", + "res_stasis_recording", + "res_stasis_snoop" + ], "apis": [ { "path": "/channels", diff --git a/rest-api/api-docs/deviceStates.json b/rest-api/api-docs/deviceStates.json index 94d5b93ce08384db4e72456f56206749c5486c4a..bd389355c4cd407d6cd803b027426baca131b1b6 100644 --- a/rest-api/api-docs/deviceStates.json +++ b/rest-api/api-docs/deviceStates.json @@ -6,6 +6,9 @@ "swaggerVersion": "1.1", "basePath": "http://localhost:8088/ari", "resourcePath": "/api-docs/deviceStates.{format}", + "requiresModules": [ + "res_stasis_device_state" + ], "apis": [ { "path": "/deviceStates", diff --git a/rest-api/api-docs/events.json b/rest-api/api-docs/events.json index e1b31bb9764647992ace61d8c8f380785625db94..d85d8d9fe4fabde2b3bcd6cbc36655cb0b2316eb 100644 --- a/rest-api/api-docs/events.json +++ b/rest-api/api-docs/events.json @@ -6,6 +6,9 @@ "swaggerVersion": "1.2", "basePath": "http://localhost:8088/ari", "resourcePath": "/api-docs/events.{format}", + "requiresModules": [ + "res_http_websocket" + ], "apis": [ { "path": "/events", diff --git a/rest-api/api-docs/mailboxes.json b/rest-api/api-docs/mailboxes.json index ed50019f5001c2162c4dd911cadb3cb6e8d3e7f3..8f5941b8179c57b3a513a982343a56677bfd4d95 100644 --- a/rest-api/api-docs/mailboxes.json +++ b/rest-api/api-docs/mailboxes.json @@ -6,6 +6,9 @@ "swaggerVersion": "1.1", "basePath": "http://localhost:8088/ari", "resourcePath": "/api-docs/mailboxes.{format}", + "requiresModules": [ + "res_stasis_mailbox" + ], "apis": [ { "path": "/mailboxes", diff --git a/rest-api/api-docs/playbacks.json b/rest-api/api-docs/playbacks.json index 3dc4e1da5a9e2c61b5bcec729f470bbd2e50fa3c..a78dcae7103ae90f958a2fa0d7e91796f300a901 100644 --- a/rest-api/api-docs/playbacks.json +++ b/rest-api/api-docs/playbacks.json @@ -6,6 +6,9 @@ "swaggerVersion": "1.1", "basePath": "http://localhost:8088/ari", "resourcePath": "/api-docs/playbacks.{format}", + "requiresModules": [ + "res_stasis_playback" + ], "apis": [ { "path": "/playbacks/{playbackId}", diff --git a/rest-api/api-docs/recordings.json b/rest-api/api-docs/recordings.json index d0b9630da282bba6ccda10ece291df98110863b9..6ffd6d8e9c0f4a7862a270f72e9ecc2cd2617c51 100644 --- a/rest-api/api-docs/recordings.json +++ b/rest-api/api-docs/recordings.json @@ -6,6 +6,9 @@ "swaggerVersion": "1.1", "basePath": "http://localhost:8088/ari", "resourcePath": "/api-docs/recordings.{format}", + "requiresModules": [ + "res_stasis_recording" + ], "apis": [ { "path": "/recordings/stored", diff --git a/tests/test_utils.c b/tests/test_utils.c index 68a285727b26e73c90e919449bc88a6750d044a9..bcb2df3758108ea321e09d47f3a60523d7b22764 100644 --- a/tests/test_utils.c +++ b/tests/test_utils.c @@ -646,4 +646,9 @@ static int load_module(void) return AST_MODULE_LOAD_SUCCESS; } -AST_MODULE_INFO_STANDARD(ASTERISK_GPL_KEY, "Utils test module"); +AST_MODULE_INFO(ASTERISK_GPL_KEY, AST_MODFLAG_DEFAULT, "Utils test module", + .support_level = AST_MODULE_SUPPORT_CORE, + .load = load_module, + .unload = unload_module, + .requires = "res_agi,res_crypto", +); diff --git a/tests/test_websocket_client.c b/tests/test_websocket_client.c index 6743b53693aaf461746f4109acc3acf4811b861d..e33f3f930da588c53b6bbf89afbd5436a35b288b 100644 --- a/tests/test_websocket_client.c +++ b/tests/test_websocket_client.c @@ -156,4 +156,9 @@ static int unload_module(void) return 0; } -AST_MODULE_INFO_STANDARD(ASTERISK_GPL_KEY, "Websocket client test module"); +AST_MODULE_INFO(ASTERISK_GPL_KEY, AST_MODFLAG_DEFAULT, "Websocket client test module", + .support_level = AST_MODULE_SUPPORT_CORE, + .load = load_module, + .unload = unload_module, + .requires = "res_http_websocket", +);