Skip to content
Snippets Groups Projects
  1. Apr 27, 2018
    • Joshua Colp's avatar
      pjsip: Rewrite OPTIONS support with new eyes. · 882e79b7
      Joshua Colp authored
      The OPTIONS support in PJSIP has organically grown, like many things in
      Asterisk.  It has been tweaked, changed, and adapted based on situations
      run into.  Unfortunately this has taken its toll.  Configuration file
      based objects have poor performance and even dynamic ones aren't that
      great.
      
      This change scraps the existing code and starts fresh with new eyes.  It
      leverages all of the APIs made available such as sorcery observers and
      serializers to provide a better implementation.
      
      1.  The state of contacts, AORs, and endpoints relevant to the qualify
      process is maintained.  This state can be updated by external forces (such
      as a device registering/unregistering) and also the reload process.  This
      state also includes the association between endpoints and AORs.
      
      2.  AORs are scheduled and not contacts.  This reduces the amount of work
      spent juggling scheduled items.
      
      3.  Manipulation of which AORs are being qualified and the endpoint states
      all occur within a serializer to reduce the conflict that can occur with
      multiple threads attempting to modify things.
      
      4.  Operations regarding an AOR use a serializer specific to that AOR.
      
      5.  AORs and endpoint state act as state compositors.  They take input
      from lower level objects (contacts feed AORs, AORs feed endpoint state)
      and determine if a sufficient enough change has occurred to be fed further
      up the chain.
      
      6.  Realtime is supported by using observers to know when a contact has
      been registered.  If state does not exist for the associated AOR then it
      is retrieved and becomes active as appropriate.
      
      The end result of all of this is best shown with a configuration file of
      3000 endpoints each with an AOR that has a static contact.  In the old
      code it would take over a minute to load and use all 8 of my cores.  This
      new code takes 2-3 seconds and barely touches the CPU even while dealing
      with all of the OPTIONS requests.
      
      ASTERISK-26806
      
      Change-Id: I6a5ebbfca9001dfe933eaeac4d3babd8d2e6f082
      882e79b7
  2. Jan 15, 2018
    • Corey Farrell's avatar
      loader: Add dependency fields to module structures. · 9cfdb81e
      Corey Farrell authored
      * Declare 'requires' and 'enhances' text fields on module info structure.
      * Rename 'nonoptreq' to 'optional_modules'.
      * Update doxygen comments.
      
      Still need to investigate dependencies among modules I cannot compile.
      
      Change-Id: I3ad9547a0a6442409ff4e352a6d897bef2cc04bf
      9cfdb81e
  3. Oct 27, 2016
    • Corey Farrell's avatar
      Remove ASTERISK_REGISTER_FILE. · a6e5bae3
      Corey Farrell authored
      ASTERISK_REGISTER_FILE no longer has any purpose so this commit removes
      all traces of it.
      
      Previously exported symbols removed:
      * __ast_register_file
      * __ast_unregister_file
      * ast_complete_source_filename
      
      This also removes the mtx_prof static variable that was declared when
      MTX_PROFILE was enabled.  This variable was only used in lock.c so it
      is now initialized in that file only.
      
      ASTERISK-26480 #close
      
      Change-Id: I1074af07d71f9e159c48ef36631aa432c86f9966
      a6e5bae3
  4. Apr 20, 2015
    • George Joseph's avatar
      pjsip_options: Fix non-qualified contacts showing as unavailable · 298faf7c
      George Joseph authored
      The "Add qualify_timeout processing and eventing" patch introduced
      an issue where contacts that had qualify_frequency set to 0 were
      showing Unavailable instead Unknown.  This patch checks for
      qualify_frequency=0 and create an "Unknown"  contact_status
      with an RTT = 0.
      
      Previously, the lack of contact_status implied Unknown but since
      we're now changing endpoint state based on contact_status, I've
      had to add new UNKNOWN status so that changes could trigger the
      appropriate contact_status observers.
      
      ASTERISK-24977: #close
      
      Change-Id: Ifcbc01533ce57f0e4e584b89a395326e098b8fe7
      298faf7c
  5. Apr 13, 2015
    • Matt Jordan's avatar
      git migration: Refactor the ASTERISK_FILE_VERSION macro · 4a582616
      Matt Jordan authored
      Git does not support the ability to replace a token with a version
      string during check-in. While it does have support for replacing a
      token on clone, this is somewhat sub-optimal: the token is replaced
      with the object hash, which is not particularly easy for human
      consumption. What's more, in practice, the source file version was often
      not terribly useful. Generally, when triaging bugs, the overall version
      of Asterisk is far more useful than an individual SVN version of a file. As a
      result, this patch removes Asterisk's support for showing source file
      versions.
      
      Specifically, it does the following:
      
      * Rename ASTERISK_FILE_VERSION macro to ASTERISK_REGISTER_FILE, and
        remove passing the version in with the macro. Other facilities
        than 'core show file version' make use of the file names, such as
        setting a debug level only on a specific file. As such, the act of
        registering source files with the Asterisk core still has use. The
        macro rename now reflects the new macro purpose.
      
      * main/asterisk:
        - Refactor the file_version structure to reflect that it no longer
          tracks a version field.
        - Remove the "core show file version" CLI command. Without the file
          version, it is no longer useful.
        - Remove the ast_file_version_find function. The file version is no
          longer tracked.
        - Rename ast_register_file_version/ast_unregister_file_version to
          ast_register_file/ast_unregister_file, respectively.
      
      * main/manager: Remove value from the Version key of the ModuleCheck
        Action. The actual key itself has not been removed, as doing so would
        absolutely constitute a backwards incompatible change. However, since
        the file version is no longer tracked, there is no need to attempt to
        include it in the Version key.
      
      * UPGRADE: Add notes for:
        - Modification to the ModuleCheck AMI Action
        - Removal of the "core show file version" CLI command
      
      Change-Id: I6cf0ff280e1668bf4957dc21f32a5ff43444a40e
      4a582616
  6. Jan 05, 2015
Loading