]> git.ipfire.org Git - thirdparty/asterisk.git/commitdiff
PJSIP: Enforce module load dependencies
authorKinsey Moore <kmoore@digium.com>
Thu, 16 Oct 2014 16:32:25 +0000 (16:32 +0000)
committerKinsey Moore <kmoore@digium.com>
Thu, 16 Oct 2014 16:32:25 +0000 (16:32 +0000)
This enforces that res_pjsip, res_pjsip_session, and res_pjsip_pubsub
have loaded properly before attempting to load any modules that depend
on them since the module loader system is not currently capable of
resolving module dependencies on its own.

ASTERISK-24312 #close
Reported by: Dafi Ni
Review: https://reviewboard.asterisk.org/r/4062/
........

Merged revisions 425690 from http://svn.asterisk.org/svn/asterisk/branches/12
........

Merged revisions 425691 from http://svn.asterisk.org/svn/asterisk/branches/13

git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@425700 65c4cc65-6c06-0410-ace0-fbb531ad65f3

43 files changed:
channels/chan_pjsip.c
include/asterisk/res_pjsip.h
include/asterisk/res_pjsip_pubsub.h
include/asterisk/res_pjsip_session.h
res/res_hep_pjsip.c
res/res_pjsip_acl.c
res/res_pjsip_authenticator_digest.c
res/res_pjsip_caller_id.c
res/res_pjsip_dialog_info_body_generator.c
res/res_pjsip_diversion.c
res/res_pjsip_dtmf_info.c
res/res_pjsip_endpoint_identifier_anonymous.c
res/res_pjsip_endpoint_identifier_ip.c
res/res_pjsip_endpoint_identifier_user.c
res/res_pjsip_exten_state.c
res/res_pjsip_header_funcs.c
res/res_pjsip_logger.c
res/res_pjsip_messaging.c
res/res_pjsip_multihomed.c
res/res_pjsip_mwi.c
res/res_pjsip_mwi_body_generator.c
res/res_pjsip_nat.c
res/res_pjsip_notify.c
res/res_pjsip_one_touch_record_info.c
res/res_pjsip_outbound_authenticator_digest.c
res/res_pjsip_outbound_registration.c
res/res_pjsip_path.c
res/res_pjsip_phoneprov_provider.c
res/res_pjsip_pidf_body_generator.c
res/res_pjsip_pidf_digium_body_supplement.c
res/res_pjsip_pidf_eyebeam_body_supplement.c
res/res_pjsip_publish_asterisk.c
res/res_pjsip_pubsub.c
res/res_pjsip_refer.c
res/res_pjsip_registrar.c
res/res_pjsip_registrar_expire.c
res/res_pjsip_rfc3326.c
res/res_pjsip_sdp_rtp.c
res/res_pjsip_send_to_voicemail.c
res/res_pjsip_session.c
res/res_pjsip_t38.c
res/res_pjsip_transport_websocket.c
res/res_pjsip_xpidf_body_generator.c

index ea55df799a6121d5433a4baf52ad430ba4700b94..f200a05d3476c12bce588448b755897da8997ffa 100644 (file)
@@ -2214,6 +2214,8 @@ static int load_module(void)
 {
        struct ao2_container *endpoints;
 
+       CHECK_PJSIP_SESSION_MODULE_LOADED();
+
        if (!(chan_pjsip_tech.capabilities = ast_format_cap_alloc(AST_FORMAT_CAP_FLAG_DEFAULT))) {
                return AST_MODULE_LOAD_DECLINE;
        }
index fdb2105cfaba033bad70c2bb7239503c41707f81..302a15d730fe36d997ba21bb0a3c6a58c8055a53 100644 (file)
@@ -1944,4 +1944,13 @@ void ast_sip_unregister_supplement(struct ast_sip_supplement *supplement);
  */
 char *ast_sip_get_debug(void);
 
+/*! \brief Determines whether the res_pjsip module is loaded */
+#define CHECK_PJSIP_MODULE_LOADED()                            \
+       do {                                                    \
+               if (!ast_module_check("res_pjsip.so")           \
+                       || !ast_sip_get_pjsip_endpoint()) {     \
+                       return AST_MODULE_LOAD_DECLINE;         \
+               }                                               \
+       } while(0)
+
 #endif /* _RES_PJSIP_H */
index aac4261c1e0d33b976950dc8172f34295add284d..d32b246af5b38dad3e602b9409c65d89621ac49c 100644 (file)
@@ -674,4 +674,13 @@ const char *ast_sip_subscription_get_body_type(struct ast_sip_subscription *sub)
  */
 const char *ast_sip_subscription_get_body_subtype(struct ast_sip_subscription *sub);
 
+/*! \brief Determines whether the res_pjsip_pubsub module is loaded */
+#define CHECK_PJSIP_PUBSUB_MODULE_LOADED()                     \
+       do {                                                    \
+               CHECK_PJSIP_MODULE_LOADED();                    \
+               if (!ast_module_check("res_pjsip_pubsub.so")) { \
+                       return AST_MODULE_LOAD_DECLINE;         \
+               }                                               \
+       } while(0)
+
 #endif /* RES_PJSIP_PUBSUB_H */
index 3344a6b381355c2952141ebaea7ff8d455265bbe..d50b431792c254b54b7c50c80211106d12ef5aa1 100644 (file)
@@ -636,4 +636,13 @@ struct ast_sip_session *ast_sip_dialog_get_session(pjsip_dialog *dlg);
  */
 void ast_sip_session_resume_reinvite(struct ast_sip_session *session);
 
+/*! \brief Determines whether the res_pjsip_session module is loaded */
+#define CHECK_PJSIP_SESSION_MODULE_LOADED()                            \
+       do {                                                            \
+               CHECK_PJSIP_MODULE_LOADED();                            \
+               if (!ast_module_check("res_pjsip_session.so")) {        \
+                       return AST_MODULE_LOAD_DECLINE;                 \
+               }                                                       \
+       } while(0)
+
 #endif /* _RES_PJSIP_SESSION_H */
index 333719de0afe508e72f5a2d71fd6e4eaf1e548f0..b5cf0b81e9e52f95bf6bc1a31a882d031adc21d5 100644 (file)
@@ -159,6 +159,8 @@ static pjsip_module logging_module = {
 
 static int load_module(void)
 {
+       CHECK_PJSIP_MODULE_LOADED();
+
        ast_sip_register_service(&logging_module);
        return AST_MODULE_LOAD_SUCCESS;
 }
index 7cb56e78c12c0ac31cf9159c0395ddc6fce3268c..8155bf8802f9703e88196dfd65d6834ed181a15b 100644 (file)
@@ -266,6 +266,8 @@ static void *acl_alloc(const char *name)
 
 static int load_module(void)
 {
+       CHECK_PJSIP_MODULE_LOADED();
+
        ast_sorcery_apply_default(ast_sip_get_sorcery(), SIP_SORCERY_ACL_TYPE,
                                  "config", "pjsip.conf,criteria=type=acl");
 
index 2688553e563ef18609cd6acb79457e633ae908d8..8a781254c3e179f7369d6c281c1aa29a45678b8a 100644 (file)
@@ -466,6 +466,8 @@ static int reload_module(void)
 
 static int load_module(void)
 {
+       CHECK_PJSIP_MODULE_LOADED();
+
        if (build_entity_id()) {
                return AST_MODULE_LOAD_DECLINE;
        }
index 3764931684f25cd7c829f9bab2f3a67299a167b1..e22ce6a09ea46cdb517c62a08faac7719f2c1055 100644 (file)
@@ -730,6 +730,8 @@ static struct ast_sip_session_supplement caller_id_supplement = {
 
 static int load_module(void)
 {
+       CHECK_PJSIP_SESSION_MODULE_LOADED();
+
        ast_sip_session_register_supplement(&caller_id_supplement);
        return AST_MODULE_LOAD_SUCCESS;
 }
index 06cff8d580f266af17df1ead2068d303ba9ffc49..d9725f4c53c5187d869fd9b017cd01fec9e29887 100644 (file)
@@ -191,6 +191,8 @@ static struct ast_sip_pubsub_body_generator dialog_info_body_generator = {
 
 static int load_module(void)
 {
+       CHECK_PJSIP_PUBSUB_MODULE_LOADED();
+
        if (ast_sip_pubsub_register_body_generator(&dialog_info_body_generator)) {
                return AST_MODULE_LOAD_DECLINE;
        }
index f8aca35f6d7544a67b277a1c9b2fa5df6777e473..a4ac157e4ee3c99335368f964e1d26dc97aad12c 100644 (file)
@@ -330,6 +330,8 @@ static struct ast_sip_session_supplement diversion_supplement = {
 
 static int load_module(void)
 {
+       CHECK_PJSIP_SESSION_MODULE_LOADED();
+
        ast_sip_session_register_supplement(&diversion_supplement);
        return AST_MODULE_LOAD_SUCCESS;
 }
index e78f7b7a34c7a92eb5770af49b43d86b741a833d..b0a6649a0bccebfc0643c7d5b6585d3b282138b8 100644 (file)
@@ -150,6 +150,8 @@ static struct ast_sip_session_supplement dtmf_info_supplement = {
 
 static int load_module(void)
 {
+       CHECK_PJSIP_SESSION_MODULE_LOADED();
+
        ast_sip_session_register_supplement(&dtmf_info_supplement);
        return AST_MODULE_LOAD_SUCCESS;
 }
index f0ea6dd50dcb01c28f574d0560d6a847034cd9a1..a7956b5896397d9c69bcb3b15c11626a7af35965 100644 (file)
@@ -108,6 +108,8 @@ static struct ast_sip_endpoint_identifier anonymous_identifier = {
 
 static int load_module(void)
 {
+       CHECK_PJSIP_MODULE_LOADED();
+
        ast_sip_register_endpoint_identifier(&anonymous_identifier);
        return AST_MODULE_LOAD_SUCCESS;
 }
index 43f1318a8b330272dcf26e16bae3636aa29e2e04..aab2c7665e08d166fe0038cd11a4e87767936209 100644 (file)
@@ -410,6 +410,8 @@ static struct ast_sip_cli_formatter_entry *cli_formatter;
 
 static int load_module(void)
 {
+       CHECK_PJSIP_MODULE_LOADED();
+
        ast_sorcery_apply_config(ast_sip_get_sorcery(), "res_pjsip_endpoint_identifier_ip");
        ast_sorcery_apply_default(ast_sip_get_sorcery(), "identify", "config", "pjsip.conf,criteria=type=identify");
 
index dba3541cace0cf03de34e30454969d03c9d8abcb..beae1cdd4591ee5a68e60f3d04a304fc7fc5baca 100644 (file)
@@ -114,6 +114,8 @@ static struct ast_sip_endpoint_identifier username_identifier = {
 
 static int load_module(void)
 {
+       CHECK_PJSIP_MODULE_LOADED();
+
        ast_sip_register_endpoint_identifier(&username_identifier);
        return AST_MODULE_LOAD_SUCCESS;
 }
index 4cc5a5881a8c5daeeb553f327fd0aaf22a7a6b68..6b8ee6c12f0ae89e7ef22f574b25b951bd559ef6 100644 (file)
@@ -465,6 +465,8 @@ static void to_ami(struct ast_sip_subscription *sub,
 
 static int load_module(void)
 {
+       CHECK_PJSIP_MODULE_LOADED();
+
        if (ast_sip_register_subscription_handler(&presence_handler)) {
                ast_log(LOG_WARNING, "Unable to register subscription handler %s\n",
                        presence_handler.event_name);
index d3a482202f6bb4cea0241b7df30a3cecb4e27961..4ab3fb1d82886525630a1ea3d4f508a18dbc3114 100644 (file)
@@ -604,6 +604,8 @@ static struct ast_sip_session_supplement header_funcs_supplement = {
 
 static int load_module(void)
 {
+       CHECK_PJSIP_SESSION_MODULE_LOADED();
+
        ast_sip_session_register_supplement(&header_funcs_supplement);
        ast_custom_function_register(&pjsip_header_function);
 
index 320bb03016f5d588fa050b915a3a2b2f1d4f685d..2e5c76c29ff61e0923b273b9e65aae61bd98ec52 100644 (file)
@@ -233,6 +233,8 @@ static const struct ast_sorcery_observer global_observer = {
 
 static int load_module(void)
 {
+       CHECK_PJSIP_MODULE_LOADED();
+
        if (ast_sorcery_observer_add(ast_sip_get_sorcery(), "global", &global_observer)) {
                ast_log(LOG_WARNING, "Unable to add global observer\n");
                return AST_MODULE_LOAD_DECLINE;
index db9752553f09846c7dbd4f5b559c5e8e6e887368..04332996ab9b00ff5bc4f75c2982428fe421f299 100644 (file)
@@ -723,6 +723,8 @@ static pjsip_module messaging_module = {
 
 static int load_module(void)
 {
+       CHECK_PJSIP_SESSION_MODULE_LOADED();
+
        if (ast_sip_register_service(&messaging_module) != PJ_SUCCESS) {
                return AST_MODULE_LOAD_DECLINE;
        }
index 30d0fd95a93a7377705b3adc4e0767f076bd55b6..38824da4e99b78e28cb4c26beaa1a0fb8c292438 100644 (file)
@@ -201,6 +201,8 @@ static int load_module(void)
 {
        pj_sockaddr addr;
 
+       CHECK_PJSIP_MODULE_LOADED();
+
        if (!pj_gethostip(pj_AF_INET(), &addr)) {
                pj_sockaddr_print(&addr, host_ipv4, sizeof(host_ipv4), 2);
        }
index bed07193e2ae88c86904c2eb9a5b91a73a5e06a1..eaf0f32afcc4c6d5b34a6d10d30a638cdcd9e8de 100644 (file)
@@ -895,6 +895,8 @@ static int reload(void)
 
 static int load_module(void)
 {
+       CHECK_PJSIP_MODULE_LOADED();
+
        if (ast_sip_register_subscription_handler(&mwi_handler)) {
                return AST_MODULE_LOAD_DECLINE;
        }
index 2020e26ded558e2a82bac720409693282c75bd89..cc558ac82eeed84685767fa0b93448657aa0cd4d 100644 (file)
@@ -94,6 +94,8 @@ static struct ast_sip_pubsub_body_generator mwi_generator = {
 
 static int load_module(void)
 {
+       CHECK_PJSIP_PUBSUB_MODULE_LOADED();
+
        if (ast_sip_pubsub_register_body_generator(&mwi_generator)) {
                return AST_MODULE_LOAD_DECLINE;
        }
index 654e51ba8961f574c04f75a8fb8ee51ba0f45c37..588734352a82b87e0cc64d7a0ccc2b29df2fe709 100644 (file)
@@ -281,6 +281,8 @@ static int unload_module(void)
 
 static int load_module(void)
 {
+       CHECK_PJSIP_SESSION_MODULE_LOADED();
+
        if (ast_sip_register_service(&nat_module)) {
                ast_log(LOG_ERROR, "Could not register NAT module for incoming and outgoing requests\n");
                return AST_MODULE_LOAD_FAILURE;
index 8b61d1346c060a4a24e169c8b07ca633e1b79641..d7e3d803b76231d022b07f5990d7af455e652006 100644 (file)
@@ -987,6 +987,8 @@ static int manager_notify(struct mansession *s, const struct message *m)
 
 static int load_module(void)
 {
+       CHECK_PJSIP_MODULE_LOADED();
+
        if (aco_info_init(&notify_cfg)) {
                return AST_MODULE_LOAD_DECLINE;
        }
index 4d744e3582ad793a631305ef164ca01da3bffca0..8b1ff9dab442459867f2f074182f24aa8b5f8441 100644 (file)
@@ -107,6 +107,8 @@ static struct ast_sip_session_supplement info_supplement = {
 
 static int load_module(void)
 {
+       CHECK_PJSIP_SESSION_MODULE_LOADED();
+
        if (ast_sip_session_register_supplement(&info_supplement)) {
                ast_log(LOG_ERROR, "Unable to register One Touch Recording supplement\n");
                return AST_MODULE_LOAD_FAILURE;
index fbd916884afdbe710a6bc883cfd4a50d5d785ce6..64238a868f6243e922ebd7fe415c5a0fba330aad 100644 (file)
@@ -146,6 +146,8 @@ static struct ast_sip_outbound_authenticator digest_authenticator = {
 
 static int load_module(void)
 {
+       CHECK_PJSIP_MODULE_LOADED();
+
        if (ast_sip_register_outbound_authenticator(&digest_authenticator)) {
                return AST_MODULE_LOAD_DECLINE;
        }
index 9fd5fe6d363de4cfbe9cdb4e362ca6584f1f7937..3e6c984b2eab524cb9ee649ec2292fe39338a7e2 100644 (file)
@@ -1239,6 +1239,8 @@ static struct ast_sip_cli_formatter_entry *cli_formatter;
 
 static int load_module(void)
 {
+       CHECK_PJSIP_MODULE_LOADED();
+
        ast_sorcery_apply_default(ast_sip_get_sorcery(), "registration", "config", "pjsip.conf,criteria=type=registration");
 
        if (ast_sorcery_object_register(ast_sip_get_sorcery(), "registration", sip_outbound_registration_alloc, NULL, sip_outbound_registration_apply)) {
index a7ad3f4ce77dd6c39f53d3f0c90e647623721bc1..d0ee5a49a5353abab0d51887805aa9b4855ab12c 100644 (file)
@@ -224,6 +224,8 @@ static struct ast_sip_session_supplement path_session_supplement = {
 
 static int load_module(void)
 {
+       CHECK_PJSIP_SESSION_MODULE_LOADED();
+
        if (ast_sip_register_supplement(&path_supplement)) {
                return AST_MODULE_LOAD_DECLINE;
        }
index 6c2c7779354c8ca1607e1ee3465518f3bf3014ef..0480f0bbd1b4b4a8050d771643aa12ff5fffa6e4 100644 (file)
@@ -370,6 +370,8 @@ static int users_apply_handler(const struct ast_sorcery *sorcery, void *obj)
 
 static int load_module(void)
 {
+       CHECK_PJSIP_MODULE_LOADED();
+
        if (!(sorcery = ast_sorcery_open())) {
                ast_log(LOG_ERROR, "Unable to open a sorcery instance.\n");
                return AST_MODULE_LOAD_DECLINE;
index e5002ceb5677e43d10cd76283504449c1c97f3c2..ef0cce599aa05ce1afa410f47195b6854498c313 100644 (file)
@@ -117,6 +117,8 @@ static struct ast_sip_pubsub_body_generator pidf_body_generator = {
 
 static int load_module(void)
 {
+       CHECK_PJSIP_PUBSUB_MODULE_LOADED();
+
        if (ast_sip_pubsub_register_body_generator(&pidf_body_generator)) {
                return AST_MODULE_LOAD_DECLINE;
        }
index eff16a85c2d4d9b53aef21cb965f95f985b1170d..86e673afa1cd2e80db368413d2c6a060c1140016 100644 (file)
@@ -95,6 +95,8 @@ static struct ast_sip_pubsub_body_supplement pidf_supplement = {
 
 static int load_module(void)
 {
+       CHECK_PJSIP_PUBSUB_MODULE_LOADED();
+
        if (ast_sip_pubsub_register_body_supplement(&pidf_supplement)) {
                return AST_MODULE_LOAD_DECLINE;
        }
index a8be55c5a185b6f2466bd36eeeebcd8a429a4024..cd590c3d37e7dda978a95a26519075f54fd7bf63 100644 (file)
@@ -94,6 +94,8 @@ static struct ast_sip_pubsub_body_supplement pidf_supplement = {
 
 static int load_module(void)
 {
+       CHECK_PJSIP_PUBSUB_MODULE_LOADED();
+
        if (ast_sip_pubsub_register_body_supplement(&pidf_supplement)) {
                return AST_MODULE_LOAD_DECLINE;
        }
index 8d4d8510d14592fd59a25a15973f6d35d42089b1..e1b095e7c6751f1155868f7e42163741154244f2 100644 (file)
@@ -856,6 +856,8 @@ static int regex_filter_handler(const struct aco_option *opt, struct ast_variabl
 
 static int load_module(void)
 {
+       CHECK_PJSIP_PUBSUB_MODULE_LOADED();
+
        ast_sorcery_apply_default(ast_sip_get_sorcery(), "asterisk-publication", "config", "pjsip.conf,criteria=type=asterisk-publication");
 
        if (ast_sorcery_object_register(ast_sip_get_sorcery(), "asterisk-publication", asterisk_publication_config_alloc, NULL, NULL)) {
index 0d9e25a9d88a6d9b2d9b4b5d966da50a631f6104..4a1076d187671cd64ec5ca322d3800183dec576a 100644 (file)
@@ -4168,7 +4168,11 @@ static int resource_event_handler(const struct aco_option *opt, struct ast_varia
 static int load_module(void)
 {
        static const pj_str_t str_PUBLISH = { "PUBLISH", 7 };
-       struct ast_sorcery *sorcery = ast_sip_get_sorcery();
+       struct ast_sorcery *sorcery;
+
+       CHECK_PJSIP_MODULE_LOADED();
+
+       sorcery = ast_sip_get_sorcery();
 
        pjsip_evsub_init_module(ast_sip_get_pjsip_endpoint());
 
index ff8ceac9ea4174fcf960a8c0e1db1fd307dd3df2..f64f77dfadaf3667bb1d2f68e7a0b7328f51a8cf 100644 (file)
@@ -20,7 +20,6 @@
        <depend>pjproject</depend>
        <depend>res_pjsip</depend>
        <depend>res_pjsip_session</depend>
-       <depend>res_pjsip_pubsub</depend>
        <support_level>core</support_level>
  ***/
 
@@ -985,6 +984,8 @@ static int load_module(void)
 {
        const pj_str_t str_norefersub = { "norefersub", 10 };
 
+       CHECK_PJSIP_SESSION_MODULE_LOADED();
+
        pjsip_replaces_init_module(ast_sip_get_pjsip_endpoint());
        pjsip_xfer_init_module(ast_sip_get_pjsip_endpoint());
        pjsip_endpt_add_capability(ast_sip_get_pjsip_endpoint(), NULL, PJSIP_H_SUPPORTED, NULL, 1, &str_norefersub);
index b5cb124ceeb0fc5a926e5bb42c97dd2799d60a18..aad3dd4a7a692b3bab20547cf6453b7c3a489db9 100644 (file)
@@ -793,6 +793,8 @@ static int load_module(void)
 {
        const pj_str_t STR_REGISTER = { "REGISTER", 8 };
 
+       CHECK_PJSIP_MODULE_LOADED();
+
        if (!(serializers = ao2_container_alloc(
                      SERIALIZER_BUCKETS, serializer_hash, serializer_cmp))) {
                return AST_MODULE_LOAD_DECLINE;
index ee168bd8fc60658694b4c22651c7c3033dadda09..256ed9e1b829ad2daad1036653a4f9cddec1e985 100644 (file)
@@ -177,6 +177,8 @@ static void contact_expiration_initialize_existing(void)
 
 static int load_module(void)
 {
+       CHECK_PJSIP_MODULE_LOADED();
+
        if (!(contact_autoexpire = ao2_container_alloc_options(AO2_ALLOC_OPT_LOCK_NOLOCK, CONTACT_AUTOEXPIRE_BUCKETS,
                contact_expiration_hash, contact_expiration_cmp))) {
                ast_log(LOG_ERROR, "Could not create container for contact auto-expiration\n");
index e0b19395355d069ddb093fcdb45e35474f458d76..3ed8de6592ccaf896d4de17b344fb66bc50bc736 100644 (file)
@@ -130,6 +130,8 @@ static struct ast_sip_session_supplement rfc3326_supplement = {
 
 static int load_module(void)
 {
+       CHECK_PJSIP_SESSION_MODULE_LOADED();
+
        ast_sip_session_register_supplement(&rfc3326_supplement);
        return AST_MODULE_LOAD_SUCCESS;
 }
index 1de675bf887d4b583258f28aa16616e9a225ebad..2aa8acc3810eeea4d55bfdae82e505fdb3e85c39 100644 (file)
@@ -1230,6 +1230,8 @@ static int unload_module(void)
  */
 static int load_module(void)
 {
+       CHECK_PJSIP_SESSION_MODULE_LOADED();
+
        ast_sockaddr_parse(&address_ipv4, "0.0.0.0", 0);
        ast_sockaddr_parse(&address_ipv6, "::", 0);
 
index 3bb5da87a699fae3828c975a44fd9f17b02cdf48..97f55d300a6dd0f590e33be17debe7260b9f05dc 100644 (file)
@@ -207,6 +207,8 @@ static struct ast_sip_session_supplement refer_supplement = {
 
 static int load_module(void)
 {
+       CHECK_PJSIP_SESSION_MODULE_LOADED();
+
        if (ast_sip_session_register_supplement(&refer_supplement)) {
                ast_log(LOG_ERROR, "Unable to register Send to Voicemail supplement\n");
                return AST_MODULE_LOAD_FAILURE;
index 1d6b36fbcae53f8246096c6e2b96bf937da44e6d..56187211fb626065714ef3e54305f763d4a7674e 100644 (file)
@@ -2415,6 +2415,8 @@ static int load_module(void)
 {
        pjsip_endpoint *endpt;
 
+       CHECK_PJSIP_MODULE_LOADED();
+
        if (!ast_sip_get_sorcery() || !ast_sip_get_pjsip_endpoint()) {
                return AST_MODULE_LOAD_DECLINE;
        }
index a031716d945c0f002c4b0940af1205aa56ffd716..d1ec07610f0a23fdee008b1fbbf2472e81a37d15 100644 (file)
@@ -850,6 +850,8 @@ static int unload_module(void)
  */
 static int load_module(void)
 {
+       CHECK_PJSIP_SESSION_MODULE_LOADED();
+
        ast_sockaddr_parse(&address_ipv4, "0.0.0.0", 0);
        ast_sockaddr_parse(&address_ipv6, "::", 0);
 
index 7de65dd858f926f5af686c5015d2df5ef3856cb2..1db36bb5a97ddf7b9a476487c3dc580c69e33ad3 100644 (file)
@@ -361,6 +361,8 @@ static struct ast_sip_session_supplement websocket_supplement = {
 
 static int load_module(void)
 {
+       CHECK_PJSIP_MODULE_LOADED();
+
        pjsip_transport_register_type(PJSIP_TRANSPORT_RELIABLE, "WS", 5060, &transport_type_ws);
        pjsip_transport_register_type(PJSIP_TRANSPORT_RELIABLE, "WSS", 5060, &transport_type_wss);
 
index e7009afdfc60fddd595140aa1a52c61fb85b2f26..43cb1e78bc3371c5e19335d74c4593306eb48cab 100644 (file)
@@ -150,6 +150,8 @@ static void unregister_all(void)
 
 static int load_module(void)
 {
+       CHECK_PJSIP_PUBSUB_MODULE_LOADED();
+
        if (ast_sip_pubsub_register_body_generator(&xpidf_body_generator)) {
                goto fail;
        }