Skip to content
Snippets Groups Projects
  1. Feb 10, 2017
    • Sean Bright's avatar
      manager: Restore Originate failure behavior from Asterisk 11 · 09107730
      Sean Bright authored
      In Asterisk 11, if the 'Originate' AMI command failed to connect the provided
      Channel while in extension mode, a 'failed' extension would be looked up and
      run. This was, I believe, unintentionally removed in 51b6c496. This patch
      restores that behavior.
      
      This also adds an enum for the various 'synchronous' modes in an attempt to
      make them meaningful.
      
      ASTERISK-26115 #close
      Reported by: Nasir Iqbal
      
      Change-Id: I8afbd06725e99610e02adb529137d4800c05345d
      09107730
  2. Feb 08, 2017
  3. Feb 07, 2017
    • Joshua Colp's avatar
      res_stasis_device_state: Protect the adding/removing of subscriptions. · b79cc620
      Joshua Colp authored
      The adding and removing of device state subscriptions did not protect
      fully against simultaneous manipulation. In particular the subscribe
      case allowed a small window where two subscriptions could be added for
      the same device state instead of just one.
      
      This change makes the code hold the subscriptions lock for the entirety
      of each operation to ensure that two are not occurring at the same time.
      
      ASTERISK-26770
      
      Change-Id: I3e7f8eb9d09de440c9024d2dd52029f6f20e725b
      b79cc620
  4. Feb 06, 2017
  5. Feb 02, 2017
    • Richard Mudgett's avatar
      res_agi: Prevent an AGI from eating frames it should not. (Re-do) · 97c30847
      Richard Mudgett authored
      A dialplan intercept routine is equivalent to an interrupt routine.  As
      such, the routine must be done quickly and you do not have access to the
      media stream.  These restrictions are necessary because the media stream
      is the responsibility of some other code and interfering with or delaying
      that processing is bad.  A possible future dialplan processing
      architecture change may allow the interception routine to run in a
      different thread from the main thread handling the media and remove the
      execution time restriction.
      
      * Made res_agi.c:run_agi() running an AGI in an interception routine run
      in DeadAGI mode.  No touchy channel frames.
      
      ASTERISK-25951
      
      ASTERISK-26343
      
      ASTERISK-26716
      
      Change-Id: I638f147ca7a7f2590d7194a8ef4090eb191e4e43
      97c30847
  6. Feb 01, 2017
    • Richard Mudgett's avatar
      res_resolver_unbound.c: Fix frequent ref leak caught by excessive ref trap. · 7d9b50a7
      Richard Mudgett authored
      ASTERISK-26765
      
      Change-Id: I27eb97df7f8d7e624b0b9a61c0fcee4718c86d8d
      7d9b50a7
    • Mark Michelson's avatar
      Update qualifies when AOR configuration changes. · bbed75c3
      Mark Michelson authored
      Prior to this change, qualifies would only update in the following
      cases:
      * A reload of res_pjsip.so was issued.
      * A dynamic contact was re-registered after its AOR's qualify_frequency
        had been changed
      This does not work well if you are using realtime for your AORs. You can
      update your database to have a new qualify_frequency, but the permanent
      contacts on that AOR will not have their qualifies updated. And the
      dynamic contacts on that AOR will not have their qualifies updated until
      the next registration, which could be a long time.
      
      This change seeks to fix this problem by making it so that whenever AOR
      configuration is applied, the contacts pertaining to that AOR have their
      qualifies updated.
      
      Additions from this patch:
      * AOR sorcery objects now have an apply handler that calls into a newly
        added function in the OPTIONS code. This causes all contacts
        associated with that AOR to re-schedule qualifies.
      * When it is time to qualify a contact, the OPTIONS code checks to see
        if the AOR can still be retrieved. If not, then qualification is
        canceled on the contact.
      
      Alterations from this patch:
      * The registrar code no longer updates contact's qualify_frequence and
        qualify_timeout. There is no point to this since those values already
        get updated when the AOR changes.
      * Reloading res_pjsip.so no longer calls the OPTIONS initialization
        function. Reloading res_pjsip.so results in re-loading AORs, which
        results in re-scheduling qualifies.
      
      Change-Id: I2e7c3316da28f389c45954f24c4e9389abac1121
      bbed75c3
    • Joshua Colp's avatar
      res_pjsip: Handle invocation of callback on outgoing request when error occurs. · aeea634b
      Joshua Colp authored
      There are some error cases in PJSIP when sending a request that will
      result in the callback for the request being invoked.  The code did not
      handle this case and assumed on every error case that the callback was not
      invoked.
      
      The code has been changed to check whether the callback has been invoked
      and if so to absorb the error and treat it as a success.
      
      ASTERISK-26679
      ASTERISK-26699
      
      Change-Id: I563982ba204da5aa1428989a11c06dd9087fea91
      aeea634b
    • Sean Bright's avatar
      res_rtp_asterisk: Swap byte-order when sending signed linear · 7a16524a
      Sean Bright authored
      Before Asterisk 13, signed linear was converted into network byte order by a
      smoother before being sent over the network. We restore this behavior by
      forcing the creation of a smoother when slinear is in use and setting the
      appropriate flags so that the byte order conversion is always done.
      
      ASTERISK-24858 #close
      Reported-by: Frankie Chin
      
      Change-Id: I868449617d1a7819578f218c8c6b2111ad84f5a9
      7a16524a
  7. Jan 27, 2017
    • George Joseph's avatar
      debug_utilities: Add ast_logescalator · ef4deb8e
      George Joseph authored
      The escalator works by creating a set of startup commands in cli.conf
      that set up logger channels and issue the debug commands for the
      subsystems specified.  If asterisk is running when it is executed,
      the same commands will be issued to the running instance.  The original
      cli.conf is saved before any changes are made and can be restored by
      executing '$prog --reset'.
      
      The log output will be stored in...
      $astlogdir/message.$uniqueid
      $astlogdir/debug.$uniqueid
      $astlogdir/dtmf.$uniqueid
      $astlogdir/fax.$uniqueid
      $astlogdir/security.$uniqueid
      $astlogdir/pjsip_history.$uniqueid
      $astlogdir/sip_history.$uniqueid
      
      Some minor tweaks were made to chan_sip, and res_pjsip_history
      so their history output could be send to a log channel as packets
      are captured.
      
      A minor tweak was also made to manager so events are output to verbose
      when "manager set debug on" is issued.
      
      Change-Id: I799f8e5013b86dc5282961b27383d134bf09e543
      ef4deb8e
  8. Jan 26, 2017
  9. Jan 25, 2017
    • Mark Michelson's avatar
      Add reload options to CLI/AMI stale object commands. · d32bd638
      Mark Michelson authored
      Marking an object as stale in a memory cache is supposed to prime the
      cache so that the next time the item is retrieved, the stale item is
      deleted from the cache and a background task is run to re-populate the
      cache with a fresh version of the object.
      
      The problem is, there are some object types out there for which there is
      no natural reason that they would be retrieved from the backend with any
      regularity. Outbound PJSIP registrations are a good example of this. At
      startup, they are read, and an object-specific state is created that
      refers to the initially-retrieved object for all time.
      
      Adding the "reload" option to the CLI/AMI commands gives the cache the
      opportunity to manually re-retrieve the object from the backend, both
      storing the new object in the cache and applying the new object's
      configuration to the module that uses that object.
      
      Change-Id: Ieb1fe7270ceed491f057ec5cbf0e097bde96c5c8
      d32bd638
    • Richard Mudgett's avatar
      T.140: Fix format ref and memory leaks. · 20aed30d
      Richard Mudgett authored
      * channel.c:ast_sendtext(): Fix T.140 SendText memory leak.
      
      * format_compatibility.c: T.140 RED and T.140 were swapped.
      
      * res_rtp_asterisk.c:rtp_red_init(): Fix ast_format_t140_red ref leak.
      
      * res_rtp_asterisk.c:rtp_red_init(): Fix data race after starting periodic
      scheduled red_write().
      
      * res_rtp_asterisk.c: Some other minor misc tweaks.
      
      Change-Id: Ifa27a2e0f8a966b1cf628607c86fc4374b0b88cb
      20aed30d
  10. Jan 24, 2017
    • Joshua Colp's avatar
      res_pjsip_endpoint_identifier_ip: Ensure error defaults to 0. · ee2b0f2e
      Joshua Colp authored
      When configuring a match using a netmask the error variable was
      not defaulting to 0. For some people this would cause the code
      to think an error occurred when adding the match when in reality
      it added perfectly fine.
      
      ASTERISK-26693
      
      Change-Id: I850c250813742bddde65c84e739093c9e01dfe56
      ee2b0f2e
    • Richard Mudgett's avatar
      stasis_bridge.c: Fix off-nominal stasis control ref leak. · e922979d
      Richard Mudgett authored
      Change-Id: Ib17218343a6596832060180e19386da9df150ac8
      e922979d
    • Richard Mudgett's avatar
      res_musiconhold.c: Fix format ref leak when parsing MOH config class. · 56854f22
      Richard Mudgett authored
      Change-Id: Ica8e8e2ce7604c2c61ec55bef07dc675361d2ea5
      56854f22
    • Richard Mudgett's avatar
      PJPROJECT logging: Fix detection of max supported log level. · 6f3e8c8e
      Richard Mudgett authored
      The mechanism used for detecting the maximum log level compiled into the
      linked pjproject did not work.  The API call simply stores the requested
      level into an integer and does no range checking.  Asterisk was assuming
      that there was range checking and limited the new value to the allowable
      range.  To get the actual maximum log level compiled into the linked
      pjproject we need to get and save off the initial set log level from
      pjproject.  This is the maximum log level supported.
      
      * Get and save off the initial log level setting before altering it to the
      desired level on startup.  This has to be done by a macro rather than
      calling a core function to avoid incorrectly linking pjproject.
      
      * Split the initial log level warning messages to warn if the linked
      pjproject cannot support the requested startup level and if it is too low
      to get the pjproject buildopts for "pjproject show buildopts".
      
      * Adjust the CLI "pjproject set log level" to check the saved max log
      level and to generate normal output messages instead of a warning message.
      
      ASTERISK-26743 #close
      
      Change-Id: I40aa76653e2a1dece66c3f8734594b4f0471cfb4
      6f3e8c8e
    • Richard Mudgett's avatar
      res_pjsip_pubsub.c: Implement "pjsip show subscriptions" commands. · 0ea3c371
      Richard Mudgett authored
      ASTERISK-23828 #close
      
      Change-Id: Ifb8a3b61f447aedc58a8e6b36a810f7566018567
      0ea3c371
  11. Jan 23, 2017
    • Mark Michelson's avatar
      Free endpoint ACLs when destroying PJSIP endpoints. · 4bfeda6e
      Mark Michelson authored
      If endpoint ACLs were specified, they were not being freed
      when endpoints were destroyed. On systems with realtime endpoints, this
      could add up quickly since each DB lookup would allocate the ACL without
      freeing it.
      
      ASTERISK-26731 #close
      Reported by Ustinov Artem
      
      Change-Id: Ie1f8bf5b7a0de628c975beba01e69c56893331ad
      4bfeda6e
    • George Joseph's avatar
      ari: Implement 'debug all' and request/response logging · 66916067
      George Joseph authored
      The 'ari set debug' command has been enhanced to accept 'all' as an
      application name.  This allows dumping of all apps even if an app
      hasn't registered yet.  To accomplish this, a new global_debug global
      variable was added to res/stasis/app.c and new APIs were added to
      set and query the value.
      
      'ari set debug' now displays requests and responses as well as events.
      This required refactoring the existing debug code.
      
      * The implementation for 'ari set debug' was moved from stasis/cli.{c,h}
        to ari/cli.{c,h}, and stasis/cli.{c,h} were deleted.
      * In order to print the body of incoming requests even if a request
        failed, the consumption of the body was moved from the ari stubs
        to ast_ari_callback in res_ari.c and the moustache templates were
        then regenerated.  The body is now passed to ast_ari_invoke and then
        on to the handlers.  This results in code savings since that template
        was inserted multiple times into all the stubs.
      
      An additional change was made to the ao2_str_container implementation
      to add partial key searching and a sort function.  The existing cli
      code assumed it was already there when it wasn't so the tab completion
      was never working.
      
      Change-Id: Ief936f747ce47f1fb14035fbe61152cf766406bf
      (cherry picked from commit 1d890874)
      66916067
    • Joshua Colp's avatar
      res_pjsip_endpoint_identifier_ip: Read settings before resolving. · 23690c1b
      Joshua Colp authored
      An option has been added, srv_lookups, which controls whether
      SRV lookups are performed on the provided match hosts or not.
      It was possible for this option to be applied after resolution
      had already happened.
      
      This change makes it so hosts are stored away, settings are read
      and applied, and then resolution is done. This ensures that no
      matter the ordering the srv_lookups option is in effect.
      
      ASTERISK-26735
      
      Change-Id: I750378cb277be0140f8c5539450270afbfc43388
      23690c1b
    • Lorenzo Miniero's avatar
      media: Add experimental support for RTCP feedback. · 1061539b
      Lorenzo Miniero authored
      This change adds experimental support for providing RTCP
      feedback information to codec modules so they can dynamically
      change themselves based on conditions.
      
      ASTERISK-26584
      
      Change-Id: Ifd6aa77fb4a7ff546c6025900fc2baf332c31857
      1061539b
  12. Jan 20, 2017
  13. Jan 06, 2017
    • Joshua Colp's avatar
      res_pjsip_endpoint_identifier_ip: Add support for SRV lookups. · a7d856cd
      Joshua Colp authored
      This change implements SRV support for the IP based endpoint
      identifier module. All possible addresses through SRV are looked
      up and added as matches. If no SRV records are available a
      fallback to normal host resolution is done. If an IP address
      is provided then no SRV lookup occurs.
      
      This is configured using the "srv_lookups" option on the
      identify section and defaults to "yes".
      
      ASTERISK-26693
      
      Change-Id: I6b641e275bf96629320efa8b479737062aed82ac
      a7d856cd
  14. Jan 04, 2017
    • Jonathan R. Rose's avatar
      core/pbx: dialplan show - display filename/line# · d96e3502
      Jonathan R. Rose authored
      Adds the ability for extensions to be registered to include filename and
      line number so that dialplan show output can show the filename and line
      number of a config file responsible for generating a given extension.
      
      This only affects config modules that are written to use the new extension
      registering functions. In this patch, that only includes pbx_config, so
      extensions registered in extensions.conf and any included extension will
      be shown in this manner. Extensions registered in this manner will show
      the filename and line number *instead* of the registrar.
      
      ASTERISK-26658 #close
      Reported by: Jonathan R. Rose
      
      Change-Id: Ieccc6abccdff34ed5c7da3511fd24972b8f2dd30
      d96e3502
    • Alexander Traud's avatar
      res_pjsip_session: Access SIPDOMAIN via Dialplan. · aea22858
      Alexander Traud authored
      This feature was available in the SIP channel driver chan_sip. For example,
      Asterisk is the outbound proxy and has to handle all SIP-URIs, even domains not
      local to Asterisk. In that case, SIPDOMAIN is used in the Dialplan, to detect
      and dial remote SIP-URIs. This change here sets the SIP destination domain of
      an inbound call (SIPDOMAIN) in the SIP channel driver res_pjsip as well.
      
      ASTERISK-26670 #close
      
      Change-Id: I27c880dc404a3c1c6792e1ba3545475339577243
      aea22858
  15. Jan 01, 2017
  16. Dec 31, 2016
    • Martin Tomec's avatar
      res_calendar: delete old calendars after reload · aad29b9b
      Martin Tomec authored
      When "fetch_again_at_reload" is set in config, we create now
      new object and thread for each reloaded calendar (with new
      configuration). Old calendar should be then unlinked, so the
      old thread can exit and free memory.
      
      ASTERISK-26683
      
      Change-Id: Ic17fba9371c5a8b26a6bc54ea4957c13a32a343e
      aad29b9b
  17. Dec 30, 2016
    • George Joseph's avatar
      res_pjsip_refer: Handle compact Refer-To header. · 5a5953f9
      George Joseph authored
      refer_incoming_refer_request needed to look for the "r" header as well
      as the "Refer-To" header.
      
      ASTERISK-26655 #close
      patches:
      	refer_compact_fix.diff	submitted by JoshE (license 6075)
      
      Change-Id: I610410a99b02427ea5db887aeb454d5f12c2259f
      5a5953f9
  18. Dec 22, 2016
    • Richard Mudgett's avatar
      res_rtp_asterisk.c: Fix uninitialized memory crash. · b576b58d
      Richard Mudgett authored
      ast_rtp_remote_address_set() could pass an uninitialized 'us' parameter to
      ast_ouraddrfor().  If ast_ouraddrfor() returns an error then the 'us'
      parameter may not get initialized.  Thus when the code tries to save the
      'us' parameter to the local address we could try to copy a ridiculous
      sized memory buffer and segfault.
      
      * Made pass an initialized 'us' parameter to ast_ouraddrfor().
      
      * Optimized out the 'us' struct variable.
      
      ASTERISK-26672 #close
      
      Change-Id: I4acea5dcdf0813da2c7d3e11c2d6067d160d17dc
      b576b58d
    • Richard Mudgett's avatar
      res_rtp_asterisk.c: Initialize ourip passed to ast_find_ourip(). · 2fc65173
      Richard Mudgett authored
      We access uninitialized memory when the 'ourip' parameter does not
      have an initial guess to our IP address.
      
      ASTERISK-26672
      
      Change-Id: I35507ea1ad7455d2be188f6ccdd4add7bd150e15
      2fc65173
  19. Dec 21, 2016
  20. Dec 14, 2016
  21. Dec 08, 2016
    • Badalyan Vyacheslav's avatar
      res_pjsip: Fix 'A = B != C' kind. · 934aa2c7
      Badalyan Vyacheslav authored
      Consider reviewing the expression of the 'A = B != C' kind.
      The expression is calculated as following: 'A = (B != C)'
      
      Change-Id: Ibaa637dfda47d51a20e26069d3103e05ce80003d
      934aa2c7
    • Badalyan Vyacheslav's avatar
      Fix IO conversion bug · 149d8db9
      Badalyan Vyacheslav authored
      Expression 'rlen < 0' is always false.
      Unsigned type value is never < 0.
      
      Change-Id: Id9f393ff25b009a6c4a6e40b95f561a9369e4585
      149d8db9
Loading