Skip to content
Snippets Groups Projects
  1. Aug 01, 2022
    • Naveen Albert's avatar
      general: Remove obsolete SVN references. · 165368bf
      Naveen Albert authored
      There are a handful of files in the tree that
      reference an SVN link for the coding guidelines.
      
      This removes these because the links are dead
      and the vast majority of source files do not
      contain these links, so this is more consistent.
      
      app_skel still maintains an (up to date) link
      to the coding guidelines.
      
      ASTERISK-30159 #close
      
      Change-Id: I35bbb20f66982e98099cff3029ede20091ffdac7
      165368bf
    • Naveen Albert's avatar
      app_confbridge: Add missing AMI documentation. · 2d8f2696
      Naveen Albert authored
      Documents the ConfbridgeListRooms AMI response,
      which is currently not documented.
      
      ASTERISK-30020 #close
      
      Change-Id: Id6fff7a936244bae7b52686301eb740c1169cdea
      2d8f2696
    • Naveen Albert's avatar
      app_meetme: Add missing AMI documentation. · 4af88150
      Naveen Albert authored
      The MeetmeList and MeetmeListRooms AMI
      responses are currently completely undocumented.
      This adds documentation for these responses.
      
      ASTERISK-30018 #close
      
      Change-Id: Id93135b7edf01de6f8fba266e2122989dc8996b8
      4af88150
  2. Jul 27, 2022
    • Naveen Albert's avatar
      func_srv: Document field parameter. · 83912496
      Naveen Albert authored
      Adds missing documentation for the field parameter
      for the SRVRESULT function.
      
      ASTERISK-30151
      Reported by: Chris Young
      
      Change-Id: I4385a2e0892a07e30dea1a8a0588e2c1bea2b1f1
      83912496
  3. Jul 26, 2022
    • Naveen Albert's avatar
      pbx_functions.c: Manually update ast_str strlen. · c771e2dd
      Naveen Albert authored
      When ast_func_read2 is used to read a function using
      its read function (as opposed to a native ast_str read2
      function), the result is copied directly by the function
      into the ast_str buffer. As a result, the ast_str length
      remains initialized to 0, which is a bug because this is
      not the real string length.
      
      This can cascade and have issues elsewhere, such as when
      reading substrings of functions that only register read
      as opposed to read2 callbacks. In this case, since reading
      ast_str_strlen returns 0, the returned substring is empty
      as opposed to the actual substring. This has caused
      the ast_str family of functions to behave inconsistently
      and erroneously, in contrast to the pbx_variables substitution
      functions which work correctly.
      
      This fixes this issue by manually updating the ast_str length
      when the result is copied directly into the ast_str buffer.
      
      Additionally, an assertion and a unit test that previously
      exposed these issues are added, now that the issue is fixed.
      
      ASTERISK-29966 #close
      
      Change-Id: I4e2dba41410f9d4dff61c995d2ca27718248e07f
      c771e2dd
  4. Jul 24, 2022
    • Sergey V. Lobanov's avatar
      build: fix bininstall launchd issue on cross-platform build · f645157a
      Sergey V. Lobanov authored
      configure script detects /sbin/launchd, but the result of this
      check is not used in Makefile (bininstall). Makefile also detects
      /sbin/launchd file to decide if it is required to install
      safe_asterisk.
      
      configure script correctly detects cross compile build and sets
      PBX_LAUNCHD=0
      
      In case of building asterisk on MacOS host for Linux target using
      external toolchain (e.g. OpenWrt toolchain), bininstall does not
      install safe_asterisk (due to /sbin/launchd detection in Makefile),
      but it is required on target (Linux).
      
      This patch adds HAVE_SBIN_LAUNCHD=@PBX_LAUNCHD@ to makeopts.in to
      use the result of /sbin/launchd detection from configure script in
      Makefile.
      Also this patch uses HAVE_SBIN_LAUNCHD in Makefile (bininstall) to
      decide if it is required to install safe_asterisk.
      
      ASTERISK-29905 #close
      
      Change-Id: Iff61217276cd188f43f51ef4cdbffe39d9f07f65
      f645157a
  5. Jul 20, 2022
  6. Jul 14, 2022
    • Michael Neuhauser's avatar
      res_pjsip: delay contact pruning on Asterisk start · 37c16f9e
      Michael Neuhauser authored
      Move the call to ast_sip_location_prune_boot_contacts() *after* the call
      to ast_res_pjsip_init_options_handling() so that
      res/res_pjsip/pjsip_options.c is informed about the contact deletion and
      updates its sip_options_contact_statuses list. This allows for an AMI
      event to be sent by res/res_pjsip/pjsip_options.c if the endpoint
      registers again from the same remote address and port (i.e., same URI)
      as used before the Asterisk restart.
      
      ASTERISK-30109
      Reported-by: Michael Neuhauser
      
      Change-Id: I1ba4478019e4931a7085f62708d9b66837e901a8
      37c16f9e
    • Naveen Albert's avatar
      chan_dahdi: Fix buggy and missing Caller ID parameters · f2f397c1
      Naveen Albert authored
      There are several things wrong with analog Caller ID
      handling that are fixed by this commit:
      
      callerid.c's Caller ID generation function contains the
      logic to use the presentation to properly send the proper
      Caller ID. However, currently, DAHDI does not pass any
      presentation information to the Caller ID module, which
      means that presentation is completely ignored on all calls.
      This means that lines could be getting Caller ID information
      they aren't supposed to.
      
      Part of the reason this has been obscured is because the
      simple switch logic for handling the built in *67 and *82
      is completely wrong. Rather than modifying the presentation
      for the call accordingly (which is what it's supposed to do),
      it simply blanks out the Caller ID or fills it in. This is
      wrong, so wrong that it makes a mockery of the specification.
      Additionally, it would leave to the "UNAVAILABLE" disposition
      being used for Caller ID generation as opposed to the "PRIVATE"
      disposition that it should have been using. This is now fixed
      to only update the presentation and not modify the number and
      name, so that the simple switch *67/*82 work correctly.
      
      Next, sig_analog currently only copies over the name and number,
      nothing else, when it is filling in a duplicated caller id
      structure. Thus, we also now copy over the presentation
      information so that is available for the Caller ID spill.
      Additionally, this meant that "valid" was implicitly 0,
      and as such presentation would always fail to "Unavailable".
      The validity is therefore also copied over so it can be used
      by ast_party_id_presentation.
      
      As part of this fix, new API is added so that all the relevant
      Caller ID information can be passed in to the Caller ID generation
      functions. Parameters that are also completely missing from the
      Caller ID spill have also been added, to enhance the compatibility,
      correctness, and completeness of the Asterisk Caller ID implementation.
      
      ASTERISK-29991 #close
      
      Change-Id: Icc44a5e09979916f4c18a440f96e10dc1c76ae15
      f2f397c1
    • Sam Banks's avatar
      queues.conf.sample: Correction of typo · be6a03f6
      Sam Banks authored
      ASTERISK-30126 #close
      
      Change-Id: I009c4dcbf9338a13e3baf87b52a5bbe4f9f81a42
      be6a03f6
    • Naveen Albert's avatar
      chan_dahdi: Add POLARITY function. · 8a214170
      Naveen Albert authored
      Adds a POLARITY function which can be used to
      retrieve the current polarity of an FXS channel
      as well as set the polarity of an FXS channel
      to idle or reverse at any point during a call.
      
      ASTERISK-30000 #close
      
      Change-Id: If6f50998f723e4484bf68e2473f5cedfeaf9b8f1
      8a214170
  7. Jul 13, 2022
    • Mike Bradeen's avatar
      Makefile: Avoid git-make user conflict · 7cc026b3
      Mike Bradeen authored
      make_version now silently checks if the required git commands will
      fail.  If they do, then return UNKNOWN__git_check_fail to
      distinguish this failure from other UNKNOWN__ version failures
      
      Makefile checks for this value on install and exits out with
      instructions
      
      ASTERISK-30029
      
      Change-Id: If8f10cac8f509c08981120f17555762342020221
      7cc026b3
    • Naveen Albert's avatar
      app_confbridge: Always set minimum video update interval. · 2843e567
      Naveen Albert authored
      Currently, if multiple video-enabled ConfBridges are
      conferenced together, we immediately get into a scenario
      where an infinite sequence of video updates fills up
      the taskprocessor queue and causes memory consumption
      to climb unabated until Asterisk is killed. This is due
      to the core bridging mechanism that provides video updates
      (softmix_bridge_write_control in bridge_softmix.c)
      continously updating all the channels in the bridge with
      video updates.
      
      The logic to do so in the core is that the video updates
      should be provided if the video_update_discard property
      for the bridge is 0, or if enough time has elapsed since
      the last video update. Thus, we already have a safeguard
      built in to ensure the scenario described above does not
      happen. Currently, however, this safeguard is not being
      adequately ensured.
      
      In app_confbridge, the video_update_discard property
      defaults to 2000, which is a healthy value that should
      completely prevent this issue. However, this value is
      only set onto the bridge in the SFU video mode. This
      leaves video modes such as follow_talker completely
      vulnerable, since video_update_discard will actually
      be 0, since the default or set value was never applied.
      As a result, the core bridging mechanism will always
      try to provide video updates regardless of when the last
      one was sent.
      
      To prevent this issue from happening, we now always
      set the video_update_discard property on the bridge
      with the value from the bridge profile. The app_confbridge
      defaults will thus ensure that infinite video updates
      no longer happen in any video mode.
      
      ASTERISK-29907 #close
      
      Change-Id: I4accb2536ac62797950468e9930f12ef7dd486b2
      2843e567
    • Sean Bright's avatar
      pbx.c: Simplify ast_context memory management. · d25bf55d
      Sean Bright authored
      Allocate all of the ast_context's character data in the structure's
      flexible array member and eliminate the clunky fake_context. This will
      simplify future changes to ast_context.
      
      Change-Id: I98357de75d8ac2b3c4c9f201223632e6901021ea
      d25bf55d
    • George Joseph's avatar
      geoloc_eprofile.c: Fix setting of loc_src in set_loc_src() · 80d6f5eb
      George Joseph authored
      line 196:    loc_src = '\0';
      should have been
      line 196:    *loc_src = '\0';
      
      The issue was caught by the gcc optimizer complaining that
      loc_src had a zero length because the pointer itself was being
      set to NULL instead of the _contents_ of the pointer being set
      to the NULL terminator.
      
      ASTERISK-30138
      Reported-by: Sean Bright
      
      Change-Id: Id247be113cc8510f043ca053d5b4f5f3d32acd29
      80d6f5eb
  8. Jul 12, 2022
    • George Joseph's avatar
      Geolocation: chan_pjsip Capability Preview · 1fa568e7
      George Joseph authored
      This commit adds res_pjsip_geolocation which gives chan_pjsip
      the ability to use the core geolocation capabilities.
      
      This commit message is intentionally short because this isn't
      a simple capability.  See the documentation at
      https://wiki.asterisk.org/wiki/display/AST/Geolocation
      for more information.
      
      THE CAPABILITIES IMPLEMENTED HERE MAY CHANGE BASED ON
      USER FEEDBACK!
      
      ASTERISK-30128
      
      Change-Id: Ie2e2bcd87243c2cfabc43eb823d4427c7086f4d9
      1fa568e7
    • George Joseph's avatar
      Geolocation: Core Capability Preview · 639d72e9
      George Joseph authored
      This commit adds res_geolocation which creates the core capabilities
      to manipulate Geolocation information on SIP INVITEs.
      
      An upcoming commit will add res_pjsip_geolocation which will
      allow the capabilities to be used with the pjsip channel driver.
      
      This commit message is intentionally short because this isn't
      a simple capability.  See the documentation at
      https://wiki.asterisk.org/wiki/display/AST/Geolocation
      for more information.
      
      THE CAPABILITIES IMPLEMENTED HERE MAY CHANGE BASED ON
      USER FEEDBACK!
      
      ASTERISK-30127
      
      Change-Id: Ibfde963121b1ecf57fd98ee7060c4f0808416303
      639d72e9
    • Naveen Albert's avatar
      general: Fix various typos. · bcc18ca9
      Naveen Albert authored
      ASTERISK-30089 #close
      
      Change-Id: I1f5db911fd05a3a211c522c13e990fa1d0e62275
      bcc18ca9
  9. Jul 11, 2022
    • Kevin Harwell's avatar
      cel_odbc & res_config_odbc: Add support for SQL_DATETIME field type · 4cbe12d6
      Kevin Harwell authored
      See also: ASTERISK_30023
      
      ASTERISK-30096 #close
      patches:
        inline on issue - submitted by Morvai Szabolcs
      
      Change-Id: I79c0b74862100acd9c8319dca5cc456a654d02eb
      4cbe12d6
    • Naveen Albert's avatar
      chan_iax2: Allow compiling without OpenSSL. · 5f60caa4
      Naveen Albert authored
      ASTERISK_30007 accidentally made OpenSSL a
      required depdendency. This adds an ifdef so
      the relevant code is compiled only if OpenSSL
      is available, since it only needs to be executed
      if OpenSSL is available anyways.
      
      ASTERISK-30083 #close
      
      Change-Id: Iad05c1a9a8bd2a48e7edf8d234eaa9f80779e34d
      5f60caa4
    • Joshua C. Colp's avatar
      websocket / aeap: Handle poll() interruptions better. · 68bcf4c4
      Joshua C. Colp authored
      A sporadic test failure was happening when executing the AEAP
      Websocket transport tests. It was originally thought this was
      due to things not getting cleaned up fast enough, but upon further
      investigation I determined the underlying cause was poll()
      getting interrupted and this not being handled in all places.
      
      This change adds EINTR and EAGAIN handling to the Websocket
      client connect code as well as the AEAP Websocket transport code.
      If either occur then the code will just go back to waiting
      for data.
      
      The originally disabled failure test case has also been
      re-enabled.
      
      ASTERISK-30099
      
      Change-Id: I1711a331ecf5d35cd542911dc6aaa9acf1e172ad
      68bcf4c4
  10. Jul 08, 2022
    • Naveen Albert's avatar
      res_cliexec: Add dialplan exec CLI command. · f5680a75
      Naveen Albert authored
      Adds a CLI command similar to "dialplan eval function" except for
      applications: "dialplan exec application", useful for quickly
      testing certain application behavior directly from the CLI
      without writing any dialplan.
      
      ASTERISK-30062 #close
      
      Change-Id: I42e9fa9b60746c21450d40f99a026d48d2486dde
      f5680a75
    • Trevor Peirce's avatar
      features: Update documentation for automon and automixmon · 938383af
      Trevor Peirce authored
      The current documentation is out of date and does not reflect actual
      behaviour.  This change makes documentation clearer and accurately
      reflect the purpose of relevant channel variables.
      
      ASTERISK-30123
      
      Change-Id: I160d0b01fce862477ad55ac1aa708a730473eb6f
      938383af
  11. Jul 07, 2022
    • George Joseph's avatar
      Geolocation: Base Asterisk Prereqs · 5fe98877
      George Joseph authored
      * Added ast_variable_list_from_quoted_string()
        Parse a quoted string into an ast_variable list.
      
      * Added ast_str_substitute_variables_full2()
        Perform variable/function/expression substitution on an ast_str.
      
      * Added ast_strsep_quoted()
        Like ast_strsep except you can specify a specific quote character.
        Also added unit test.
      
      * Added ast_xml_find_child_element()
        Find a direct child element by name.
      
      * Added ast_xml_doc_dump_memory()
        Dump the specified document to a buffer
      
      * ast_datastore_free() now checks for a NULL datastore
        before attempting to destroy it.
      
      Change-Id: I5dcefed2f5f93a109e8b489e18d80d42e45244ec
      5fe98877
  12. Jul 06, 2022
  13. Jul 05, 2022
  14. Jul 01, 2022
    • Naveen Albert's avatar
      app_dial: Fix dial status regression. · 626fefdf
      Naveen Albert authored
      ASTERISK_28638 caused a regression by incorrectly aborting
      early and overwriting the status on certain calls.
      This was exhibited by certain technologies such as DAHDI,
      where DAHDI returns NULL for the request if a line is busy.
      This caused the BUSY condition to be incorrectly treated
      as CHANUNAVAIL because the DIALSTATUS was getting incorrectly
      overwritten and call handling was aborted early.
      
      This is fixed by instead checking if any valid peers have been
      specified, as opposed to checking the list size of successful
      requests. This is because the latter could be empty but this
      does not indicate any kind of problem. This restores the
      previous working behavior.
      
      ASTERISK-29989 #close
      
      Change-Id: I4d4b209b967816b1bc791534593ababa2b99bb88
      626fefdf
    • Naveen Albert's avatar
      db: Notify user if deleted DB entry didn't exist. · 350ffcb0
      Naveen Albert authored
      Currently, if using the CLI to delete a DB entry,
      "Database entry removed" is always returned,
      regardless of whether or not the entry actually
      existed in the first place. This meant that users
      were never told if entries did not exist.
      
      The same issue occurs if trying to delete a DB key
      using AMI.
      
      To address this, new API is added that is more stringent
      in deleting values from AstDB, which will not return
      success if the value did not exist in the first place,
      and will print out specific error details if available.
      
      ASTERISK-30001 #close
      
      Change-Id: Ic84e3eddcd66c7a6ed7fea91cdfd402568378b18
      350ffcb0
    • Naveen Albert's avatar
      cli: Fix CLI blocking forever on terminating backslash · b8418454
      Naveen Albert authored
      A corner case exists in CLI parsing where if
      a CLI user in a remote console ends with
      a backslash and then invokes command completion
      (using TAB or ?), then the console will freeze
      forever until a SIGQUIT signal is sent to the
      process, due to getting blocked forever
      reading the command completion. CTRL+C
      and other key combinations have no impact on
      the CLI session.
      
      This occurs because, in such cases, the CLI
      process is waiting for AST_CLI_COMPLETE_EOF
      to appear in the buffer from the main process,
      but instead the main process is confused by
      the funny syntax and thus prints out the CLI help.
      As a result, the CLI process is stuck on the
      read call, waiting for the completion that
      will never come.
      
      This prevents blocking forever by checking
      if the data from the main process starts with
      "Usage:". If it does, that means that CLI help
      was sent instead of the tab complete vector,
      and thus the CLI should bail out and not wait
      any longer.
      
      ASTERISK-29822 #close
      
      Change-Id: I9810ac59304fec162da701653c9c834f0ec8f670
      b8418454
    • Naveen Albert's avatar
      app_dial: Propagate outbound hook flashes. · ae8a36a7
      Naveen Albert authored
      The Dial application currently stops hook flashes
      dead in their tracks from propagating through on
      outbound calls. This fixes that so they can go
      down the wire.
      
      ASTERISK-30115 #close
      
      Change-Id: Id4e78b29a049f35c5b1e7520eaa10d0eb5b7f97c
      ae8a36a7
  15. Jun 30, 2022
    • Naveen Albert's avatar
      res_calendar_icalendar: Send user agent in request. · e5553fbd
      Naveen Albert authored
      Microsoft recently began rejecting all requests for
      ICS calendars on Office 365 with 400 errors if
      the request doesn't contain a user agent. See:
      
      https://docs.microsoft.com/en-us/answers/questions/883904/34the-remote-server-returned-an-error-400-bad-requ.html
      
      Accordingly, we now send a user agent on requests for
      ICS files so that requests to Office 365 will work as
      they did before.
      
      ASTERISK-30106
      
      Change-Id: Ie9dcaef12ae8adf37533c684499eb11005fac8f7
      e5553fbd
    • Naveen Albert's avatar
      say: Abort play loop if caller hangs up. · 0f0cc43e
      Naveen Albert authored
      If the caller has hung up, break out of the play loop so we don't try
      to play remaining files and fail to do so.
      
      ASTERISK-30075 #close
      
      Change-Id: I55e85be28ee90b48c0fe4ce20ac136a7dbb49f14
      0f0cc43e
    • Kevin Harwell's avatar
      res_pjsip: allow TLS verification of wildcard cert-bearing servers · a3b2daf1
      Kevin Harwell authored
      Rightly the use of wildcards in certificates is disallowed in accordance
      with RFC5922. However, RFC2818 does make some allowances with regards to
      their use when using subject alt names with DNS name types.
      
      As such this patch creates a new setting for TLS transports called
      'allow_wildcard_certs', which when it and 'verify_server' are both enabled
      allows DNS name types, as well as the common name that start with '*.'
      to match as a wildcard.
      
      For instance: *.example.com
      will match for: foo.example.com
      
      Partial matching is not allowed, e.g. f*.example.com, foo.*.com, etc...
      And the starting wildcard only matches for a single level.
      
      For instance: *.example.com
      will NOT match for: foo.bar.example.com
      
      The new setting is disabled by default.
      
      ASTERISK-30072 #close
      
      Change-Id: If0be3fdab2e09c2a66bb54824fca406ebaac3da4
      a3b2daf1
    • Naveen Albert's avatar
      pbx: Add helper function to execute applications. · 4a11ae7e
      Naveen Albert authored
      Finding an application and executing it if found is
      a common task throughout Asterisk. This adds a helper
      function around pbx_exec to do this, to eliminate
      redundant code and make it easier for modules to
      substitute variables and execute applications by name.
      
      ASTERISK-30061 #close
      
      Change-Id: Ifee4d2825df7545fb515d763d393065675140c84
      4a11ae7e
  16. Jun 17, 2022
  17. Jun 16, 2022
    • Naveen Albert's avatar
      asterisk.c: Fix incompatibility warnings for remote console. · 2604a835
      Naveen Albert authored
      A previous review fixing ASTERISK_22246 and ASTERISK_26582
      got a couple of the options mixed up as to whether or not
      they are compatible with the remote console. This fixes
      those to the best of my knowledge.
      
      ASTERISK-30097 #close
      
      Change-Id: Id54166991aa79f04fb02699cc499bedda854253b
      2604a835
Loading