<p>Jenkins2 <strong>merged</strong> this change.</p><p><a href="https://gerrit.asterisk.org/7872">View Change</a></p><div style="white-space:pre-wrap">Approvals:
  Richard Mudgett: Looks good to me, but someone else must approve
  George Joseph: Looks good to me, approved
  Jenkins2: Approved for Submit

</div><pre style="font-family: monospace,monospace; white-space: pre-wrap;">loader: Add dependency fields to module structures.<br><br>* Declare 'requires' and 'enhances' text fields on module info structure.<br>* Rename 'nonoptreq' to 'optional_modules'.<br>* Update doxygen comments.<br><br>Still need to investigate dependencies among modules I cannot compile.<br><br>Change-Id: I3ad9547a0a6442409ff4e352a6d897bef2cc04bf<br>---<br>M apps/app_adsiprog.c<br>M apps/app_getcpeid.c<br>M apps/app_queue.c<br>M apps/app_speech_utils.c<br>M apps/app_stack.c<br>M apps/app_stasis.c<br>M apps/app_voicemail.c<br>M channels/chan_dahdi.c<br>M channels/chan_iax2.c<br>M channels/chan_mgcp.c<br>M channels/chan_motif.c<br>M channels/chan_pjsip.c<br>M channels/chan_rtp.c<br>M channels/chan_sip.c<br>M funcs/func_aes.c<br>M funcs/func_pjsip_aor.c<br>M funcs/func_pjsip_contact.c<br>M funcs/func_pjsip_endpoint.c<br>M include/asterisk/module.h<br>M pbx/pbx_ael.c<br>M pbx/pbx_dundi.c<br>M res/res_agi.c<br>M res/res_ari.c<br>M res/res_ari_applications.c<br>M res/res_ari_asterisk.c<br>M res/res_ari_bridges.c<br>M res/res_ari_channels.c<br>M res/res_ari_device_states.c<br>M res/res_ari_endpoints.c<br>M res/res_ari_events.c<br>M res/res_ari_mailboxes.c<br>M res/res_ari_playbacks.c<br>M res/res_ari_recordings.c<br>M res/res_ari_sounds.c<br>M res/res_chan_stats.c<br>M res/res_endpoint_stats.c<br>M res/res_fax_spandsp.c<br>M res/res_hep_pjsip.c<br>M res/res_hep_rtcp.c<br>M res/res_mwi_external_ami.c<br>M res/res_pjsip.c<br>M res/res_pjsip_acl.c<br>M res/res_pjsip_authenticator_digest.c<br>M res/res_pjsip_caller_id.c<br>M res/res_pjsip_dialog_info_body_generator.c<br>M res/res_pjsip_diversion.c<br>M res/res_pjsip_dlg_options.c<br>M res/res_pjsip_dtmf_info.c<br>M res/res_pjsip_empty_info.c<br>M res/res_pjsip_endpoint_identifier_anonymous.c<br>M res/res_pjsip_endpoint_identifier_ip.c<br>M res/res_pjsip_endpoint_identifier_user.c<br>M res/res_pjsip_exten_state.c<br>M res/res_pjsip_header_funcs.c<br>M res/res_pjsip_history.c<br>M res/res_pjsip_logger.c<br>M res/res_pjsip_messaging.c<br>M res/res_pjsip_mwi.c<br>M res/res_pjsip_mwi_body_generator.c<br>M res/res_pjsip_nat.c<br>M res/res_pjsip_notify.c<br>M res/res_pjsip_one_touch_record_info.c<br>M res/res_pjsip_outbound_authenticator_digest.c<br>M res/res_pjsip_outbound_publish.c<br>M res/res_pjsip_outbound_registration.c<br>M res/res_pjsip_path.c<br>M res/res_pjsip_phoneprov_provider.c<br>M res/res_pjsip_pidf_body_generator.c<br>M res/res_pjsip_pidf_digium_body_supplement.c<br>M res/res_pjsip_pidf_eyebeam_body_supplement.c<br>M res/res_pjsip_publish_asterisk.c<br>M res/res_pjsip_pubsub.c<br>M res/res_pjsip_refer.c<br>M res/res_pjsip_registrar.c<br>M res/res_pjsip_registrar_expire.c<br>M res/res_pjsip_rfc3326.c<br>M res/res_pjsip_sdp_rtp.c<br>M res/res_pjsip_send_to_voicemail.c<br>M res/res_pjsip_session.c<br>M res/res_pjsip_sips_contact.c<br>M res/res_pjsip_t38.c<br>M res/res_pjsip_transport_management.c<br>M res/res_pjsip_transport_websocket.c<br>M res/res_pjsip_xpidf_body_generator.c<br>M res/res_stasis_answer.c<br>M res/res_stasis_device_state.c<br>M res/res_stasis_mailbox.c<br>M res/res_stasis_playback.c<br>M res/res_stasis_recording.c<br>M res/res_stasis_snoop.c<br>M rest-api-templates/res_ari_resource.c.mustache<br>M tests/test_ari.c<br>M tests/test_ari_model.c<br>M tests/test_res_pjsip_scheduler.c<br>M tests/test_res_stasis.c<br>M tests/test_stasis_endpoints.c<br>96 files changed, 170 insertions(+), 64 deletions(-)<br><br></pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;">diff --git a/apps/app_adsiprog.c b/apps/app_adsiprog.c<br>index 2dd226f..688168e 100644<br>--- a/apps/app_adsiprog.c<br>+++ b/apps/app_adsiprog.c<br>@@ -1613,5 +1613,5 @@<br>    .support_level = AST_MODULE_SUPPORT_EXTENDED,<br>         .load = load_module,<br>  .unload = unload_module,<br>-     .nonoptreq = "res_adsi",<br>+   .requires = "res_adsi",<br> );<br>diff --git a/apps/app_getcpeid.c b/apps/app_getcpeid.c<br>index e0b9f12..868dc97 100644<br>--- a/apps/app_getcpeid.c<br>+++ b/apps/app_getcpeid.c<br>@@ -140,5 +140,5 @@<br>      .support_level = AST_MODULE_SUPPORT_EXTENDED,<br>         .load = load_module,<br>  .unload = unload_module,<br>-     .nonoptreq = "res_adsi",<br>+   .requires = "res_adsi",<br> );<br>diff --git a/apps/app_queue.c b/apps/app_queue.c<br>index c62828c..e7779b7 100644<br>--- a/apps/app_queue.c<br>+++ b/apps/app_queue.c<br>@@ -11345,5 +11345,5 @@<br>      .unload = unload_module,<br>      .reload = reload,<br>     .load_pri = AST_MODPRI_DEVSTATE_CONSUMER,<br>-    .nonoptreq = "res_monitor",<br>+        .optional_modules = "res_monitor",<br> );<br>diff --git a/apps/app_speech_utils.c b/apps/app_speech_utils.c<br>index 339c316..2ba297e 100644<br>--- a/apps/app_speech_utils.c<br>+++ b/apps/app_speech_utils.c<br>@@ -1003,5 +1003,5 @@<br>         .support_level = AST_MODULE_SUPPORT_CORE,<br>     .load = load_module,<br>  .unload = unload_module,<br>-     .nonoptreq = "res_speech",<br>+ .requires = "res_speech",<br> );<br>diff --git a/apps/app_stack.c b/apps/app_stack.c<br>index 459c06d..1f98378 100644<br>--- a/apps/app_stack.c<br>+++ b/apps/app_stack.c<br>@@ -1320,5 +1320,5 @@<br>      .load = load_module,<br>  .unload = unload_module,<br>      .load_pri = AST_MODPRI_APP_DEPEND,<br>-   .nonoptreq = "res_agi",<br>+    .optional_modules = "res_agi",<br> );<br>diff --git a/apps/app_stasis.c b/apps/app_stasis.c<br>index 81c58e8..8d09349 100644<br>--- a/apps/app_stasis.c<br>+++ b/apps/app_stasis.c<br>@@ -144,5 +144,5 @@<br>       .support_level = AST_MODULE_SUPPORT_CORE,<br>     .load = load_module,<br>  .unload = unload_module,<br>-     .nonoptreq = "res_stasis",<br>+ .requires = "res_stasis",<br> );<br>diff --git a/apps/app_voicemail.c b/apps/app_voicemail.c<br>index 0bcfa4f..4853a53 100644<br>--- a/apps/app_voicemail.c<br>+++ b/apps/app_voicemail.c<br>@@ -16488,5 +16488,5 @@<br>    .load = load_module,<br>  .unload = unload_module,<br>      .reload = reload,<br>-    .nonoptreq = "res_adsi,res_smdi",<br>+  .optional_modules = "res_adsi,res_smdi",<br> );<br>diff --git a/channels/chan_dahdi.c b/channels/chan_dahdi.c<br>index 4859d1a..de2c152 100644<br>--- a/channels/chan_dahdi.c<br>+++ b/channels/chan_dahdi.c<br>@@ -19542,5 +19542,5 @@<br>         .unload = unload_module,<br>      .reload = reload,<br>     .load_pri = AST_MODPRI_CHANNEL_DRIVER,<br>-       .nonoptreq = "res_smdi",<br>+   .optional_modules = "res_smdi",<br> );<br>diff --git a/channels/chan_iax2.c b/channels/chan_iax2.c<br>index 469fcda..eade5d1 100644<br>--- a/channels/chan_iax2.c<br>+++ b/channels/chan_iax2.c<br>@@ -14902,5 +14902,5 @@<br>      .unload = unload_module,<br>      .reload = reload,<br>     .load_pri = AST_MODPRI_CHANNEL_DRIVER,<br>-       .nonoptreq = "res_crypto",<br>+ .optional_modules = "res_crypto",<br> );<br>diff --git a/channels/chan_mgcp.c b/channels/chan_mgcp.c<br>index 547226c..2ac7690 100644<br>--- a/channels/chan_mgcp.c<br>+++ b/channels/chan_mgcp.c<br>@@ -5025,5 +5025,5 @@<br>      .unload = unload_module,<br>      .reload = reload,<br>     .load_pri = AST_MODPRI_CHANNEL_DRIVER,<br>-       .nonoptreq = "res_pktccops",<br>+       .optional_modules = "res_pktccops",<br> );<br>diff --git a/channels/chan_motif.c b/channels/chan_motif.c<br>index df1eeb8..05184ca 100644<br>--- a/channels/chan_motif.c<br>+++ b/channels/chan_motif.c<br>@@ -2821,4 +2821,5 @@<br>        .unload = unload_module,<br>      .reload = reload,<br>     .load_pri = AST_MODPRI_CHANNEL_DRIVER,<br>+       .requires = "res_xmpp",<br> );<br>diff --git a/channels/chan_pjsip.c b/channels/chan_pjsip.c<br>index 4c30d33..68da4a1 100644<br>--- a/channels/chan_pjsip.c<br>+++ b/channels/chan_pjsip.c<br>@@ -3110,4 +3110,5 @@<br>    .load = load_module,<br>  .unload = unload_module,<br>      .load_pri = AST_MODPRI_CHANNEL_DRIVER,<br>+       .requires = "res_pjsip,res_pjsip_session",<br> );<br>diff --git a/channels/chan_rtp.c b/channels/chan_rtp.c<br>index 0a59e33..7d9e26d 100644<br>--- a/channels/chan_rtp.c<br>+++ b/channels/chan_rtp.c<br>@@ -432,4 +432,5 @@<br>   .load = load_module,<br>  .unload = unload_module,<br>      .load_pri = AST_MODPRI_CHANNEL_DRIVER,<br>+       .requires = "res_rtp_multicast",<br> );<br>diff --git a/channels/chan_sip.c b/channels/chan_sip.c<br>index e8cc591..fa98990 100644<br>--- a/channels/chan_sip.c<br>+++ b/channels/chan_sip.c<br>@@ -35737,5 +35737,5 @@<br>         .unload = unload_module,<br>      .reload = reload,<br>     .load_pri = AST_MODPRI_CHANNEL_DRIVER,<br>-       .nonoptreq = "res_crypto,res_http_websocket",<br>+      .optional_modules = "res_crypto,res_http_websocket",<br> );<br>diff --git a/funcs/func_aes.c b/funcs/func_aes.c<br>index 7208cd4..af3f257 100644<br>--- a/funcs/func_aes.c<br>+++ b/funcs/func_aes.c<br>@@ -180,5 +180,5 @@<br>     .support_level = AST_MODULE_SUPPORT_CORE,<br>     .load = load_module,<br>  .unload = unload_module,<br>-     .nonoptreq = "res_crypto",<br>+ .requires = "res_crypto",<br> );<br>diff --git a/funcs/func_pjsip_aor.c b/funcs/func_pjsip_aor.c<br>index 799e9e4..589f667 100644<br>--- a/funcs/func_pjsip_aor.c<br>+++ b/funcs/func_pjsip_aor.c<br>@@ -181,4 +181,9 @@<br>        return ast_custom_function_register(&pjsip_aor_function);<br> }<br> <br>-AST_MODULE_INFO_STANDARD(ASTERISK_GPL_KEY, "Get information about a PJSIP AOR");<br>+AST_MODULE_INFO(ASTERISK_GPL_KEY, AST_MODFLAG_DEFAULT, "Get information about a PJSIP AOR",<br>+    .support_level = AST_MODULE_SUPPORT_CORE,<br>+    .load = load_module,<br>+ .unload = unload_module,<br>+     .requires = "res_pjsip",<br>+);<br>diff --git a/funcs/func_pjsip_contact.c b/funcs/func_pjsip_contact.c<br>index c840365..fac4cb6 100644<br>--- a/funcs/func_pjsip_contact.c<br>+++ b/funcs/func_pjsip_contact.c<br>@@ -198,4 +198,9 @@<br>         return ast_custom_function_register(&pjsip_contact_function);<br> }<br> <br>-AST_MODULE_INFO_STANDARD(ASTERISK_GPL_KEY, "Get information about a PJSIP contact");<br>+AST_MODULE_INFO(ASTERISK_GPL_KEY, AST_MODFLAG_DEFAULT, "Get information about a PJSIP contact",<br>+        .support_level = AST_MODULE_SUPPORT_CORE,<br>+    .load = load_module,<br>+ .unload = unload_module,<br>+     .requires = "res_pjsip",<br>+);<br>diff --git a/funcs/func_pjsip_endpoint.c b/funcs/func_pjsip_endpoint.c<br>index a64d93b..e4a6aba 100644<br>--- a/funcs/func_pjsip_endpoint.c<br>+++ b/funcs/func_pjsip_endpoint.c<br>@@ -156,4 +156,9 @@<br>     return ast_custom_function_register(&pjsip_endpoint_function);<br> }<br> <br>-AST_MODULE_INFO_STANDARD(ASTERISK_GPL_KEY, "Get information about a PJSIP endpoint");<br>+AST_MODULE_INFO(ASTERISK_GPL_KEY, AST_MODFLAG_DEFAULT, "Get information about a PJSIP endpoint",<br>+     .support_level = AST_MODULE_SUPPORT_CORE,<br>+    .load = load_module,<br>+ .unload = unload_module,<br>+     .requires = "res_pjsip",<br>+);<br>diff --git a/include/asterisk/module.h b/include/asterisk/module.h<br>index 103cd30..ebd41c0 100644<br>--- a/include/asterisk/module.h<br>+++ b/include/asterisk/module.h<br>@@ -304,26 +304,28 @@<br> };<br> <br> struct ast_module_info {<br>-<br>     /*!<br>    * The 'self' pointer for a module; it will be set by the loader before<br>        * it calls the module's load_module() entrypoint, and used by various<br>     * other macros that need to identify the module.<br>      */<br>-<br>        struct ast_module *self;<br>-     enum ast_module_load_result (*load)(void);      /*!< register stuff etc. Optional. */<br>-     int (*reload)(void);                    /*!< config etc. Optional. */<br>-     int (*unload)(void);                    /*!< unload. called with the module locked */<br>-     const char *name;                       /*!< name of the module for loader reference and CLI commands */<br>-  const char *description;                /*!< user friendly description of the module. */<br>+  /*! Register stuff etc. Optional. */<br>+ enum ast_module_load_result (*load)(void);<br>+   /*! Config etc. Optional. */<br>+ int (*reload)(void);<br>+ /*! Unload. called with the module locked */<br>+ int (*unload)(void);<br>+ /*! Name of the module for loader reference and CLI commands */<br>+      const char *name;<br>+    /*! User friendly description of the module. */<br>+      const char *description;<br> <br>   /*!<br>    * This holds the ASTERISK_GPL_KEY, signifiying that you agree to the terms of<br>         * the Asterisk license as stated in the ASTERISK_GPL_KEY.  Your module will not<br>       * load if it does not return the EXACT key string.<br>    */<br>-<br>        const char *key;<br>      unsigned int flags;<br> <br>@@ -337,10 +339,42 @@<br>          *  on load. */<br>       unsigned char load_pri;<br> <br>-   /*! Modules which should be loaded first, in comma-separated string format.<br>-   * These are only required for loading, when the optional_api header file<br>-     * detects that the compiler does not support the optional API featureset. */<br>-        const char *nonoptreq;<br>+       /*! Modules which must always be started first, in comma-separated string format. */<br>+ const char *requires;<br>+<br>+     /*!<br>+   * \brief Comma-separated list of optionally required modules.<br>+        *<br>+    * The listed modules are optional, but load order is enforced.  For example<br>+  * app_voicemail optionally requires res_adsi.  This means that app_voicemail<br>+         * will happily load without res_adsi, but if both are being loaded the module<br>+        * loader will force res_adsi to start first.<br>+         */<br>+  const char *optional_modules;<br>+<br>+     /*!<br>+   * \brief Modules that we provide enhanced functionality for.<br>+         *<br>+    * This is similar to a "requires" but specifies that we add functionality to<br>+       * the other modules.  Any module that requires something we "enhances" will<br>+        * also require us, but only if we are dlopen'ed.<br>+         *<br>+    * Example:<br>+   * - res_fax_spandsp has .enhances = "res_fax".<br>+     * - res_my_module has .requires = "res_fax" but has no direct knowledge<br>+    *   of res_fax_spandsp.<br>+      *<br>+    * This forces the following startup order among the 3 modules:<br>+       * 1) res_fax starts.<br>+         * 2) res_fax_spandsp starts, holds a reference to res_fax.<br>+   * 3) res_mymod starts, holds a reference to res_fax and res_fax_spandsp.<br>+     *<br>+    * If res_fax_spandsp were not being loaded res_mymod would load with<br>+         * res_fax only.  If res_fax_spandsp were later loaded res_mymod would<br>+        * get a reference to it.<br>+     */<br>+  const char *enhances;<br>+<br>      /*! The support level for the given module */<br>         enum ast_module_support_level support_level;<br> };<br>@@ -411,6 +445,8 @@<br>                AST_BUILDOPT_SUM,                                              \<br>              load_pri,                                                      \<br>              NULL,                                                          \<br>+             NULL,                                                          \<br>+             NULL,                                                          \<br>              support_level,                                                 \<br>      };                                                                 \<br>  static void  __attribute__((constructor)) __reg_module(void)       \<br>diff --git a/pbx/pbx_ael.c b/pbx/pbx_ael.c<br>index 6517b3a..d55f2d4 100644<br>--- a/pbx/pbx_ael.c<br>+++ b/pbx/pbx_ael.c<br>@@ -292,6 +292,7 @@<br>        .load = load_module,<br>  .unload = unload_module,<br>      .reload = reload,<br>+    .requires = "res_ael_share",<br> );<br> <br> #ifdef AAL_ARGCHECK<br>diff --git a/pbx/pbx_dundi.c b/pbx/pbx_dundi.c<br>index e0aeb49..92e7198 100644<br>--- a/pbx/pbx_dundi.c<br>+++ b/pbx/pbx_dundi.c<br>@@ -5063,5 +5063,5 @@<br>      .load = load_module,<br>  .unload = unload_module,<br>      .reload = reload,<br>-    .nonoptreq = "res_crypto",<br>+ .optional_modules = "res_crypto",<br> );<br>diff --git a/res/res_agi.c b/res/res_agi.c<br>index 393a503..2d0dc27 100644<br>--- a/res/res_agi.c<br>+++ b/res/res_agi.c<br>@@ -4717,4 +4717,5 @@<br>  .load = load_module,<br>  .unload = unload_module,<br>      .load_pri = AST_MODPRI_APP_DEPEND,<br>+   .requires = "res_speech",<br> );<br>diff --git a/res/res_ari.c b/res/res_ari.c<br>index 9104ede..6ce25a5 100644<br>--- a/res/res_ari.c<br>+++ b/res/res_ari.c<br>@@ -1197,6 +1197,7 @@<br>  .load = load_module,<br>  .unload = unload_module,<br>      .reload = reload_module,<br>-     .nonoptreq = "res_http_websocket",<br>+ .optional_modules = "res_http_websocket",<br>+  .requires = "res_stasis",<br>   .load_pri = AST_MODPRI_APP_DEPEND,<br> );<br>diff --git a/res/res_ari_applications.c b/res/res_ari_applications.c<br>index cf700c4..323bdb3 100644<br>--- a/res/res_ari_applications.c<br>+++ b/res/res_ari_applications.c<br>@@ -518,5 +518,5 @@<br>         .support_level = AST_MODULE_SUPPORT_CORE,<br>     .load = load_module,<br>  .unload = unload_module,<br>-     .nonoptreq = "res_ari,res_stasis",<br>+ .requires = "res_ari,res_ari_model,res_stasis",<br> );<br>diff --git a/res/res_ari_asterisk.c b/res/res_ari_asterisk.c<br>index eb0617b..9f76f93 100644<br>--- a/res/res_ari_asterisk.c<br>+++ b/res/res_ari_asterisk.c<br>@@ -1239,5 +1239,5 @@<br>        .support_level = AST_MODULE_SUPPORT_CORE,<br>     .load = load_module,<br>  .unload = unload_module,<br>-     .nonoptreq = "res_ari,res_stasis",<br>+ .requires = "res_ari,res_ari_model,res_stasis",<br> );<br>diff --git a/res/res_ari_bridges.c b/res/res_ari_bridges.c<br>index 35fd3bd..34b9d89 100644<br>--- a/res/res_ari_bridges.c<br>+++ b/res/res_ari_bridges.c<br>@@ -1579,5 +1579,5 @@<br>    .support_level = AST_MODULE_SUPPORT_CORE,<br>     .load = load_module,<br>  .unload = unload_module,<br>-     .nonoptreq = "res_ari,res_stasis",<br>+ .requires = "res_ari,res_ari_model,res_stasis",<br> );<br>diff --git a/res/res_ari_channels.c b/res/res_ari_channels.c<br>index f6befcc..7862c10 100644<br>--- a/res/res_ari_channels.c<br>+++ b/res/res_ari_channels.c<br>@@ -2869,5 +2869,5 @@<br>        .support_level = AST_MODULE_SUPPORT_CORE,<br>     .load = load_module,<br>  .unload = unload_module,<br>-     .nonoptreq = "res_ari,res_stasis",<br>+ .requires = "res_ari,res_ari_model,res_stasis",<br> );<br>diff --git a/res/res_ari_device_states.c b/res/res_ari_device_states.c<br>index f393935..ec8890b 100644<br>--- a/res/res_ari_device_states.c<br>+++ b/res/res_ari_device_states.c<br>@@ -349,5 +349,5 @@<br>      .support_level = AST_MODULE_SUPPORT_CORE,<br>     .load = load_module,<br>  .unload = unload_module,<br>-     .nonoptreq = "res_ari,res_stasis",<br>+ .requires = "res_ari,res_ari_model,res_stasis",<br> );<br>diff --git a/res/res_ari_endpoints.c b/res/res_ari_endpoints.c<br>index d1242c0..07197ca 100644<br>--- a/res/res_ari_endpoints.c<br>+++ b/res/res_ari_endpoints.c<br>@@ -473,5 +473,5 @@<br>      .support_level = AST_MODULE_SUPPORT_CORE,<br>     .load = load_module,<br>  .unload = unload_module,<br>-     .nonoptreq = "res_ari,res_stasis",<br>+ .requires = "res_ari,res_ari_model,res_stasis",<br> );<br>diff --git a/res/res_ari_events.c b/res/res_ari_events.c<br>index f916d0e..f750a54 100644<br>--- a/res/res_ari_events.c<br>+++ b/res/res_ari_events.c<br>@@ -473,5 +473,5 @@<br>  .support_level = AST_MODULE_SUPPORT_CORE,<br>     .load = load_module,<br>  .unload = unload_module,<br>-     .nonoptreq = "res_ari,res_stasis",<br>+ .requires = "res_ari,res_ari_model,res_stasis",<br> );<br>diff --git a/res/res_ari_mailboxes.c b/res/res_ari_mailboxes.c<br>index 1f6d2cc..6469f93 100644<br>--- a/res/res_ari_mailboxes.c<br>+++ b/res/res_ari_mailboxes.c<br>@@ -355,5 +355,5 @@<br>      .support_level = AST_MODULE_SUPPORT_CORE,<br>     .load = load_module,<br>  .unload = unload_module,<br>-     .nonoptreq = "res_ari,res_stasis",<br>+ .requires = "res_ari,res_ari_model,res_stasis",<br> );<br>diff --git a/res/res_ari_playbacks.c b/res/res_ari_playbacks.c<br>index 40099cf..0148a74 100644<br>--- a/res/res_ari_playbacks.c<br>+++ b/res/res_ari_playbacks.c<br>@@ -307,5 +307,5 @@<br>      .support_level = AST_MODULE_SUPPORT_CORE,<br>     .load = load_module,<br>  .unload = unload_module,<br>-     .nonoptreq = "res_ari,res_stasis",<br>+ .requires = "res_ari,res_ari_model,res_stasis",<br> );<br>diff --git a/res/res_ari_recordings.c b/res/res_ari_recordings.c<br>index fe3d343..531ff65 100644<br>--- a/res/res_ari_recordings.c<br>+++ b/res/res_ari_recordings.c<br>@@ -891,5 +891,5 @@<br>  .support_level = AST_MODULE_SUPPORT_CORE,<br>     .load = load_module,<br>  .unload = unload_module,<br>-     .nonoptreq = "res_ari,res_stasis",<br>+ .requires = "res_ari,res_ari_model,res_stasis",<br> );<br>diff --git a/res/res_ari_sounds.c b/res/res_ari_sounds.c<br>index 8d5928a..5c27ebd 100644<br>--- a/res/res_ari_sounds.c<br>+++ b/res/res_ari_sounds.c<br>@@ -237,5 +237,5 @@<br>  .support_level = AST_MODULE_SUPPORT_CORE,<br>     .load = load_module,<br>  .unload = unload_module,<br>-     .nonoptreq = "res_ari,res_stasis",<br>+ .requires = "res_ari,res_ari_model,res_stasis",<br> );<br>diff --git a/res/res_chan_stats.c b/res/res_chan_stats.c<br>index 061d086..dbc79f0 100644<br>--- a/res/res_chan_stats.c<br>+++ b/res/res_chan_stats.c<br>@@ -182,5 +182,5 @@<br>  .support_level = AST_MODULE_SUPPORT_EXTENDED,<br>         .load = load_module,<br>  .unload = unload_module,<br>-     .nonoptreq = "res_statsd"<br>+  .requires = "res_statsd"<br> );<br>diff --git a/res/res_endpoint_stats.c b/res/res_endpoint_stats.c<br>index 1e3f104..7ce44f9 100644<br>--- a/res/res_endpoint_stats.c<br>+++ b/res/res_endpoint_stats.c<br>@@ -151,5 +151,5 @@<br>         .support_level = AST_MODULE_SUPPORT_EXTENDED,<br>         .load = load_module,<br>  .unload = unload_module,<br>-     .nonoptreq = "res_statsd"<br>+  .requires = "res_statsd"<br>    );<br>diff --git a/res/res_fax_spandsp.c b/res/res_fax_spandsp.c<br>index a3a82e4..045dbc7 100644<br>--- a/res/res_fax_spandsp.c<br>+++ b/res/res_fax_spandsp.c<br>@@ -1266,4 +1266,5 @@<br>        .support_level = AST_MODULE_SUPPORT_EXTENDED,<br>         .load = load_module,<br>  .unload = unload_module,<br>+     .enhances = "res_fax",<br> );<br>diff --git a/res/res_hep_pjsip.c b/res/res_hep_pjsip.c<br>index 6283efc..ff02675 100644<br>--- a/res/res_hep_pjsip.c<br>+++ b/res/res_hep_pjsip.c<br>@@ -253,4 +253,5 @@<br>       .support_level = AST_MODULE_SUPPORT_EXTENDED,<br>         .load = load_module,<br>  .unload = unload_module,<br>+     .requires = "res_hep,res_pjsip",<br> );<br>diff --git a/res/res_hep_rtcp.c b/res/res_hep_rtcp.c<br>index afad0c8..199c816 100644<br>--- a/res/res_hep_rtcp.c<br>+++ b/res/res_hep_rtcp.c<br>@@ -184,4 +184,5 @@<br>         .support_level = AST_MODULE_SUPPORT_EXTENDED,<br>         .load = load_module,<br>  .unload = unload_module,<br>+     .requires = "res_hep",<br> );<br>diff --git a/res/res_mwi_external_ami.c b/res/res_mwi_external_ami.c<br>index 8419f2f..8639fad 100644<br>--- a/res/res_mwi_external_ami.c<br>+++ b/res/res_mwi_external_ami.c<br>@@ -370,4 +370,6 @@<br>   .support_level = AST_MODULE_SUPPORT_CORE,<br>     .load = load_module,<br>  .unload = unload_module,<br>+     .load_pri = AST_MODPRI_CHANNEL_DEPEND - 5,<br>+   .requires = "res_mwi_external",<br> );<br>diff --git a/res/res_pjsip.c b/res/res_pjsip.c<br>index 0311dfd..3f9574d 100644<br>--- a/res/res_pjsip.c<br>+++ b/res/res_pjsip.c<br>@@ -5125,4 +5125,5 @@<br>    .unload = unload_module,<br>      .reload = reload_module,<br>      .load_pri = AST_MODPRI_CHANNEL_DEPEND - 5,<br>+   .requires = "res_pjproject",<br> );<br>diff --git a/res/res_pjsip_acl.c b/res/res_pjsip_acl.c<br>index 5c10e57..9269864 100644<br>--- a/res/res_pjsip_acl.c<br>+++ b/res/res_pjsip_acl.c<br>@@ -321,4 +321,5 @@<br>         .load = load_module,<br>  .unload = unload_module,<br>      .load_pri = AST_MODPRI_APP_DEPEND,<br>+   .requires = "res_pjsip",<br> );<br>diff --git a/res/res_pjsip_authenticator_digest.c b/res/res_pjsip_authenticator_digest.c<br>index ef57e37..b6f2b74 100644<br>--- a/res/res_pjsip_authenticator_digest.c<br>+++ b/res/res_pjsip_authenticator_digest.c<br>@@ -554,4 +554,5 @@<br>         .unload = unload_module,<br>      .reload = reload_module,<br>      .load_pri = AST_MODPRI_CHANNEL_DEPEND - 5,<br>+   .requires = "res_pjsip",<br> );<br>diff --git a/res/res_pjsip_caller_id.c b/res/res_pjsip_caller_id.c<br>index 64191a7..1673147 100644<br>--- a/res/res_pjsip_caller_id.c<br>+++ b/res/res_pjsip_caller_id.c<br>@@ -19,7 +19,6 @@<br> /*** MODULEINFO<br>     <depend>pjproject</depend><br>        <depend>res_pjsip</depend><br>-       <depend>res_pjsip_session</depend><br>        <support_level>core</support_level><br>  ***/<br> <br>@@ -764,4 +763,5 @@<br>       .load = load_module,<br>  .unload = unload_module,<br>      .load_pri = AST_MODPRI_APP_DEPEND,<br>+   .requires = "res_pjsip",<br> );<br>diff --git a/res/res_pjsip_dialog_info_body_generator.c b/res/res_pjsip_dialog_info_body_generator.c<br>index 7c386e3..866ea9d 100644<br>--- a/res/res_pjsip_dialog_info_body_generator.c<br>+++ b/res/res_pjsip_dialog_info_body_generator.c<br>@@ -20,7 +20,6 @@<br>   <depend>pjproject</depend><br>        <depend>res_pjsip</depend><br>        <depend>res_pjsip_pubsub</depend><br>-        <depend>res_pjsip_exten_state</depend><br>    <support_level>core</support_level><br>  ***/<br> <br>@@ -219,4 +218,5 @@<br>       .load = load_module,<br>  .unload = unload_module,<br>      .load_pri = AST_MODPRI_CHANNEL_DEPEND,<br>+       .requires = "res_pjsip,res_pjsip_pubsub",<br> );<br>diff --git a/res/res_pjsip_diversion.c b/res/res_pjsip_diversion.c<br>index efb5489..84c42dc 100644<br>--- a/res/res_pjsip_diversion.c<br>+++ b/res/res_pjsip_diversion.c<br>@@ -19,7 +19,6 @@<br> /*** MODULEINFO<br>    <depend>pjproject</depend><br>        <depend>res_pjsip</depend><br>-       <depend>res_pjsip_session</depend><br>        <support_level>core</support_level><br>  ***/<br> <br>@@ -429,4 +428,5 @@<br>       .load = load_module,<br>  .unload = unload_module,<br>      .load_pri = AST_MODPRI_APP_DEPEND,<br>+   .requires = "res_pjsip",<br> );<br>diff --git a/res/res_pjsip_dlg_options.c b/res/res_pjsip_dlg_options.c<br>index de1ac97..565ad2a 100644<br>--- a/res/res_pjsip_dlg_options.c<br>+++ b/res/res_pjsip_dlg_options.c<br>@@ -19,7 +19,6 @@<br> /*** MODULEINFO<br>     <depend>pjproject</depend><br>        <depend>res_pjsip</depend><br>-       <depend>res_pjsip_session</depend><br>        <support_level>core</support_level><br> ***/<br> <br>@@ -103,4 +102,5 @@<br>        .load = load_module,<br>  .unload = unload_module,<br>      .load_pri = AST_MODPRI_APP_DEPEND,<br>+   .requires = "res_pjsip",<br> );<br>diff --git a/res/res_pjsip_dtmf_info.c b/res/res_pjsip_dtmf_info.c<br>index e534f3e..68df617 100644<br>--- a/res/res_pjsip_dtmf_info.c<br>+++ b/res/res_pjsip_dtmf_info.c<br>@@ -19,7 +19,6 @@<br> /*** MODULEINFO<br>     <depend>pjproject</depend><br>        <depend>res_pjsip</depend><br>-       <depend>res_pjsip_session</depend><br>        <support_level>core</support_level><br>  ***/<br> <br>@@ -178,4 +177,5 @@<br>       .load = load_module,<br>  .unload = unload_module,<br>      .load_pri = AST_MODPRI_APP_DEPEND,<br>+   .requires = "res_pjsip",<br> );<br>diff --git a/res/res_pjsip_empty_info.c b/res/res_pjsip_empty_info.c<br>index 774f9de..c67835c 100644<br>--- a/res/res_pjsip_empty_info.c<br>+++ b/res/res_pjsip_empty_info.c<br>@@ -19,7 +19,6 @@<br> /*** MODULEINFO<br>         <depend>pjproject</depend><br>        <depend>res_pjsip</depend><br>-       <depend>res_pjsip_session</depend><br>        <support_level>core</support_level><br>  ***/<br> <br>@@ -84,4 +83,5 @@<br>         .load = load_module,<br>  .unload = unload_module,<br>      .load_pri = AST_MODPRI_APP_DEPEND,<br>+   .requires = "res_pjsip",<br> );<br>diff --git a/res/res_pjsip_endpoint_identifier_anonymous.c b/res/res_pjsip_endpoint_identifier_anonymous.c<br>index b47aefa..16662eb 100644<br>--- a/res/res_pjsip_endpoint_identifier_anonymous.c<br>+++ b/res/res_pjsip_endpoint_identifier_anonymous.c<br>@@ -132,4 +132,5 @@<br>     .support_level = AST_MODULE_SUPPORT_CORE,<br>     .load = load_module,<br>  .unload = unload_module,<br>+     .requires = "res_pjsip",<br> );<br>diff --git a/res/res_pjsip_endpoint_identifier_ip.c b/res/res_pjsip_endpoint_identifier_ip.c<br>index a672b33..58e4624 100644<br>--- a/res/res_pjsip_endpoint_identifier_ip.c<br>+++ b/res/res_pjsip_endpoint_identifier_ip.c<br>@@ -764,4 +764,5 @@<br>         .reload = reload_module,<br>      .unload = unload_module,<br>      .load_pri = AST_MODPRI_CHANNEL_DEPEND - 4,<br>+   .requires = "res_pjsip",<br> );<br>diff --git a/res/res_pjsip_endpoint_identifier_user.c b/res/res_pjsip_endpoint_identifier_user.c<br>index ff97a62..1b0c7d9 100644<br>--- a/res/res_pjsip_endpoint_identifier_user.c<br>+++ b/res/res_pjsip_endpoint_identifier_user.c<br>@@ -214,4 +214,5 @@<br>         .load = load_module,<br>  .unload = unload_module,<br>      .load_pri = AST_MODPRI_CHANNEL_DEPEND - 4,<br>+   .requires = "res_pjsip",<br> );<br>diff --git a/res/res_pjsip_exten_state.c b/res/res_pjsip_exten_state.c<br>index 3e75613..e70eba7 100644<br>--- a/res/res_pjsip_exten_state.c<br>+++ b/res/res_pjsip_exten_state.c<br>@@ -1015,4 +1015,5 @@<br>   .load = load_module,<br>  .unload = unload_module,<br>      .load_pri = AST_MODPRI_CHANNEL_DEPEND + 5,<br>+   .requires = "res_pjsip,res_pjsip_pubsub,res_pjsip_outbound_publish",<br> );<br>diff --git a/res/res_pjsip_header_funcs.c b/res/res_pjsip_header_funcs.c<br>index 648f1c8..06fba06 100644<br>--- a/res/res_pjsip_header_funcs.c<br>+++ b/res/res_pjsip_header_funcs.c<br>@@ -629,4 +629,5 @@<br>     .load = load_module,<br>  .unload = unload_module,<br>      .load_pri = AST_MODPRI_APP_DEPEND,<br>+   .requires = "res_pjsip,res_pjsip_session",<br> );<br>diff --git a/res/res_pjsip_history.c b/res/res_pjsip_history.c<br>index d6b3eeb..40d26d5 100644<br>--- a/res/res_pjsip_history.c<br>+++ b/res/res_pjsip_history.c<br>@@ -1403,4 +1403,5 @@<br>                 .load = load_module,<br>          .unload = unload_module,<br>              .load_pri = AST_MODPRI_APP_DEPEND,<br>+           .requires = "res_pjsip",<br>    );<br>diff --git a/res/res_pjsip_logger.c b/res/res_pjsip_logger.c<br>index d29a6e2..460b6a3 100644<br>--- a/res/res_pjsip_logger.c<br>+++ b/res/res_pjsip_logger.c<br>@@ -262,4 +262,5 @@<br>      .load = load_module,<br>  .unload = unload_module,<br>      .load_pri = AST_MODPRI_APP_DEPEND,<br>+   .requires = "res_pjsip",<br> );<br>diff --git a/res/res_pjsip_messaging.c b/res/res_pjsip_messaging.c<br>index b6e7a64..3739bcf 100644<br>--- a/res/res_pjsip_messaging.c<br>+++ b/res/res_pjsip_messaging.c<br>@@ -19,7 +19,6 @@<br> /*** MODULEINFO<br>     <depend>pjproject</depend><br>        <depend>res_pjsip</depend><br>-       <depend>res_pjsip_session</depend><br>        <support_level>core</support_level><br>  ***/<br> <br>@@ -850,4 +849,5 @@<br>       .load = load_module,<br>  .unload = unload_module,<br>      .load_pri = AST_MODPRI_APP_DEPEND,<br>+   .requires = "res_pjsip",<br> );<br>diff --git a/res/res_pjsip_mwi.c b/res/res_pjsip_mwi.c<br>index 5423038..92dc7dc 100644<br>--- a/res/res_pjsip_mwi.c<br>+++ b/res/res_pjsip_mwi.c<br>@@ -1397,4 +1397,5 @@<br>   .unload = unload_module,<br>      .reload = reload,<br>     .load_pri = AST_MODPRI_CHANNEL_DEPEND + 5,<br>+   .requires = "res_pjsip,res_pjsip_pubsub",<br> );<br>diff --git a/res/res_pjsip_mwi_body_generator.c b/res/res_pjsip_mwi_body_generator.c<br>index e827910..65ac600 100644<br>--- a/res/res_pjsip_mwi_body_generator.c<br>+++ b/res/res_pjsip_mwi_body_generator.c<br>@@ -116,4 +116,5 @@<br>        .load = load_module,<br>  .unload = unload_module,<br>      .load_pri = AST_MODPRI_CHANNEL_DEPEND,<br>+       .requires = "res_pjsip,res_pjsip_pubsub",<br> );<br>diff --git a/res/res_pjsip_nat.c b/res/res_pjsip_nat.c<br>index e1d56e6..4231a1e 100644<br>--- a/res/res_pjsip_nat.c<br>+++ b/res/res_pjsip_nat.c<br>@@ -378,4 +378,5 @@<br>    .load = load_module,<br>  .unload = unload_module,<br>      .load_pri = AST_MODPRI_APP_DEPEND,<br>+   .requires = "res_pjsip",<br> );<br>diff --git a/res/res_pjsip_notify.c b/res/res_pjsip_notify.c<br>index 59b7c6e..9767c56 100644<br>--- a/res/res_pjsip_notify.c<br>+++ b/res/res_pjsip_notify.c<br>@@ -1032,4 +1032,5 @@<br>       .reload = reload_module,<br>      .unload = unload_module,<br>      .load_pri = AST_MODPRI_APP_DEPEND,<br>+   .requires = "res_pjsip",<br> );<br>diff --git a/res/res_pjsip_one_touch_record_info.c b/res/res_pjsip_one_touch_record_info.c<br>index ec5f9be..ef59fca 100644<br>--- a/res/res_pjsip_one_touch_record_info.c<br>+++ b/res/res_pjsip_one_touch_record_info.c<br>@@ -19,7 +19,6 @@<br> /*** MODULEINFO<br>      <depend>pjproject</depend><br>        <depend>res_pjsip</depend><br>-       <depend>res_pjsip_session</depend><br>        <support_level>core</support_level><br> ***/<br> <br>@@ -129,4 +128,5 @@<br>       .load = load_module,<br>  .unload = unload_module,<br>      .load_pri = AST_MODPRI_APP_DEPEND,<br>+   .requires = "res_pjsip",<br> );<br>diff --git a/res/res_pjsip_outbound_authenticator_digest.c b/res/res_pjsip_outbound_authenticator_digest.c<br>index 7e2d711..54bba08 100644<br>--- a/res/res_pjsip_outbound_authenticator_digest.c<br>+++ b/res/res_pjsip_outbound_authenticator_digest.c<br>@@ -224,4 +224,5 @@<br>     .load = load_module,<br>  .unload = unload_module,<br>      .load_pri = AST_MODPRI_CHANNEL_DEPEND,<br>+       .requires = "res_pjsip",<br> );<br>diff --git a/res/res_pjsip_outbound_publish.c b/res/res_pjsip_outbound_publish.c<br>index e5f1295..b4e3320 100644<br>--- a/res/res_pjsip_outbound_publish.c<br>+++ b/res/res_pjsip_outbound_publish.c<br>@@ -1702,4 +1702,5 @@<br>       .reload = reload_module,<br>      .unload = unload_module,<br>      .load_pri = AST_MODPRI_CHANNEL_DEPEND,<br>+       .requires = "res_pjproject,res_pjsip",<br> );<br>diff --git a/res/res_pjsip_outbound_registration.c b/res/res_pjsip_outbound_registration.c<br>index d9afcd2..79bea48 100644<br>--- a/res/res_pjsip_outbound_registration.c<br>+++ b/res/res_pjsip_outbound_registration.c<br>@@ -2289,4 +2289,5 @@<br>     .reload = reload_module,<br>      .unload = unload_module,<br>      .load_pri = AST_MODPRI_APP_DEPEND,<br>+   .requires = "res_pjsip",<br> );<br>diff --git a/res/res_pjsip_path.c b/res/res_pjsip_path.c<br>index e170a75..b245f15 100644<br>--- a/res/res_pjsip_path.c<br>+++ b/res/res_pjsip_path.c<br>@@ -264,4 +264,5 @@<br>         .load = load_module,<br>  .unload = unload_module,<br>      .load_pri = AST_MODPRI_APP_DEPEND,<br>+   .requires = "res_pjsip",<br> );<br>diff --git a/res/res_pjsip_phoneprov_provider.c b/res/res_pjsip_phoneprov_provider.c<br>index 7e082c4..11031c3 100644<br>--- a/res/res_pjsip_phoneprov_provider.c<br>+++ b/res/res_pjsip_phoneprov_provider.c<br>@@ -418,4 +418,5 @@<br>         .reload = reload_module,<br>      .unload = unload_module,<br>      .load_pri = AST_MODPRI_APP_DEPEND,<br>+   .requires = "res_pjsip,res_phoneprov",<br> );<br>diff --git a/res/res_pjsip_pidf_body_generator.c b/res/res_pjsip_pidf_body_generator.c<br>index 29c9e6b..6426dfa 100644<br>--- a/res/res_pjsip_pidf_body_generator.c<br>+++ b/res/res_pjsip_pidf_body_generator.c<br>@@ -135,4 +135,5 @@<br>       .load = load_module,<br>  .unload = unload_module,<br>      .load_pri = AST_MODPRI_CHANNEL_DEPEND,<br>+       .requires = "res_pjsip,res_pjsip_pubsub",<br> );<br>diff --git a/res/res_pjsip_pidf_digium_body_supplement.c b/res/res_pjsip_pidf_digium_body_supplement.c<br>index 93e4982..f855e21 100644<br>--- a/res/res_pjsip_pidf_digium_body_supplement.c<br>+++ b/res/res_pjsip_pidf_digium_body_supplement.c<br>@@ -114,4 +114,5 @@<br>    .load = load_module,<br>  .unload = unload_module,<br>      .load_pri = AST_MODPRI_CHANNEL_DEPEND,<br>+       .requires = "res_pjsip,res_pjsip_pubsub",<br> );<br>diff --git a/res/res_pjsip_pidf_eyebeam_body_supplement.c b/res/res_pjsip_pidf_eyebeam_body_supplement.c<br>index 4047084..6629aa3 100644<br>--- a/res/res_pjsip_pidf_eyebeam_body_supplement.c<br>+++ b/res/res_pjsip_pidf_eyebeam_body_supplement.c<br>@@ -111,4 +111,5 @@<br>        .load = load_module,<br>  .unload = unload_module,<br>      .load_pri = AST_MODPRI_CHANNEL_DEPEND,<br>+       .requires = "res_pjsip,res_pjsip_pubsub",<br> );<br>diff --git a/res/res_pjsip_publish_asterisk.c b/res/res_pjsip_publish_asterisk.c<br>index 53ee60f..13d7fd4 100644<br>--- a/res/res_pjsip_publish_asterisk.c<br>+++ b/res/res_pjsip_publish_asterisk.c<br>@@ -934,4 +934,5 @@<br>        .reload = reload_module,<br>      .unload = unload_module,<br>      .load_pri = AST_MODPRI_CHANNEL_DEPEND + 5,<br>+   .requires = "res_pjsip,res_pjsip_outbound_publish,res_pjsip_pubsub",<br> );<br>diff --git a/res/res_pjsip_pubsub.c b/res/res_pjsip_pubsub.c<br>index 1f24de0..af696b8 100644<br>--- a/res/res_pjsip_pubsub.c<br>+++ b/res/res_pjsip_pubsub.c<br>@@ -5518,4 +5518,5 @@<br>   .load = load_module,<br>  .unload = unload_module,<br>      .load_pri = AST_MODPRI_CHANNEL_DEPEND,<br>+       .requires = "res_pjsip",<br> );<br>diff --git a/res/res_pjsip_refer.c b/res/res_pjsip_refer.c<br>index 62f8b67..3100993 100644<br>--- a/res/res_pjsip_refer.c<br>+++ b/res/res_pjsip_refer.c<br>@@ -1229,4 +1229,5 @@<br>   .load = load_module,<br>  .unload = unload_module,<br>      .load_pri = AST_MODPRI_APP_DEPEND,<br>+   .requires = "res_pjsip,res_pjsip_session,res_pjsip_pubsub",<br> );<br>diff --git a/res/res_pjsip_registrar.c b/res/res_pjsip_registrar.c<br>index f0da6de..7277a5f 100644<br>--- a/res/res_pjsip_registrar.c<br>+++ b/res/res_pjsip_registrar.c<br>@@ -1134,4 +1134,5 @@<br>        .load = load_module,<br>  .unload = unload_module,<br>      .load_pri = AST_MODPRI_CHANNEL_DEPEND - 3,<br>+   .requires = "res_pjproject,res_pjsip",<br> );<br>diff --git a/res/res_pjsip_registrar_expire.c b/res/res_pjsip_registrar_expire.c<br>index fe4a60d..85e3fb8 100644<br>--- a/res/res_pjsip_registrar_expire.c<br>+++ b/res/res_pjsip_registrar_expire.c<br>@@ -150,4 +150,5 @@<br>   .load = load_module,<br>  .unload = unload_module,<br>      .load_pri = AST_MODPRI_APP_DEPEND,<br>+   .requires = "res_pjsip",<br> );<br>diff --git a/res/res_pjsip_rfc3326.c b/res/res_pjsip_rfc3326.c<br>index d49a170..8b8035e 100644<br>--- a/res/res_pjsip_rfc3326.c<br>+++ b/res/res_pjsip_rfc3326.c<br>@@ -19,7 +19,6 @@<br> /*** MODULEINFO<br>     <depend>pjproject</depend><br>        <depend>res_pjsip</depend><br>-       <depend>res_pjsip_session</depend><br>        <support_level>core</support_level><br>  ***/<br> <br>@@ -156,4 +155,5 @@<br>       .load = load_module,<br>  .unload = unload_module,<br>      .load_pri = AST_MODPRI_APP_DEPEND,<br>+   .requires = "res_pjsip",<br> );<br>diff --git a/res/res_pjsip_sdp_rtp.c b/res/res_pjsip_sdp_rtp.c<br>index 9e04119..3cc9764 100644<br>--- a/res/res_pjsip_sdp_rtp.c<br>+++ b/res/res_pjsip_sdp_rtp.c<br>@@ -1970,4 +1970,5 @@<br>   .load = load_module,<br>  .unload = unload_module,<br>      .load_pri = AST_MODPRI_CHANNEL_DRIVER,<br>+       .requires = "res_pjsip,res_pjsip_session",<br> );<br>diff --git a/res/res_pjsip_send_to_voicemail.c b/res/res_pjsip_send_to_voicemail.c<br>index 1cd28ce..06c3edc 100644<br>--- a/res/res_pjsip_send_to_voicemail.c<br>+++ b/res/res_pjsip_send_to_voicemail.c<br>@@ -236,4 +236,5 @@<br>   .load = load_module,<br>  .unload = unload_module,<br>      .load_pri = AST_MODPRI_APP_DEPEND,<br>+   .requires = "res_pjsip,res_pjsip_session",<br> );<br>diff --git a/res/res_pjsip_session.c b/res/res_pjsip_session.c<br>index 53f60cc..8247fba 100644<br>--- a/res/res_pjsip_session.c<br>+++ b/res/res_pjsip_session.c<br>@@ -4202,4 +4202,5 @@<br>         .load = load_module,<br>  .unload = unload_module,<br>      .load_pri = AST_MODPRI_APP_DEPEND,<br>+   .requires = "res_pjsip",<br> );<br>diff --git a/res/res_pjsip_sips_contact.c b/res/res_pjsip_sips_contact.c<br>index 7579be6..41b26df 100644<br>--- a/res/res_pjsip_sips_contact.c<br>+++ b/res/res_pjsip_sips_contact.c<br>@@ -104,4 +104,5 @@<br>         .load = load_module,<br>  .unload = unload_module,<br>      .load_pri = AST_MODPRI_APP_DEPEND,<br>+   .requires = "res_pjsip",<br> );<br>diff --git a/res/res_pjsip_t38.c b/res/res_pjsip_t38.c<br>index 8f1905f..7b7cd99 100644<br>--- a/res/res_pjsip_t38.c<br>+++ b/res/res_pjsip_t38.c<br>@@ -1053,4 +1053,5 @@<br>   .load = load_module,<br>  .unload = unload_module,<br>      .load_pri = AST_MODPRI_CHANNEL_DRIVER,<br>+       .requires = "res_pjsip,res_pjsip_session",<br> );<br>diff --git a/res/res_pjsip_transport_management.c b/res/res_pjsip_transport_management.c<br>index eb92eb7..acffb86 100644<br>--- a/res/res_pjsip_transport_management.c<br>+++ b/res/res_pjsip_transport_management.c<br>@@ -397,4 +397,5 @@<br>       .reload = reload_module,<br>      .unload = unload_module,<br>      .load_pri = AST_MODPRI_CHANNEL_DEPEND - 4,<br>+   .requires = "res_pjsip",<br> );<br>diff --git a/res/res_pjsip_transport_websocket.c b/res/res_pjsip_transport_websocket.c<br>index 3ce9039..af1345f 100644<br>--- a/res/res_pjsip_transport_websocket.c<br>+++ b/res/res_pjsip_transport_websocket.c<br>@@ -518,4 +518,5 @@<br>     .load = load_module,<br>  .unload = unload_module,<br>      .load_pri = AST_MODPRI_APP_DEPEND,<br>+   .requires = "res_pjsip,res_http_websocket",<br> );<br>diff --git a/res/res_pjsip_xpidf_body_generator.c b/res/res_pjsip_xpidf_body_generator.c<br>index 41f6224..f7c84db 100644<br>--- a/res/res_pjsip_xpidf_body_generator.c<br>+++ b/res/res_pjsip_xpidf_body_generator.c<br>@@ -20,7 +20,6 @@<br>        <depend>pjproject</depend><br>        <depend>res_pjsip</depend><br>        <depend>res_pjsip_pubsub</depend><br>-        <depend>res_pjsip_exten_state</depend><br>    <support_level>core</support_level><br>  ***/<br> <br>@@ -177,4 +176,5 @@<br>       .load = load_module,<br>  .unload = unload_module,<br>      .load_pri = AST_MODPRI_CHANNEL_DEPEND,<br>+       .requires = "res_pjsip,res_pjsip_pubsub",<br> );<br>diff --git a/res/res_stasis_answer.c b/res/res_stasis_answer.c<br>index 407a631..6ec50c8 100644<br>--- a/res/res_stasis_answer.c<br>+++ b/res/res_stasis_answer.c<br>@@ -73,5 +73,5 @@<br>      .support_level = AST_MODULE_SUPPORT_CORE,<br>     .load = load_module,<br>  .unload = unload_module,<br>-     .nonoptreq = "res_stasis"<br>+  .requires = "res_stasis",<br> );<br>diff --git a/res/res_stasis_device_state.c b/res/res_stasis_device_state.c<br>index 6527af4..be09b15 100644<br>--- a/res/res_stasis_device_state.c<br>+++ b/res/res_stasis_device_state.c<br>@@ -482,5 +482,5 @@<br>    .support_level = AST_MODULE_SUPPORT_CORE,<br>     .load = load_module,<br>  .unload = unload_module,<br>-     .nonoptreq = "res_stasis"<br>+  .requires = "res_stasis",<br> );<br>diff --git a/res/res_stasis_mailbox.c b/res/res_stasis_mailbox.c<br>index 5ed061d..3d0e9db 100644<br>--- a/res/res_stasis_mailbox.c<br>+++ b/res/res_stasis_mailbox.c<br>@@ -161,5 +161,5 @@<br>        .support_level = AST_MODULE_SUPPORT_CORE,<br>     .load = load_module,<br>  .unload = unload_module,<br>-     .nonoptreq = "res_stasis,res_mwi_external"<br>+ .requires = "res_stasis,res_mwi_external"<br> );<br>diff --git a/res/res_stasis_playback.c b/res/res_stasis_playback.c<br>index ca0446b..5b8256f 100644<br>--- a/res/res_stasis_playback.c<br>+++ b/res/res_stasis_playback.c<br>@@ -759,5 +759,5 @@<br>    .support_level = AST_MODULE_SUPPORT_CORE,<br>     .load = load_module,<br>  .unload = unload_module,<br>-     .nonoptreq = "res_stasis,res_stasis_recording"<br>+     .requires = "res_stasis,res_stasis_recording"<br> );<br>diff --git a/res/res_stasis_recording.c b/res/res_stasis_recording.c<br>index 56984cb..17213aa 100644<br>--- a/res/res_stasis_recording.c<br>+++ b/res/res_stasis_recording.c<br>@@ -655,6 +655,6 @@<br>    .support_level = AST_MODULE_SUPPORT_CORE,<br>     .load = load_module,<br>  .unload = unload_module,<br>-     .nonoptreq = "res_stasis",<br>+ .requires = "res_stasis",<br>   .load_pri = AST_MODPRI_APP_DEPEND<br> );<br>diff --git a/res/res_stasis_snoop.c b/res/res_stasis_snoop.c<br>index f797a9b..b234de1 100644<br>--- a/res/res_stasis_snoop.c<br>+++ b/res/res_stasis_snoop.c<br>@@ -445,5 +445,5 @@<br>  .support_level = AST_MODULE_SUPPORT_CORE,<br>     .load = load_module,<br>  .unload = unload_module,<br>-     .nonoptreq = "res_stasis"<br>+  .requires = "res_stasis",<br> );<br>diff --git a/rest-api-templates/res_ari_resource.c.mustache b/rest-api-templates/res_ari_resource.c.mustache<br>index d4ccda9..c1f680f 100644<br>--- a/rest-api-templates/res_ari_resource.c.mustache<br>+++ b/rest-api-templates/res_ari_resource.c.mustache<br>@@ -324,6 +324,6 @@<br>        .support_level = AST_MODULE_SUPPORT_CORE,<br>     .load = load_module,<br>  .unload = unload_module,<br>-     .nonoptreq = "res_ari,res_stasis",<br>+ .requires = "res_ari,res_ari_model,res_stasis",<br> );<br> {{/api_declaration}}<br>diff --git a/tests/test_ari.c b/tests/test_ari.c<br>index bce5f95..a5db228 100644<br>--- a/tests/test_ari.c<br>+++ b/tests/test_ari.c<br>@@ -573,5 +573,5 @@<br> AST_MODULE_INFO(ASTERISK_GPL_KEY, AST_MODFLAG_DEFAULT, "ARI testing",<br>         .load = load_module,<br>  .unload = unload_module,<br>-     .nonoptreq = "res_ari",<br>+    .requires = "res_ari",<br> );<br>diff --git a/tests/test_ari_model.c b/tests/test_ari_model.c<br>index caf4118..e5a96cd 100644<br>--- a/tests/test_ari_model.c<br>+++ b/tests/test_ari_model.c<br>@@ -452,4 +452,9 @@<br>   return AST_MODULE_LOAD_SUCCESS;<br> }<br> <br>-AST_MODULE_INFO_STANDARD(ASTERISK_GPL_KEY, "Skeleton (sample) Test");<br>+AST_MODULE_INFO(ASTERISK_GPL_KEY, AST_MODFLAG_DEFAULT, "Skeleton (sample) Test",<br>+        .support_level = AST_MODULE_SUPPORT_CORE,<br>+    .load = load_module,<br>+ .unload = unload_module,<br>+     .requires = "res_ari_model",<br>+);<br>diff --git a/tests/test_res_pjsip_scheduler.c b/tests/test_res_pjsip_scheduler.c<br>index da51d43..47a7034 100644<br>--- a/tests/test_res_pjsip_scheduler.c<br>+++ b/tests/test_res_pjsip_scheduler.c<br>@@ -396,4 +396,9 @@<br>     return 0;<br> }<br> <br>-AST_MODULE_INFO_STANDARD(ASTERISK_GPL_KEY, "res_pjsip scheduler test module");<br>+AST_MODULE_INFO(ASTERISK_GPL_KEY, AST_MODFLAG_DEFAULT, "res_pjsip scheduler test module",<br>+    .support_level = AST_MODULE_SUPPORT_CORE,<br>+    .load = load_module,<br>+ .unload = unload_module,<br>+     .requires = "res_pjsip",<br>+);<br>diff --git a/tests/test_res_stasis.c b/tests/test_res_stasis.c<br>index cb79fa6..077cc4c 100644<br>--- a/tests/test_res_stasis.c<br>+++ b/tests/test_res_stasis.c<br>@@ -195,5 +195,5 @@<br> AST_MODULE_INFO(ASTERISK_GPL_KEY, AST_MODFLAG_DEFAULT, "Stasis Core testing",<br>   .load = load_module,<br>  .unload = unload_module,<br>-     .nonoptreq = "res_stasis",<br>+ .requires = "res_stasis",<br> );<br>diff --git a/tests/test_stasis_endpoints.c b/tests/test_stasis_endpoints.c<br>index 134738f..42c7532 100644<br>--- a/tests/test_stasis_endpoints.c<br>+++ b/tests/test_stasis_endpoints.c<br>@@ -306,5 +306,5 @@<br> AST_MODULE_INFO(ASTERISK_GPL_KEY, AST_MODFLAG_DEFAULT, "Endpoint stasis-related testing",<br>      .load = load_module,<br>  .unload = unload_module,<br>-     .nonoptreq = "res_stasis_test",<br>+    .requires = "res_stasis_test",<br> );<br></pre><p>To view, visit <a href="https://gerrit.asterisk.org/7872">change 7872</a>. To unsubscribe, visit <a href="https://gerrit.asterisk.org/settings">settings</a>.</p><div itemscope itemtype="http://schema.org/EmailMessage"><div itemscope itemprop="action" itemtype="http://schema.org/ViewAction"><link itemprop="url" href="https://gerrit.asterisk.org/7872"/><meta itemprop="name" content="View Change"/></div></div>

<div style="display:none"> Gerrit-Project: asterisk </div>
<div style="display:none"> Gerrit-Branch: master </div>
<div style="display:none"> Gerrit-MessageType: merged </div>
<div style="display:none"> Gerrit-Change-Id: I3ad9547a0a6442409ff4e352a6d897bef2cc04bf </div>
<div style="display:none"> Gerrit-Change-Number: 7872 </div>
<div style="display:none"> Gerrit-PatchSet: 9 </div>
<div style="display:none"> Gerrit-Owner: Corey Farrell <git@cfware.com> </div>
<div style="display:none"> Gerrit-Reviewer: Corey Farrell <git@cfware.com> </div>
<div style="display:none"> Gerrit-Reviewer: George Joseph <gjoseph@digium.com> </div>
<div style="display:none"> Gerrit-Reviewer: Jenkins2 </div>
<div style="display:none"> Gerrit-Reviewer: Kevin Harwell <kharwell@digium.com> </div>
<div style="display:none"> Gerrit-Reviewer: Richard Mudgett <rmudgett@digium.com> </div>