app_macro deprecation.
authorCorey Farrell <git@cfware.com>
Mon, 16 Oct 2017 15:53:07 +0000 (11:53 -0400)
committerCorey Farrell <git@cfware.com>
Wed, 18 Oct 2017 14:54:58 +0000 (09:54 -0500)
* Mark the module deprecated.
* Disable the module by default.
* Produce a warning the first time a macro is used.
* Note deprecation related options in app_dial and app_queue.

ASTERISK-27350

Change-Id: I560ea043bacdbc5534a17d97854273d52c2f1bdc

CHANGES
UPGRADE.txt
apps/app_dial.c
apps/app_macro.c
apps/app_queue.c

diff --git a/CHANGES b/CHANGES
index 63c8c6f..68617a4 100644 (file)
--- a/CHANGES
+++ b/CHANGES
 --- Functionality changes from Asterisk 15 to Asterisk 16 --------------------
 ------------------------------------------------------------------------------
 
+app_macro
+------------------
+ * The app_macro module is now deprecated and by default it is no longer
+   built.  Users should migrate to app_stack (Gosub).  A warning is logged
+   the first time any Macro is used.
+
 chan_sip
 ------------------
  * New function SIP_HEADERS() enumerates all headers in the incoming INVITE.
index 1fe82c0..39c0f8c 100644 (file)
 
 New in 16.0.0:
 
+app_macro:
+ - The app_macro module is now deprecated and by default it is no longer
+   built.  Users should migrate to app_stack (Gosub).  A warning is logged
+   the first time any Macro is used.
+
 New in 15.0.0:
 
 Build System:
index 847a095..8c51f3f 100644 (file)
                                        <warning><para>Be aware of the limitations that macros have, specifically with regards to use of
                                        the <literal>WaitExten</literal> application. For more information, see the documentation for
                                        <literal>Macro()</literal>.</para></warning>
+                                       <note>
+                                               <para>Macros are deprecated, GoSub should be used instead,
+                                               see the <literal>U</literal> option.</para>
+                                       </note>
                                </option>
                                <option name="n">
                                        <argument name="delete">
index 4ef5252..c6f051e 100644 (file)
@@ -26,7 +26,8 @@
  */
 
 /*** MODULEINFO
-       <support_level>core</support_level>
+       <defaultenabled>no</defaultenabled>
+       <support_level>deprecated</support_level>
        <replacement>app_stack (GoSub)</replacement>
  ***/
 
@@ -250,12 +251,19 @@ static int _macro_exec(struct ast_channel *chan, const char *data, int exclusive
        char *save_macro_offset;
        int save_in_subroutine;
        struct ast_datastore *macro_store = ast_channel_datastore_find(chan, &macro_ds_info, NULL);
+       static int deprecation_notice = 0;
 
        if (ast_strlen_zero(data)) {
                ast_log(LOG_WARNING, "Macro() requires arguments. See \"core show application macro\" for help.\n");
                return -1;
        }
 
+       if (!deprecation_notice) {
+               deprecation_notice = 1;
+               ast_log(LOG_WARNING, "Macro() is deprecated and will be removed from a future version of Asterisk.\n");
+               ast_log(LOG_WARNING, "Dialplan should be updated to use Gosub instead.\n");
+       }
+
        do {
                if (macro_store) {
                        break;
@@ -665,4 +673,4 @@ static int load_module(void)
        return res;
 }
 
-AST_MODULE_INFO_STANDARD(ASTERISK_GPL_KEY, "Extension Macros");
+AST_MODULE_INFO_STANDARD_DEPRECATED(ASTERISK_GPL_KEY, "Extension Macros");
index e3a4e22..801695f 100644 (file)
                        </parameter>
                        <parameter name="macro">
                                <para>Will run a macro on the called party's channel (the queue member) once the parties are connected.</para>
+                               <note>
+                                       <para>Macros are deprecated, GoSub should be used instead.</para>
+                               </note>
                        </parameter>
                        <parameter name="gosub">
                                <para>Will run a gosub on the called party's channel (the queue member) once the parties are connected.</para>