]> git.ipfire.org Git - thirdparty/asterisk.git/commitdiff
PJSIP: Enforce module load dependencies
authorKinsey Moore <kmoore@digium.com>
Thu, 16 Oct 2014 14:24:55 +0000 (14:24 +0000)
committerKinsey Moore <kmoore@digium.com>
Thu, 16 Oct 2014 14:24:55 +0000 (14:24 +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/

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

42 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_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 c58f57233b736b91bcc9db9a445dc75df299463a..7819a910e86d412418bbb92767dc1a3b8b0e016f 100644 (file)
@@ -2181,6 +2181,8 @@ static int load_module(void)
 {
        struct ao2_container *endpoints;
 
+       CHECK_PJSIP_SESSION_MODULE_LOADED();
+
        if (!(chan_pjsip_tech.capabilities = ast_format_cap_alloc(0))) {
                return AST_MODULE_LOAD_DECLINE;
        }
index 05c78b0a14f7671fd3684c6814dbdd1328d6b128..d15d015cfd7d2801b9fe09bdaf1a3e1108063282 100644 (file)
@@ -1949,4 +1949,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 128379d078db75ed0900a59b6179c0c3867c0602..9535934eb1aea3c3c5961dd4886b198e7214c281 100644 (file)
@@ -739,4 +739,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 33afb797e0ff41687601685e55dc37439aa3de32..d2cf852248a7c0584a5522effda334058ade052c 100644 (file)
@@ -638,4 +638,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 8874fe4bdbcf7e10feaaa65d5903373b2ad2f1f2..6b0946de7ae29c3ec8ab8d280a4c80c4e9c412a0 100644 (file)
@@ -160,6 +160,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 acb073d4bba2f9113be2312c1da312f5307a10f7..e01bf4862e6adcdbf061729b6d3e02cbccd85c7e 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 2a32ded24ac9ed8a6b864864264e0514a3c421c1..7bfc26ac9ada76321921ceb3d4bfaa3d7dbf8607 100644 (file)
@@ -461,6 +461,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 b4f4bdedfce6d72eb54b591189aa6f580aaa05f2..c52f01ac7611faeca9ae3fc3827598bf94b84e0f 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 f7045e594bd58f9286dcac06a24a2bc58a74ff04..fa9279389f15a364d9edc08cdd08a8dac37146b8 100644 (file)
@@ -196,6 +196,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 0e824bd7c373dd7bd5ed6be0b076c78ba687fa25..6e295905069c9d868853c15e7439a37207644bf9 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 6a1ce20ff062cefd4dcf12b06cd124c1dbb199c5..f913d2336bf48e503b15af9ce39a4ce9c69ead9f 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 902dc0276aa2c299819f59154c5dc9266f1963e1..f48fdc0792846cf56990e02a30cb7761c191a670 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 757aca2e55ec22821ba7b618ea29cb35fa641c97..d812aec054226e1834c38d46059db6ed2cf5a540 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 4b10bd38868a5c3b3abfbf8b77dd7fdf82bd97d5..3c0ea5dec9629ff17a627188006fa9bb5b2059a1 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 2e133f926e8476294fd0622d72ba442ed5886002..e3f8c11e15eb9895f847c25f5684a467b677c0a3 100644 (file)
@@ -528,6 +528,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 dc9d6aad4f4701d119e49a01fbacac41b9a21dd9..39d19917043f8254acbf96be9c7d277d3e795857 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 1f7e0bd84baa7b722c13159e53c12539de48fa91..7519b5c5cb196bb080b0a12b9acae3b9096dca4d 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 dc8c0b449570b06070079acc8e395b169808ef22..0d535679d921a47a8a7639f9abac05c3911ae25c 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 ffa3795a9bbb706aea9df15300ad6a036583cedc..f109547d6d356b0b19361af9f52a4aafbcf56b40 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 f30e49447875d09996bd8f510fd9df376827a247..b1ae6ee16328beff0e17fc38e30fc769f464047a 100644 (file)
@@ -958,6 +958,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 4e6f814d808564e73d2ef7a409547ecef81c8159..848fa2e1ecaa76f84ba2d5c8bde1b1a14fb94165 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 572421a56d5156d1c463a4f26434852649bd6842..0b8e62a084f86c639471570335ccfa35ba95f290 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 58d703f593571321f23f1db0ce74c54c24554e67..f1fa3cbfd7203f9acac741f4b96d1544ebb868d1 100644 (file)
@@ -750,6 +750,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 f0ecbbfbf82e26041224010e5f315cd9db427c81..5436ad96a58d95792d564257ea9f2f5d70bed82d 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 e7e77dbd5f83fbb2b0d1f1a8ccf3d4b123523f1d..92ef53ad27c2bffa6b5c9c1394eb51c71f11f4fb 100644 (file)
@@ -145,6 +145,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 41a4c3368da0bb9b9f3a1cbdeb9cd68d3773a08e..1b91918eb5fb50771e682bfc57002f6d431ba76d 100644 (file)
@@ -1241,6 +1241,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 28d8b589f41b130f36a354d35871e01ec07fce6b..950dd3bec95b5ca39bb25eb10521f35bed5b4d97 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 e9e1b373d5edb2257efcf5dbe5c6376329b8c43e..f396fb693770afca3058641142d4131ae3ba1e0a 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 cd4840e13a4b4c31a1294449c9c5aff0a9be7bea..7af612f1ac63621d2625ac1c1b450e6f46aaa15c 100644 (file)
@@ -118,6 +118,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 22cd01be76b021b986abc99a3edb4ced3e0074d7..813134be7d6d7a91f438a58c68e4b253bf347b60 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 042cbf5e89ff76027604c431c70965d4fc736ef0..31cbdfb90c6fb33e47c4a2299968a379c6683dd1 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 09a0ecdc1989989ccc1e35c3f5c10c5be622d5a2..a0e8d49f8544d19a69400b66da31a59e8d0960ea 100644 (file)
@@ -1867,7 +1867,11 @@ static int persistence_expires_struct2str(const void *obj, const intptr_t *args,
 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 b88396f7a404bd6f04090b5be1e78bdca5cd30cd..fac82fa4b7fb01d15a07e6b99d19d0db2ac70780 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 f7d082c18db1e156f50505d1b830656217ed3483..61f0ca55a66699c882d39de0622cfbb3a007cce4 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 53f34c614a44b7f6f1a94dcf402d645feb18957e..0645f461197b18fe64dbc212b812f405798ee0fc 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 66594fef58ebb5ba4fe96fcc517f3ffe090c6618..21593261a8a646f836177cc21e399c831e39029f 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 974363d9b52ef73da1bc16ebf163541be79741c1..343c4d5346a4e5c13e42550d1dcec47836253773 100644 (file)
@@ -1254,6 +1254,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 c8392de051df87245437d8b2f759e249dcabed08..f7734c94d98bce216065fc1ad0469fdb0b177c32 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 d5aee9b2db73f55c99b98cbf10de5eb64e663b6d..7a640c8ce8ea42714802872cb423c0068623cfd1 100644 (file)
@@ -2405,6 +2405,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 14f53235ec5b9e57b20879605525378e9a1155dc..b63a607e31be932895c6298fcba4891615481112 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 228326dd7d18a4ccc5d6228250b1807dc5d8defc..01aaabaf30f5c8850cd0aeff91c52284b81bdcc8 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 42158ef39c72c385a14b5fb8510c0114374511d7..284c07200a19dccc5a627ba89c0fe9fabef1cdcb 100644 (file)
@@ -151,6 +151,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;
        }