From 90a11c4ae7cb0eb963bdd18c081c308baf34d1ba Mon Sep 17 00:00:00 2001 From: Corey Farrell <git@cfware.com> Date: Wed, 10 Oct 2018 08:09:15 -0400 Subject: [PATCH] chan_sip deprecation. This officially deprecates chan_sip in Asterisk 17+. A warning is printed upon startup or module load to tell users that they should consider migrating. chan_sip is still built by default but the default modules.conf skips loading it at startup. Very important to note we are not scheduling a time where chan_sip will be removed. The goal of this change is to accurately inform end users of the current state of chan_sip and encourage movement to the fully supported chan_pjsip. Change-Id: Icebd8848f63feab94ef882d36b2e99d73155af93 --- CHANGES | 11 ++++++++ UPGRADE.txt | 6 +++++ channels/chan_sip.c | 41 +++++++++++++++++++++++++++-- channels/sip/config_parser.c | 2 +- channels/sip/dialplan_functions.c | 2 +- channels/sip/reqresp_parser.c | 2 +- channels/sip/route.c | 2 +- channels/sip/security_events.c | 2 +- channels/sip/utils.c | 2 +- configs/samples/modules.conf.sample | 4 ++- 10 files changed, 65 insertions(+), 9 deletions(-) diff --git a/CHANGES b/CHANGES index bd1a7a794f..5bfdc5411c 100644 --- a/CHANGES +++ b/CHANGES @@ -8,6 +8,17 @@ === ============================================================================== +------------------------------------------------------------------------------ +--- Functionality changes from Asterisk 16 to Asterisk 17 -------------------- +------------------------------------------------------------------------------ + +chan_sip +------------------ + * The chan_sip module is now deprecated, users should migrate to the + replacement module chan_pjsip. See guides at the Asterisk Wiki: + https://wiki.asterisk.org/wiki/x/tAHOAQ + https://wiki.asterisk.org/wiki/x/hYCLAQ + ------------------------------------------------------------------------------ --- Functionality changes from Asterisk 16.0.0 to Asterisk 16.1.0 ------------ ------------------------------------------------------------------------------ diff --git a/UPGRADE.txt b/UPGRADE.txt index 7506af2e2f..3cf8e2784f 100644 --- a/UPGRADE.txt +++ b/UPGRADE.txt @@ -27,6 +27,12 @@ New in 17.0.0: +chan_sip: + - The chan_sip module is now deprecated, users should migrate to the + replacement module chan_pjsip. See guides at the Asterisk Wiki: + https://wiki.asterisk.org/wiki/x/tAHOAQ + https://wiki.asterisk.org/wiki/x/hYCLAQ + func_callerid: - The CALLERPRES() dialplan function, deprecated in Asterisk 1.8, has been removed. diff --git a/channels/chan_sip.c b/channels/chan_sip.c index 5097d46860..3aae905bf8 100644 --- a/channels/chan_sip.c +++ b/channels/chan_sip.c @@ -176,7 +176,7 @@ /*** MODULEINFO <use type="module">res_crypto</use> <use type="module">res_http_websocket</use> - <support_level>extended</support_level> + <support_level>deprecated</support_level> ***/ /*! \page sip_session_timers SIP Session Timers in Asterisk Chan_sip @@ -35321,6 +35321,37 @@ static const struct ast_sip_api_tech chan_sip_api_provider = { .sipinfo_send = sipinfo_send, }; +static void deprecation_notice(void) +{ + ast_log(LOG_WARNING, "chan_sip has no official maintainer and is deprecated. Migration to\n"); + ast_log(LOG_WARNING, "chan_pjsip is recommended. See guides at the Asterisk Wiki:\n"); + ast_log(LOG_WARNING, "https://wiki.asterisk.org/wiki/x/tAHOAQ\n"); + ast_log(LOG_WARNING, "https://wiki.asterisk.org/wiki/x/hYCLAQ\n"); +} + +/*! \brief Event callback which indicates we're fully booted */ +static void startup_event_cb(void *data, struct stasis_subscription *sub, struct stasis_message *message) +{ + struct ast_json_payload *payload; + const char *type; + + if (stasis_message_type(message) != ast_manager_get_generic_type()) { + return; + } + + payload = stasis_message_data(message); + type = ast_json_string_get(ast_json_object_get(payload->json, "type")); + + if (strcmp(type, "FullyBooted")) { + return; + } + + deprecation_notice(); + + stasis_unsubscribe(sub); +} + + static int unload_module(void); /*! @@ -35534,6 +35565,12 @@ static int load_module(void) ast_websocket_add_protocol("sip", sip_websocket_callback); } + if (ast_fully_booted) { + deprecation_notice(); + } else { + stasis_subscribe_pool(ast_manager_get_topic(), startup_event_cb, NULL); + } + return AST_MODULE_LOAD_SUCCESS; } @@ -35751,7 +35788,7 @@ static int unload_module(void) } AST_MODULE_INFO(ASTERISK_GPL_KEY, AST_MODFLAG_LOAD_ORDER, "Session Initiation Protocol (SIP)", - .support_level = AST_MODULE_SUPPORT_CORE, + .support_level = AST_MODULE_SUPPORT_DEPRECATED, .load = load_module, .unload = unload_module, .reload = reload, diff --git a/channels/sip/config_parser.c b/channels/sip/config_parser.c index 211f600167..64cb66af59 100644 --- a/channels/sip/config_parser.c +++ b/channels/sip/config_parser.c @@ -20,7 +20,7 @@ */ /*** MODULEINFO - <support_level>extended</support_level> + <support_level>deprecated</support_level> ***/ #include "asterisk.h" diff --git a/channels/sip/dialplan_functions.c b/channels/sip/dialplan_functions.c index 09804ce8a2..7c34fc9023 100644 --- a/channels/sip/dialplan_functions.c +++ b/channels/sip/dialplan_functions.c @@ -20,7 +20,7 @@ */ /*** MODULEINFO - <support_level>extended</support_level> + <support_level>deprecated</support_level> ***/ /*** DOCUMENTATION diff --git a/channels/sip/reqresp_parser.c b/channels/sip/reqresp_parser.c index 4d91446004..b43bed61e9 100644 --- a/channels/sip/reqresp_parser.c +++ b/channels/sip/reqresp_parser.c @@ -20,7 +20,7 @@ */ /*** MODULEINFO - <support_level>extended</support_level> + <support_level>deprecated</support_level> ***/ #include "asterisk.h" diff --git a/channels/sip/route.c b/channels/sip/route.c index 584b46b704..916c3afe43 100644 --- a/channels/sip/route.c +++ b/channels/sip/route.c @@ -20,7 +20,7 @@ */ /*** MODULEINFO - <support_level>extended</support_level> + <support_level>deprecated</support_level> ***/ #include "asterisk.h" diff --git a/channels/sip/security_events.c b/channels/sip/security_events.c index 86ba413d3c..eabc9045f4 100644 --- a/channels/sip/security_events.c +++ b/channels/sip/security_events.c @@ -25,7 +25,7 @@ */ /*** MODULEINFO - <support_level>extended</support_level> + <support_level>deprecated</support_level> ***/ #include "asterisk.h" diff --git a/channels/sip/utils.c b/channels/sip/utils.c index 45a41283b4..d53316cf15 100644 --- a/channels/sip/utils.c +++ b/channels/sip/utils.c @@ -22,7 +22,7 @@ */ /*** MODULEINFO - <support_level>extended</support_level> + <support_level>deprecated</support_level> ***/ #include "asterisk.h" diff --git a/configs/samples/modules.conf.sample b/configs/samples/modules.conf.sample index c6c0dbc2b6..793245dc9b 100644 --- a/configs/samples/modules.conf.sample +++ b/configs/samples/modules.conf.sample @@ -41,4 +41,6 @@ noload => chan_console.so noload => res_hep.so noload => res_hep_pjsip.so noload => res_hep_rtcp.so -; + +; Do not load chan_sip by default, it may conflict with res_pjsip. +noload => chan_sip.so -- GitLab