Skip to content
Snippets Groups Projects
  1. Apr 14, 2022
    • Ben Ford's avatar
      AST-2022-001 - res_stir_shaken/curl: Limit file size and check start. · 1fdb1a6e
      Ben Ford authored
      Put checks in place to limit how much we will actually download, as well
      as a check for the data we receive at the start to ensure it begins with
      what we would expect a certificate to begin with.
      
      ASTERISK-29872
      
      Change-Id: Ifd3c6b8bd52b8b6192a04166ccce4fc8a8000b46
      1fdb1a6e
    • Joshua C. Colp's avatar
      func_odbc: Add SQL_ESC_BACKSLASHES dialplan function. · 88522c22
      Joshua C. Colp authored
      Some databases depending on their configuration using backslashes
      for escaping. When combined with the use of ' this can result in
      a broken func_odbc query.
      
      This change adds a SQL_ESC_BACKSLASHES dialplan function which can
      be used to escape the backslashes.
      
      This is done as a dialplan function instead of being always done
      as some databases do not require this, and always doing it would
      result in incorrect data being put into the database.
      
      ASTERISK-29838
      
      Change-Id: I152bf34899b96ddb09cca3e767254d8d78f0c83d
      88522c22
  2. Mar 29, 2022
  3. Mar 28, 2022
    • George Joseph's avatar
      Makefile: Disable XML doc validation · 99fa7924
      George Joseph authored
      make_xml_documentation was being called with the --validate
      flag set when it shouldn't have been.  This was causing
      build failures if neither xmllint nor xmlstarlet were installed.
      The correct behavior is to simply print a message that either
      one of those tools should be installed for validation and
      continue with the build.
      
      ASTERISK-29988
      
      Change-Id: Idc6c44114e7dd3fadae183a4e22f4fdba0b8a645
      99fa7924
  4. Mar 24, 2022
  5. Mar 17, 2022
  6. Mar 14, 2022
  7. Mar 11, 2022
    • Kfir Itzhak's avatar
      app_queue: Add QueueWithdrawCaller AMI action · 3959d20b
      Kfir Itzhak authored
      This adds a new AMI action called QueueWithdrawCaller.
      This AMI action makes it possible to withdraw a caller from a queue,
      in a safe and a generic manner.
      This can be useful for retrieving a specific call and
      dispatching it to a specific extension.
      It works by signaling the caller to exit the queue application
      whenever it can. Therefore, it is not guaranteed
      that the call will leave the queue.
      
      ASTERISK-29909 #close
      
      Change-Id: Ic15aa238e23b2884abdcaadff2fda7679e29b7ec
      3959d20b
  8. Mar 10, 2022
    • Alexei Gradinari's avatar
      res_pjsip_pubsub: update RLS to reflect the changes to the lists · 8666455b
      Alexei Gradinari authored
      This patch makes the Resource List Subscriptions (RLS) dynamic.
      The asterisk updates the current subscriptions to reflect the changes
      to the list on the subscriptions refresh. If list items are added,
      removed, updated or do not exist anymore, the asterisk regenerates
      the resource list.
      
      ASTERISK-29906 #close
      
      Change-Id: Icee8c00459a7aaa43c643d77ce6f16fb7ab037d3
      8666455b
  9. Mar 04, 2022
  10. Mar 03, 2022
    • George Joseph's avatar
      xml.c, config,c: Add stylesheets and variable list string parsing · b6e482be
      George Joseph authored
      Added functions to open, close, and apply XML Stylesheets
      to XML documents.  Although the presence of libxslt was already
      being checked by configure, it was only happening if xmldoc was
      enabled.  Now it's checked regardless.
      
      Added ability to parse a string consisting of comma separated
      name/value pairs into an ast_variable list.  The reverse of
      ast_variable_list_join().
      
      Change-Id: I1e1d149be22165a1fb8e88e2903a36bba1a6cf2e
      b6e482be
  11. Mar 01, 2022
    • George Joseph's avatar
      xmldoc: Fix issue with xmlstarlet validation · 46844112
      George Joseph authored
      Added the missing xml-stylesheet and Xinclude namespace
      declarations in pjsip_config.xml and pjsip_manager.xml.
      
      Updated make_xml_documentation to show detailed errors when
      xmlstarlet is the validator.  It's now run once with the '-q'
      option to suppress harmless/expected messages and if it actually
      fails, it's run again without '-q' but with '-e' to show
      the actual errors.
      
      Change-Id: I4bdc9d2ea6741e8d2e5eb82df60c68ccc59e1f5e
      46844112
  12. Feb 28, 2022
    • George Joseph's avatar
      core: Config and XML tweaks needed for geolocation · 777326fa
      George Joseph authored
      Added:
      
      Replace a variable in a list:
      int ast_variable_list_replace_variable(struct ast_variable **head,
          struct ast_variable *old, struct ast_variable *new);
      Added test as well.
      
      Create a "name=value" string from a variable list:
      'name1="val1",name2="val2"', etc.
      struct ast_str *ast_variable_list_join(
          const struct ast_variable *head, const char *item_separator,
          const char *name_value_separator, const char *quote_char,
          struct ast_str **str);
      Added test as well.
      
      Allow the name of an XML element to be changed.
      void ast_xml_set_name(struct ast_xml_node *node, const char *name);
      
      Change-Id: I330a5f63dc0c218e0d8dfc0745948d2812141ccb
      777326fa
    • George Joseph's avatar
      Makefile: Allow XML documentation to exist outside source files · a81e14d2
      George Joseph authored
      Moved the xmldoc build logic from the top-level Makefile into
      its own script "make_xml_documentation" in the build_tools
      directory.
      
      Created a new utility script "get_sourceable_makeopts", also in
      the build_tools directory, that dumps the top-level "makeopts"
      file in a format that can be "sourced" from shell sscripts.
      This allows scripts to easily get the values of common make
      build variables such as the location of the GREP, SED, AWK, etc.
      utilities as well as the AST* and library *_LIB and *_INCLUDE
      variables.
      
      Besides moving logic out of the Makefile, some optimizations
      were done like removing "third-party" from the list of
      subdirectories to be searched for documentation and changing some
      assignments from "=" to ":=" so they're only evaluated once.
      The speed increase is noticeable.
      
      The makeopts.in file was updated to include the paths to
      REALPATH and DIRNAME.  The ./conifgure script was setting them
      but makeopts.in wasn't including them.
      
      So...
      
      With this change, you can now place documentation in any"c"
      source file AND you can now place it in a separate XML file
      altogether.  The following are examples of valid locations:
      
      res/res_pjsip.c
          Using the existing /*** DOCUMENTATION ***/ fragment.
      
      res/res_pjsip/pjsip_configuration.c
          Using the existing /*** DOCUMENTATION ***/ fragment.
      
      res/res_pjsip/pjsip_doc.xml
          A fully-formed XML file.  The "configInfo", "manager",
          "managerEvent", etc. elements that would be in the "c"
          file DOCUMENTATION fragment should be wrapped in proper
          XML.  Example for "somemodule.xml":
      
          <?xml version="1.0" encoding="UTF-8"?>
          <!DOCTYPE docs SYSTEM "appdocsxml.dtd">
          <docs>
              <configInfo>
              ...
              </configInfo>
          </docs>
      
      It's the "appdocsxml.dtd" that tells make_xml_documentation
      that this is a documentation XML file and not some other XML file.
      It also allows many XML-capable editors to do formatting and
      validation.
      
      Other than the ".xml" suffix, the name of the file is not
      significant.
      
      As a start... This change also moves the documentation that was
      in res_pjsip.c to 2 new XML files in res/res_pjsip:
      pjsip_config.xml and pjsip_manager.xml.  This cut the number of
      lines in res_pjsip.c in half. :)
      
      Change-Id: I486c16c0b5a44d7a8870008e10c941fb19b71ade
      a81e14d2
    • George Joseph's avatar
      build: Refactor the earlier "basebranch" commit · 47106a09
      George Joseph authored
      Recap from earlier commit:  If you have a development branch for a
      major project that will receive gerrit reviews it'll probably be
      named something like "development/16/newproject" or a work branch
      based on that "development" branch.  That will necessitate
      setting "defaultbranch=development/16/newproject" in .gitreview.
      The make_version script uses that variable to construct the
      asterisk version however, which results in versions
      like "GIT-development/16/newproject-ee582a8c7b" which is probably
      not what you want.  It also constructs the URLs for downloading
      external modules with that version, which will fail.
      
      Fast-forward:
      
      The earlier attempt at adding a "basebranch" variable to
      .gitreview didn't work out too well in practice because changes
      were made to .gitreview, which is a checked-in file.  So, if
      you wanted to rebase your work branch on the base branch, rebase
      would attempt to overwrite your .gitreview with the one from
      the base branch and complain about a conflict.
      
      This is a slighltly different approach that adds three methods to
      determine the mainline branch:
      
      1.  --- MAINLINE_BRANCH from the environment
      
      If MAINLINE_BRANCH is already set in the environment, that will
      be used.  This is primarily for the Jenkins jobs.
      
      2.  --- .develvars
      
      Instead of storing the basebranch in .gitreview, it can now be
      stored in a non-checked-in ".develvars" file and keyed by the
      current branch.  So, if you were working on a branch named
      "new-feature-work" based on "development/16/new-feature" and wanted
       to push to that branch in Gerrit but wanted to pull the external
       modules for 16, you'd create the following .develvars file:
      
      [branch "new-feature-work"]
          mainline-branch = 16
      
      The .gitreview file would still look like:
      
      [gerrit]
      defaultbranch=development/16/new-feature
      
      ...which would cause any reviews pushed from "new-feature-work" to
      go to the "development/16/new-feature" branch in Gerrit.
      
      The key is that the .develvars file is NEVER checked in (it's been
      added to .gitignore).
      
      3.  --- Well Known Development Branch
      
      If you're actually working in a branch named like
      "development/<mainline_branch>/some-feature", the mainline branch
      will be parsed from it.
      
      4.  --- .gitreview
      
      If none of the earlier conditions exist, the .gitreview
      "defaultbranch" variable will be used just as before.
      
      Change-Id: I1cdeeaa0944bba3f2e01d7a2039559d0c266f8c9
      47106a09
  13. Feb 25, 2022
    • Joshua C. Colp's avatar
      jansson: Update bundled to 2.14 version. · 3771074a
      Joshua C. Colp authored
      ASTERISK-29353
      
      Change-Id: I4ea43eda1691565563a4c03ef37166952d211b2b
      3771074a
    • Naveen Albert's avatar
      ami: Allow events to be globally disabled. · 59b25e9d
      Naveen Albert authored
      The disabledevents setting has been added to the general section
      in manager.conf, which allows users to specify events that
      should be globally disabled and not sent to any AMI listeners.
      
      This allows for processing of these AMI events to end sooner and,
      for frequent AMI events such as Newexten which users may not have
      any need for, allows them to not be processed. Additionally, it also
      cleans up core debug as previously when debug was 3 or higher,
      the debug was constantly spammed by "Analyzing AMI event" messages
      along with a complete dump of the event contents (often for Newexten).
      
      ASTERISK-29853 #close
      
      Change-Id: Id42b9a3722a1f460d745cad1ebc47c537fd4f205
      59b25e9d
    • Naveen Albert's avatar
      func_channel: Add lastcontext and lastexten. · 42525b0f
      Naveen Albert authored
      Adds the lastcontext and lastexten channel fields to allow users
      to access previous dialplan execution locations.
      
      ASTERISK-29840 #close
      
      Change-Id: Ib455fe300cc8e9a127686896ee2d0bd11e900307
      42525b0f
    • Naveen Albert's avatar
      channel.c: Clean up debug level 1. · 7f123b31
      Naveen Albert authored
      Although there are 10 debugs levels, over time,
      many current debug calls have come to use
      inappropriately low debug levels. In particular,
      a select few debug calls (currently all debug 1)
      can result in thousands of debug messages per minute
      for a single call.
      
      This can adds a lot of noise to core debug
      which dilutes the value in having different
      debug levels in the first place, as these
      log messages are from the core internals are
      are better suited for higher debug levels.
      
      Some debugs levels are thus adjusted so that
      debug level 1 is not inappropriately overloaded
      with these extremely high-volume and general
      debug messages.
      
      ASTERISK-29897 #close
      
      Change-Id: I55a71598993552d3d64a401a35ee99474770d4b4
      7f123b31
    • Naveen Albert's avatar
      configs, LICENSE: remove pbx.digium.com. · 8631e00a
      Naveen Albert authored
      pbx.digium.com no longer accepts IAX2 calls and
      there are no plans for it to come back.
      
      Accordingly, nonworking IAX2 URIs are removed from
      both the LICENSE file and the sample config.
      
      ASTERISK-29923 #close
      
      Change-Id: I257c54d4d812ed6b4bd4cbec2cd7ebe2b87b5bad
      8631e00a
    • Naveen Albert's avatar
      documentation: Add since tag to xmldocs DTD · 3499aea8
      Naveen Albert authored
      Adds the since tag to the documentation DTD so
      that individual applications, functions, etc.
      can now specify when they were added to Asterisk.
      
      This tag is added at the individual application,
      function, etc. level as opposed to at the module
      level because modules can expand over time as new
      functionality is added, and granularity only
      to the module level would generally not be useful.
      
      This enables the ability to more easily determine
      when new functionality was added to Asterisk, down
      to minor version as opposed to just by major version.
      This makes it easier for users to write more portable
      dialplan if desired to not use functionality that may
      not be widely available yet.
      
      ASTERISK-29896 #close
      
      Change-Id: Ibbb35c702d8038bdc3fd0a944fbfa69384cc15d5
      3499aea8
  14. Feb 24, 2022
    • Naveen Albert's avatar
      asterisk: Add macro for curl user agent. · 63db7505
      Naveen Albert authored
      Currently, each module that uses libcurl duplicates the standard
      Asterisk curl user agent.
      
      This adds a global macro for the Asterisk user agent used for
      curl requests to eliminate this duplication.
      
      ASTERISK-29861 #close
      
      Change-Id: I9fc37935980384b4daf96ae54fa3c9adb962ed2d
      63db7505
  15. Feb 23, 2022
    • Naveen Albert's avatar
      res_stir_shaken: refactor utility function · 74742cdb
      Naveen Albert authored
      Refactors temp file utility function into file.c.
      
      ASTERISK-29809 #close
      
      Change-Id: Ife478708c8f2b127239cb73c1755ef18c0bf431b
      74742cdb
    • Naveen Albert's avatar
      app_voicemail: Emit warning if asking for nonexistent mailbox. · 2016b331
      Naveen Albert authored
      Currently, if VoiceMailMain is called with a mailbox, if that
      mailbox doesn't exist, then the application silently falls back
      to prompting the user for the mailbox, as if no arguments were
      provided.
      
      However, if a specific mailbox is requested and it doesn't exist,
      then no warning at all is emitted.
      
      This fixes this behavior to now warn if a specifically
      requested mailbox could not be accessed, before falling back to
      prompting the user for the correct mailbox.
      
      ASTERISK-29920 #close
      
      Change-Id: Ib4093b88cd661a2cabc5d685777d4e2f0ebd20a4
      2016b331
    • Alexei Gradinari's avatar
      res_pjsip_pubsub: fix Batched Notifications stop working · 1cc1fb54
      Alexei Gradinari authored
      If Subscription refresh occurred between when the batched notification
      was scheduled and the serialized notification was to be sent,
      then new schedule notification task would never be added.
      
      There are 2 threads:
      
      thread #1. ast_sip_subscription_notify is called,
      if notification_batch_interval then call schedule_notification.
      1.1. The schedule_notification checks notify_sched_id > -1
      not true, then
      send_scheduled_notify = 1
      notify_sched_id =
        ast_sched_add(sched, sub_tree->notification_batch_interval, sched_cb....
      1.2. The sched_cb pushes task serialized_send_notify to serializer
      and returns 0 which means no reschedule.
      1.3. The serialized_send_notify checks send_scheduled_notify if it's false
      the just returns. BUT notify_sched_id is still set, so no more ast_sched_add.
      
      thread #2. pubsub_on_rx_refresh is called
      2.1 it pushes serialized_pubsub_on_refresh_timeout to serializer
      2.2. The serialized_pubsub_on_refresh_timeout calls pubsub_on_refresh_timeout
      which calls send_notify
      2.3. The send_notify set send_scheduled_notify = 0;
      
      The serialized_send_notify should always unset notify_sched_id.
      
      ASTERISK-29904 #close
      
      Change-Id: Ifc50c00b213c396509e10326a1ed89d8cf8c7875
      1cc1fb54
    • Naveen Albert's avatar
      func_db: Add validity check for key names when writing. · 26141981
      Naveen Albert authored
      Adds a simple sanity check for key names when users are
      writing data to AstDB. This captures four cases indicating
      malformed keynames that generally result in bad data going
      into the DB that the user didn't intend: an empty key name,
      a key name beginning or ending with a slash, and a key name
      containing two slashes in a row. Generally, this is the
      result of a variable being used in the key name being empty.
      
      If a malformed key name is detected, a warning is emitted
      to indicate the bug in the dialplan.
      
      ASTERISK-29925 #close
      
      Change-Id: Ifc08a9fe532a519b1b80caca1aafed7611d573bf
      26141981
    • Alexei Gradinari's avatar
      res_pjsip_pubsub: provide a display name for RLS subscriptions · e2423c6f
      Alexei Gradinari authored
      Whereas BLFs allow to show a display name for each RLS entry,
      the asterisk provides only the extension now.
      This is not end user friendly.
      
      This commit adds a new resource_list option, resource_display_name,
      to indicate whether display name of resource or the resource name being
      provided for RLS entries.
      If this option is enabled, the Display Name will be provided.
      This option is disabled by default to remain the previous behavior.
      If the 'event' set to 'presence' or 'dialog' the non-empty HINT name
      will be set as the Display Name.
      The 'message-summary' is not supported yet.
      
      ASTERISK-29891 #close
      
      Change-Id: Ic5306bd5a7c73d03f5477fe235e9b0f41c69c681
      e2423c6f
    • Naveen Albert's avatar
      cli: Add core dump info to core show settings. · 4358c776
      Naveen Albert authored
      Adds two pieces of information to the core show settings command
      which are useful in the context of getting backtraces.
      
      The first is to display whether or not Asterisk would generate
      a core dump if it were to crash.
      
      The second is to show the current running directory of Asterisk.
      
      ASTERISK-29866 #close
      
      Change-Id: Ic42c0a9ecc233381aad274d86c62808d1ebb4d83
      4358c776
    • Naveen Albert's avatar
      documentation: Adds missing default attributes. · 74e9b60b
      Naveen Albert authored
      The configObject tag contains a default attribute which
      allows the default value to be specified, if applicable.
      This allows for the default value to show up specially on
      the wiki in a way that is clear to users.
      
      There are a couple places in the tree where default values
      are included in the description as opposed to as attributes,
      which means these can't be parsed specially for the wiki.
      These are changed to use the attribute instead of being
      included in the text description.
      
      ASTERISK-29898 #close
      
      Change-Id: I9d7ea08f50075f41459ea7b76654906b674ec755
      74e9b60b
    • Naveen Albert's avatar
      app_mp3: Document and warn about HTTPS incompatibility. · da801e24
      Naveen Albert authored
      mpg123 doesn't support HTTPS, but the MP3Player application
      doesn't document this or warn the user about this. HTTPS
      streams have become more common nowadays and users could
      reasonably try to play them without being aware they should
      use the HTTP stream instead.
      
      This adds documentation to note this limitation. It also
      throws a warning if users try to use the HTTPS stream to
      tell them to use the HTTP stream instead.
      
      ASTERISK-29900 #close
      
      Change-Id: Ie3b029be5258c5a701f71ed3b1a7a80d1e03b827
      da801e24
  16. Feb 17, 2022
    • Naveen Albert's avatar
      app_mf: Add max digits option to ReceiveMF. · 332eed3a
      Naveen Albert authored
      Adds an option to the ReceiveMF application to allow specifying a
      maximum number of digits.
      
      Originally, this capability was not added to ReceiveMF as it was
      with ReceiveSF because typically a ST digit is used to denote that
      sending of digits is complete. However, there are certain signaling
      protocols which simply transmit a digit (such as Expanded In-Band
      Signaling) and for these, it's necessary to be able to read a
      certain number of digits, as opposed to until receiving a ST digit.
      
      This capability is added as an option, as opposed to as a parameter,
      to remain compatible with existing usage (and not shift the
      parameters).
      
      ASTERISK-29877 #close
      
      Change-Id: I4229167c9aa69b87402c3c2a9065bd8dfa973a0b
      332eed3a
  17. Feb 14, 2022
    • Mike Bradeen's avatar
      taskprocessor.c: Prevent crash on graceful shutdown · 9e71f7fe
      Mike Bradeen authored
      When tps_shutdown is called as part of the cleanup process there is a
      chance that one of the taskprocessors that references the
      tps_singletons object is still running.  The change is to allow for
      tps_shutdown to check tps_singleton's container count and give the
      running taskprocessors a chance to finish.  If after
      AST_TASKPROCESSOR_SHUTDOWN_MAX_WAIT (10) seconds there are still
      container references we shutdown anyway as this is most likely a bug
      due to a taskprocessor not being unreferenced.
      
      ASTERISK-29365
      
      Change-Id: Ia932fc003d316389b9c4fd15ad6594458c9727f1
      9e71f7fe
  18. Feb 11, 2022
    • Alexei Gradinari's avatar
      app_queue: load queues and members from Realtime when needed · fcdeb3e5
      Alexei Gradinari authored
      There are a lot of Queue AMI actions and Queue applications
      which do not load queue and queue members from Realtime.
      
      AMI actions
      QueuePause - if queue not in memory - response "Interface not found".
      QueueStatus/QueueSummary - if queue not in memory - empty response.
      
      Applications:
      PauseQueueMember - if queue not in memory
      	Attempt to pause interface %s, not found
      UnpauseQueueMember - if queue not in memory
      	Attempt to unpause interface xxxxx, not found
      
      This patch adds a new function load_realtime_queues
      which loads queue and queue members for desired queue
      or all queues and all members if param 'queuename' is NULL or empty.
      Calls the function load_realtime_queues when needed.
      
      Also this patch fixes leak of ast_config in function set_member_value.
      
      Also this patch fixes incorrect LOG_WARNING when pausing/unpausing
      already paused/unpaused member.
      The function ast_update_realtime returns 0 when no record modified.
      So 0 is not an error to warn about.
      
      ASTERISK-29873 #close
      ASTERISK-18416 #close
      ASTERISK-27597 #close
      
      Change-Id: I554ee0eebde93bd8f49df7f84b74acb21edcb99c
      fcdeb3e5
    • Mark Petersen's avatar
      res_prometheus.c: missing module dependency · 6659e502
      Mark Petersen authored
      added res_pjsip_outbound_registration to .requires in AST_MODULE_INFO
      which fixes issue with module crashes on load "FRACK!, Failed assertion"
      
      ASTERISK-29871
      
      Change-Id: Ia0f49d048427a40e1b763296b834a52a03610096
      6659e502
  19. Feb 07, 2022
Loading