Skip to content
Snippets Groups Projects
  1. Nov 21, 2017
    • Corey Farrell's avatar
      CLI: Create ast_cli_completion_add function. · 9587a61f
      Corey Farrell authored
      Some completion generators are very inefficent due to the way CLI
      requests matches one at a time.  ast_cli_completion_add can be called
      multiple times during one invokation of a CLI generator to add all
      results without having to reinitialize the search state for each match.
      
      Change-Id: I73d26d270bbbe1e3e6390799cfc1b639e39cceec
      9587a61f
    • Corey Farrell's avatar
      CLI: Remove calls to ast_cli_generator. · a02cbc2e
      Corey Farrell authored
      The ability to add to localized storage cannot be supported by
      ast_cli_generator.  The only calls to ast_cli_generator should be by
      functions that need to proxy the CLI generator, for example 'cli check
      permissions' or 'core show help'.
      
      * ast_cli_generatornummatches now retrieves the vector of matches and
        reports the number of elements (not including 'best' match).
      * test_substitution retrieves and iterates the vector.
      
      Change-Id: I8cd6b93905363cf7a33a2d2b0e2a8f8446d9f248
      a02cbc2e
    • Corey Farrell's avatar
      loader: Fix comments in struct ast_module. · 10b4b5d2
      Corey Farrell authored
      Make the comments follow doxygen format, move comments to the line
      before each field they describe.
      
      Change-Id: Ic445468398b5e88f13910f7c2f70bd15aad33a27
      10b4b5d2
  2. Nov 20, 2017
  3. Nov 19, 2017
    • Corey Farrell's avatar
      Build: Fix issues building without SSL. · 999e0c17
      Corey Farrell authored
      * Fix conditional in libasteriskssl.
      * Use variables produced by configure to link the SSL and uuid libraries
        into libasteriskpj.so instead of hard-coding them.
      
      ASTERISK-27431
      
      Change-Id: I3977931fd3ef8c4e4376349ccddb354eb839b58d
      999e0c17
    • Corey Farrell's avatar
      iostream: Fix ast_iostream_printf declaration. · b4862e46
      Corey Farrell authored
      This adds the printf attribute and changes 'fmt' from 'const void *' to
      'const char *'.  This resolves a warning from some compiler for
      vsnprintf needing a literal string for format.
      
      Change-Id: I71c33a8262590042ee451e1146760c10bb22fb78
      b4862e46
  4. Nov 17, 2017
    • Corey Farrell's avatar
      acl: Fix allocation related issues. · c4f11911
      Corey Farrell authored
      Add checks for allocation errors, cleanup and report failure when they
      occur.
      
      * ast_duplicate_acl_list: Replace log warnings with errors, add missing
        line-feed.
      * ast_append_acl: Add missing line-feed to logger message.
      * ast_append_ha: Avoid ast_strdupa in loop by moving debug message to
        separate function.
      * ast_ha_join: Use two separate calls to ast_str_append to avoid using
        ast_strdupa in a loop.
      
      Change-Id: Ia19eaaeb0b139ff7ce7b971c7550e85c8b78ab76
      c4f11911
    • Joshua Colp's avatar
      bridge_basic: Ignore answer from transfer target when they've timed out. · 781a520b
      Joshua Colp authored
      This is a fun one.
      
      Given the following attended transfer scenario:
      
      1. Transfer target is called
      2. Transferer hangs up
      3. Transfer target call attempt reaches timeout
      4. Transfer target is told to hang up
      5. Transfer target answers before channel is hung up
      6. Transferer recall target is called
      
      A crash would occur. This is because the transfer target call
      attempt, despite being told to hang up, would raise a recall
      target answer before the recall target had been answered. As it
      had not answered there would be no recall target channel and it
      would implode.
      
      This change makes it so that if the transfer target has been
      hung up we don't tell the attended transfer code that it has
      answered. We also clear out the stimulus that the recall target
      has been answered after telling the transfer target to hang up,
      in case it was able to raise the information before we told it
      to hangup.
      
      ASTERISK-27361
      
      Change-Id: Ifb8b255a9c4d2c5c1b8ad77bf54f659ed286df99
      781a520b
    • Corey Farrell's avatar
      aoc: Fix memory management issues. · a95f2994
      Corey Farrell authored
      aoc_publish_blob failed to check for msg allocation error and never
      released msg.
      
      Change-Id: Ib31a9ffb81056a0d496a49d7eec795005a44bcd5
      a95f2994
  5. Nov 15, 2017
    • Richard Mudgett's avatar
      audiohook.c: Fix freeing a frame and still using it. · b7b800b6
      Richard Mudgett authored
      Memory corruption happened to the media frame caches when an audio hook
      freed a frame when it shouldn't.  I think the freed frame was because a
      jitter buffer interpolated a missing frame and the audio hook
      unconditionally freed it.
      
      * Made audiohook.c:audio_audiohook_write_list() not free an interpolated
      frame if it is the same frame as what was passed into the routine.
      
      * Made plc.c:normalise_history() use memmove() instead of memcpy() on a
      memory block that could overlap.  Found by valgrind investigating this
      issue.
      
      ASTERISK-27238
      ASTERISK-27412
      
      Change-Id: I548d86894281fc4529aefeb9f161f2131ecc6fde
      b7b800b6
  6. Nov 13, 2017
    • Corey Farrell's avatar
      core: Use ast_alertpipe for Asterisk signal monitoring thread. · edd1016d
      Corey Farrell authored
      Reduce the signal monitoring thread file descriptor use from two to one
      on systems that support eventfd.
      
      Change-Id: Id4041a237d481ff699639e153ea6982fee14a462
      edd1016d
    • Corey Farrell's avatar
      core: Fix configuration of remote console socket path. · cdaaa14a
      Corey Farrell authored
      The remote console socket path is the combination of asterisk.conf
      settings astrundir from [directories] and astctl from [files].
      Unconditionally combine the two strings after processing all values
      to ensure we end up with the correct socket path.
      
      ASTERISK-27415
      
      Change-Id: Ib1e2805d55d6b0955c6430a1a2a93acbf9b091e8
      cdaaa14a
    • Sean Bright's avatar
      sorcery: Add ast_sorcery_retrieve_by_prefix() · ffccce76
      Sean Bright authored
      Some consumers of the sorcery API use ast_sorcery_retrieve_by_regex
      only so that they can anchor the potential match as a prefix and not
      because they truly need regular expressions.
      
      Rather than using regular expressions for simple prefix lookups, add
      a new operation - ast_sorcery_retrieve_by_prefix - that does them.
      
      Change-Id: I56f4e20ba1154bd52281f995c27a429a854f6a79
      ffccce76
    • Corey Farrell's avatar
      CLI: Create ast_cli_completion_vector. · 14d60cee
      Corey Farrell authored
      This is a rewrite of ast_cli_completion_matches using a vector to build
      the list.  The original function calls the vector version, NULL
      terminates the vector and extracts the elements array.
      
      One change in behavior the results are now sorted and deduplicated. This
      will solve bugs where some duplicate checking was done before the list
      was sorted.
      
      Change-Id: Iede20c5b4d965fa5ec71fda136ce9425eeb69519
      14d60cee
  7. Nov 11, 2017
    • Richard Mudgett's avatar
      core: Add cache_media_frames debugging option. · 90bb0a3e
      Richard Mudgett authored
      The media frame cache gets in the way of finding use after free errors of
      media frames.  Tools like valgrind and MALLOC_DEBUG don't know when a
      frame is released because it gets put into the cache instead of being
      freed.
      
      * Added the "cache_media_frames" option to asterisk.conf.  Disabling the
      option helps track down media frame mismanagement when using valgrind or
      MALLOC_DEBUG.  The cache gets in the way of determining if the frame is
      used after free and who freed it.  NOTE: This option has no effect when
      Asterisk is compiled with the LOW_MEMORY compile time option enabled
      because the cache code does not exist.
      
      To disable the media frame cache simply disable the cache_media_frames
      option in asterisk.conf and restart Asterisk.
      
      Sample asterisk.conf setting:
      [options]
      cache_media_frames=no
      
      ASTERISK-27413
      
      Change-Id: I0ab2ce0f4547cccf2eb214901835c2d951b78c00
      90bb0a3e
    • Richard Mudgett's avatar
      frame.c: Make ast_frame_free()/ast_frfree() NULL tolerant · b865d29f
      Richard Mudgett authored
      Change-Id: Ic49d821ef88ada38a31bdd835b9531443c55d793
      b865d29f
  8. Nov 10, 2017
  9. Nov 08, 2017
    • Corey Farrell's avatar
      DEBUG_FD_LEAKS: Add missing FD creators. · 0bda39c6
      Corey Farrell authored
      This adds FD tracking for the following functions:
      * eventfd
      * timerfd_create
      * socketpair
      * accept
      
      ASTERISK-27404
      
      Change-Id: Id6848fe904ade2d34eb39d2a20bd6b223e1111fc
      0bda39c6
    • Richard Mudgett's avatar
      AST-2017-010: Fix cdr_object_update_party_b_userfield_cb() buf overrun · b358e441
      Richard Mudgett authored
      cdr_object_update_party_b_userfield_cb() could overrun the fixed buffer if
      the supplied string is too long.  The long string could be supplied by
      external means using the CDR(userfield) function.
      
      This may seem reminiscent to AST-2017-001 (ASTERISK_26897) and it is.  The
      earlier patch fixed the buffer overrun for Party A's userfield while this
      patch fixes the same thing for Party B's userfield.
      
      ASTERISK-27337
      
      Change-Id: I0fa767f65ecec7e676ca465306ff9e0edbf3b652
      b358e441
  10. Nov 07, 2017
  11. Nov 06, 2017
    • Corey Farrell's avatar
      stasis: Release object if vector append fails. · adb4fdcb
      Corey Farrell authored
      Change-Id: I3e5cc669169aab6175ddfaf7486edeaeb4fdcfb1
      adb4fdcb
    • Corey Farrell's avatar
      RTP Engine: Deal with errors returned from AST_VECTOR_REPLACE. · 2f4f2160
      Corey Farrell authored
      Check for errors from AST_VECTOR_REPLACE and clean memory if needed.
      
      Change-Id: I124d15cc1d645f85a72a1279f623c1993b304b0b
      2f4f2160
    • Corey Farrell's avatar
      PBX: Handle errors from AST_VECTOR_APPEND. · 5762f724
      Corey Farrell authored
      This resolves potentials leaks on AST_VECTOR_APPEND error in:
      * ast_context_add_include2
      * ast_context_add_switch2
      * ast_context_add_ignorepat2
      
      Change-Id: Ib60e95c4f622fa3b832d87227c0523a695d736b6
      5762f724
    • Corey Farrell's avatar
      Messaging: Report error on failure to register tech or handler. · 714026b3
      Corey Farrell authored
      Message tech and handler registrations use a vector which could fail to
      expand.  If it does log and error and return error.
      
      Change-Id: I593a8de81a07fb0452e9b0efd5d4018b77bca6f4
      714026b3
    • Corey Farrell's avatar
      format_cap: Fix leak on AST_VECTOR_APPEND error. · e43c8af7
      Corey Farrell authored
      format_cap_framed_init can fail on AST_VECTOR_APPEND.  This should
      report failure to the caller and clean the newly allocated frame.
      
      Change-Id: Ica0661235bf09497bf23d844ceb01f21b41a55b0
      e43c8af7
    • Corey Farrell's avatar
      stasis: Remove silly use of RAII_VAR in stasis_forward_all. · 64bcb65a
      Corey Farrell authored
      Change-Id: I46de4c968d40144d5b049966304ff66c1469fb65
      64bcb65a
    • Corey Farrell's avatar
      CLI: Remove unused internal command. · b7e10340
      Corey Farrell authored
      The internal CLI command "_command complete" was last used by Asterisk
      0.2.0.  Since then we've been using "_command nummatches" and "_command
      matchesarray".
      
      Change-Id: I682fe1e21a24a3bb5bd04146e639f1c5866bcfce
      b7e10340
    • Richard Mudgett's avatar
      stasis_bridges.c: Fix off-nominal json memory leaks. · 92342401
      Richard Mudgett authored
      Change-Id: Ib1181a36b317c86bff1ef2e44a17a0b1c73cfdc8
      92342401
    • Richard Mudgett's avatar
      stasis_channels.c: Remove a very silly RAII_VAR(). · f81970d3
      Richard Mudgett authored
      Change-Id: I28b458b3c1a442c4ef0be7b4986a95ea4149e14f
      f81970d3
    • Richard Mudgett's avatar
      Fix ast_(v)asprintf() malloc failure usage conditions. · ee08f10d
      Richard Mudgett authored
      When (v)asprintf() fails, the state of the allocated buffer is undefined.
      The library had better not leave an allocated buffer as a result or no one
      will know to free it.  The most likely way it can return failure is for an
      allocation failure.  If the printf conversion fails then you actually have
      a threading problem which is much worse because another thread modified
      the parameter values.
      
      * Made __ast_asprintf()/__ast_vasprintf() set the returned buffer to NULL
      on failure.  That is much more useful than either an uninitialized pointer
      or a pointer that has already been freed.  Many uses won't have to check
      for failure to ensure that the buffer won't be double freed or prevent an
      attempt to free an uninitialized pointer.
      
      * stasis.c: Fixed memory leak in multi_object_blob_to_ami() allocated by
      ast_asprintf().
      
      * ari/resource_bridges.c:ari_bridges_play_helper(): Remove assignment to
      the wrong thing which is now not needed even if assigning to the right
      thing.
      
      Change-Id: Ib5252fb8850ecf0f78ed0ee2ca0796bda7e91c23
      ee08f10d
    • Sean Bright's avatar
      dtls: Add support for ephemeral DTLS certificates. · 04d3785a
      Sean Bright authored
      This mimics the behavior of Chrome and Firefox and creates an ephemeral
      X.509 certificate for each DTLS session.
      
      Currently, the only supported key type is ECDSA because of its faster
      generation time, but other key types can be added in the future as
      necessary.
      
      ASTERISK-27395
      
      Change-Id: I5122e5f4b83c6320cc17407a187fcf491daf30b4
      04d3785a
    • Alexander Traud's avatar
      tcptls: Print notice when TLS is enabled but not configured. · 19332e69
      Alexander Traud authored
      Asterisk can be compiled without a SSL/TLS library, without the Development
      Headers of OpenSSL. However, if TLS (SIP) or Secure-WebSockets (WebRTC) was
      enabled in a configuration file, Asterisk did not notice the user. Asterisk
      failed silently, only the corresponding TCP ports were not open.
      
      ASTERISK-27394
      Reported-by: mossley74
      
      Change-Id: Ib8b7539a5b2af8154c22e5f7a40fc68f95d95b93
      19332e69
  12. Nov 03, 2017
  13. Nov 02, 2017
    • Joshua Colp's avatar
      core: Don't attempt to write to a stream that does not exist. · 87014793
      Joshua Colp authored
      When a frame is provided to ast_write ensure that a multistream
      capable channel has a stream for it before attempting to give it
      to the channel driver. In some cases (such as a deferred SDP
      negotiation) the stream may not yet exist.
      
      ASTERISK-27364
      
      Change-Id: Icf84ca982a67cdd6e9a71851eb7eb1bd0e865276
      87014793
  14. Nov 01, 2017
    • Corey Farrell's avatar
      Modules: Additional improvements to CLI completion. · b9f457ea
      Corey Farrell authored
      Replace 'needsreload' argument with a 'type' argument to specify which
      type of modules you want completion.  This provides more accurate CLI
      completion for load and unload commands.
      
      * 'module unload' now excludes modules that have active references or are
        not running.
      * 'module load' now excludes modules that are already running.
      * 'core set debug [atleast] <level> [module]' shows running modules only.
      
      ASTERISK-27378
      
      Change-Id: Iea3e00054461484196c46f688f02635cc886bad1
      b9f457ea
  15. Oct 31, 2017
    • Kevin Harwell's avatar
      features: Bridge application's BRIDGERESULT not appropriately set · 1e700117
      Kevin Harwell authored
      The dialplan application "Bridge" was not setting the BRIDGERESULT to failure
      when a failure did occur. Even worse if it did fail to join the bridge it would
      still report success.
      
      This patch now sets the BRIDGERESULT variable to an appropriate value for a
      given condition state. Also, removed the value INCOMPATIBLE as a valid result
      type since it is no longer used.
      
      ASTERISK-27369 #close
      
      Change-Id: I22588e7125a765edf35cff28c98ca143e9927554
      1e700117
  16. Oct 30, 2017
    • Joshua Colp's avatar
      core / pjsip: Add support for grouping streams together. · 4c535f5c
      Joshua Colp authored
      In WebRTC streams (or media tracks in their world) can be grouped
      together using the mslabel. This informs the browser that each
      should be synchronized with each other.
      
      This change extends the stream API so this information can
      be stored with streams. The PJSIP support has been extended
      to use the mslabel to determine grouped streams and store
      this association on the streams. Finally when creating the
      SDP the group information is used to cause each media stream
      to use the same mslabel.
      
      ASTERISK-27379
      
      Change-Id: Id6299aa031efe46254edbdc7973c534d54d641ad
      4c535f5c
Loading