Skip to content
Snippets Groups Projects
  1. Mar 16, 2017
    • George Joseph's avatar
      res_pjsip: Symmetric transports · 5013d8f5
      George Joseph authored
      A new transport parameter 'symmetric_transport' has been added.
      
      When a request from a dynamic contact comes in on a transport with
      this option set to 'yes', the transport name will be saved and used
      for subsequent outgoing requests like OPTIONS, NOTIFY and INVITE.
      It's saved as a contact uri parameter named 'x-ast-txp' and will
      display with the contact uri in CLI, AMI, and ARI output.  On the
      outgoing request, if a transport wasn't explicitly set on the
      endpoint AND the request URI is not a hostname, the saved transport
      will be used and the 'x-ast-txp' parameter stripped from the
      outgoing packet.
      
      * config_transport was modified to accept and store the new parameter.
      
      * config_transport/transport_apply was updated to store the transport
        name in the pjsip_transport->info field using the pjsip_transport->pool
        on UDP transports.
      
      * A 'multihomed_on_rx_message' function was added to
        pjsip_message_ip_updater that, for incoming requests, retrieves the
        transport name from pjsip_transport->info and retrieves the transport.
        If transport->symmetric_transport is set, an 'x-ast-txp' uri parameter
        containing the transport name is added to the incoming Contact header.
      
      * An 'ast_sip_get_transport_name' function was added to res_pjsip.
        It takes an ast_sip_endpoint and a pjsip_sip_uri and returns a
        transport name if endpoint->transport is set or if there's an
        'x-ast-txp' parameter on the uri and the uri host is an ipv4 or
        ipv6 address.  Otherwise it returns NULL.
      
      * An 'ast_sip_dlg_set_transport' function was added to res_pjsip
        which takes an ast_sip_endpoint, a pjsip_dialog, and an optional
        pjsip_tpselector.  It calls ast_sip_get_transport_name() and if
        a non-NULL is returned, sets the selector and sets the transport
        on the dialog.  If a selector was passed in, it's updated.
      
      * res_pjsip/ast_sip_create_dialog_uac and ast_sip_create_dialog_uas
        were modified to call ast_sip_dlg_set_transport() instead of their
        original logic.
      
      * res_pjsip/create_out_of_dialog_request was modified to call
        ast_sip_get_transport_name() and pjsip_tx_data_set_transport()
        instead of its original logic.
      
      * Existing transport logic was removed from endpt_send_request
        since that can only be called after a create_out_of_dialog_request.
      
      * res_pjsip/ast_sip_create_rdata was converted to a wrapper around
        a new 'ast_sip_create_rdata_with_contact' function which allows
        a contact_uri to be specified in addition to the existing
        parameters.  (See below)
      
      * res_pjsip_pubsub/internal_pjsip_evsub_send_request was eliminated
        since all it did was transport selection and that is now done in
        ast_sip_create_dialog_uac and ast_sip_create_dialog_uas.
      
      * 'contact_uri' was added to subscription_persistence.  This was
        necessary because although the parsed rdata contact header has the
        x-ast-txp parameter added (if appropriate),
        subscription_persistence_update stores the raw packet which
        doesn't have it.  subscription_persistence_recreate was then
        updated to call ast_sip_create_rdata_with_contact with the
        persisted contact_uri so the recreated subscription has the
        correct transport info to send the NOTIFYs.
      
      * res_pjsip_session/internal_pjsip_inv_send_msg was eliminated since
        all it did was transport selection and that is now done in
        ast_sip_create_dialog_uac.
      
      * pjsip_message_ip_updater/multihomed_on_tx_message was updated
        to remove all traces of the x-ast-txp parameter from the
        outgoing headers.
      
      NOTE:  This change does NOT modify the behavior of permanent
      contacts specified on an aor.  To do so would require that the
      permanent contact's contact uri be updated with the x-ast-txp
      parameter and the aor sorcery object updated.  If we need to
      persue this, we need to think about cloning permanent contacts into
      the same store as the dynamic ones on an aor load so they can be
      updated without disturbing the originally configured value.
      
      You CAN add the x-ast-txp parameter to a permanent contact's uri
      but it would be much simpler to just set endpoint->transport.
      
      Change-Id: I4ee1f51473da32ca54b877cd158523efcef9655f
      5013d8f5
  2. Mar 15, 2017
    • Mark Michelson's avatar
      Add rtcp-mux support · 10fa49e3
      Mark Michelson authored
      This commit adds support for RFC 5761: Multiplexing RTP Data and Control
      Packets on a Single Port. Specifically, it enables the feature when
      using chan_pjsip.
      
      A new option, "rtcp_mux" has been added to endpoint configuration in
      pjsip.conf. If set, then Asterisk will attempt to use rtcp-mux with
      whatever it communicates with. Asterisk follows the rules set forth in
      RFC 5761 with regards to falling back to standard RTCP behavior if the
      far end does not indicate support for rtcp-mux.
      
      The lion's share of the changes in this commit are in
      res_rtp_asterisk.c. This is because it was pretty much hard wired to
      have an RTP and an RTCP transport. The strategy used here is that when
      rtcp-mux is enabled, the current RTCP transport and its trappings (such
      as DTLS SSL session) are freed, and the RTCP session instead just
      mooches off the RTP session. This leads to a lot of specialized if
      statements throughout.
      
      ASTERISK-26732 #close
      Reported by Dan Jenkins
      
      Change-Id: If46a93ba1282418d2803e3fd7869374da8b77ab5
      10fa49e3
    • Matt Jordan's avatar
      res_pjsip_endpoint_identifier_ip: Add an option to match requests by header · 1475604e
      Matt Jordan authored
      This patch adds a new features to the endpoint identifier module,
      'match_header'. When set, inbound requests are matched by a provided SIP
      header: value pair. This option works in conjunction with the existing
      'match' configuration option, such that if any 'match*' attribute
      matches an inbound request, the request is associated with the specified
      endpoint.
      
      Since this module now identifies by more than just IP address,
      appropriate renaming of the module and/or variables can be done in a
      non-release branch.
      
      ASTERISK-26863 #close
      
      Change-Id: Icfc14835c962f92e35e67bbdb235cf0589de5453
      (cherry picked from commit 30f52d79)
      1475604e
  3. Jan 31, 2017
  4. 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
  5. Jan 20, 2017
    • George Joseph's avatar
      debug_utilities: Create ast_loggrabber · d16b3a99
      George Joseph authored
      ast_loggrabber gathers log files from customizable search patterns,
      optionally converts POSIX timestamps to a readable format and
      tarballs the results.
      
      Also a few tweaks were made to ast_coredumper.
      
      Change-Id: I8bfe1468ada24c1344ce4abab7b002a59a659495
      (cherry picked from commit c70915287837704090d75f181525765de7a17221)
      d16b3a99
  6. Jan 11, 2017
    • George Joseph's avatar
      debug_utilities: Create the ast_coredumper utility · 0d53c91f
      George Joseph authored
      This utility allows easy manipulation of asterisk coredumps.
      
      * Configurable search paths and patterns for existing coredumps
      * Can generate a consistent coredump from the running instance
      * Can dump the lock_infos table from a coredump
      * Dumps backtraces to separate files...
        - thread apply 1 bt full -> <coredump>.thread1.txt
        - thread apply all bt -> <coredump>.brief.txt
        - thread apply all bt full -> <coredump>.full.txt
        - lock_infos table -> <coredump>.locks.txt
      * Can tarball corefiles and optionally delete them after processing
      * Can tarball results files and optionally delete them after processing
      * Converts ':' in coredump and results file names '-' to facilitate
        uploading.  Jira for instance, won't accept file names with colons
        in them.
      
      Tested on Fedora24+, Ubuntu14+, Debian6+, CentOS6+ and FreeBSD9+[1].
      
      [1] For *BSDs, the "devel/gdb" package might have to be installed to
      get a recent gdb.  The utility will check all instances of gdb
      it finds in $PATH and if one isn't found that can run python, it
      prints a friendly error.
      
      Change-Id: I935d37ab9db85ef923f32b05579897f0893d33cd
      (cherry picked from commit cb47b4556053cd50d9102eef913671ad0306062d)
      0d53c91f
  7. 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
  8. Dec 21, 2016
  9. Dec 15, 2016
  10. Oct 26, 2016
    • Joshua Colp's avatar
      pjsip: Fix a few media bugs with reinvites and asymmetric payloads. · aed6c219
      Joshua Colp authored
      When channel format changes occurred as a result of an RTP
      re-negotiation the bridge was not informed this had happened.
      As a result the bridge technology was not re-evaluated and the
      channel may have been in a bridge technology that was incompatible
      with its formats. The bridge is now unbridged and the technology
      re-evaluated when this occurs.
      
      The chan_pjsip module also allowed asymmetric codecs for sending
      and receiving. This did not work with all devices and caused one
      way audio problems. The default has been changed to NOT do this
      but to match the sending codec to the receiving codec. For users
      who want asymmetric codecs an option has been added, asymmetric_rtp_codec,
      which will return chan_pjsip to the previous behavior.
      
      The codecs returned by the chan_pjsip module when queried by
      the bridge_native_rtp module were also not reflective of the
      actual negotiated codecs. The nativeformats are now returned as
      they reflect the actual negotiated codecs.
      
      ASTERISK-26423 #close
      
      Change-Id: I6ec88c6e3912f52c334f1a26983ccb8f267020dc
      aed6c219
  11. Oct 23, 2016
    • Joshua Colp's avatar
      pjsip: Support dual stack automatically. · 403c4f58
      Joshua Colp authored
      This change adds support for dual stack automatically. No
      configuration is required and the IP address and version
      in the SIP messages and SDP will be automatically changed
      based on the transport over which the message is being
      sent. RTP usage has also been changed to listen on both
      IPv4 and IPv6 simultaneously to allow media to flow, and
      to allow ICE support on both simultaneously. This also
      allows failover between IPv6 and IPv4 to work as expected.
      
      ASTERISK-26309 #close
      
      Change-Id: I235a421d8f9a326606d861b449fa6fe3a030572d
      403c4f58
  12. Oct 07, 2016
    • George Joseph's avatar
      alembic: Allow cdr, config and voicemail to exist in the same schema · 442b5979
      George Joseph authored
      cdr, config and voicemail are all separate alembic trees.  Because
      alembic's default is to use a table named 'alembic_version' to store
      the current tree revision, the 3 trees can't exist in the same schema
      without stepping on each other.
      
      Now each tree uses 'alembic_version_<tree_name>' as the version table.
      Each tree's env.py script now first checks for 'alembic_version'.  If
      it finds it AND its revision is in the tree's history, the script
      renames it to 'alembic_version_<tree_name>'.  Regardless, the script
      then continues with the migration using 'alembic_version_<tree_name>'
      and creates that table if it's not found.  The result is that if an
      existing 'alembic_version' table was found but it didn't belong to this
      tree, it's left alone and 'alembic_version_<tree_name>' is used or
      created.
      
      WARNING:  If multiple trees are using the same schema, they MUST NOT
      CRU or D any objects with names that might exist in the other trees.
      An example would be 'yesno_values' type.  If two trees perform
      operations on it, one tree could pull it out from under the other.
      Thankfully we currently don't share any names among cdr, config and
      voicemail.
      
      NOTE:  Since the env.py scripts in each tree were identical, a common
      env.py has been placed in the ast-db-manage directory and a symlink
      to it has been placed in each tree directory.
      
      ASTERISK-24311 #close
      Reported-by: Dafi Ni
      
      Change-Id: I4d593f000350deb5d21a14fa1e9bc3896844d898
      442b5979
  13. Sep 30, 2016
  14. Sep 09, 2016
    • Richard Mudgett's avatar
      sip_to_pjsip.py: Map legacy_useroption_parsing. · 82ec58aa
      Richard Mudgett authored
      Map the sip.conf general section legacy_useroption_parsing to the
      new pjsip.conf global ignore_uri_user_options.
      
      ASTERISK-26316
      Reported by: Kevin Harwell
      
      Change-Id: I78108a31995db19d41f4e1a07b3324692c5363fc
      82ec58aa
    • Richard Mudgett's avatar
      res_pjsip: Add ignore_uri_user_options option. · ba362822
      Richard Mudgett authored
      This implements the chan_sip legacy_useroption_parsing option but with a
      better name.
      
      * Made the caller-id number and redirecting number strings obtained from
      incoming SIP URI user fields always truncated at the first semicolon.
      People don't care about anything after the semicolon showing up on their
      displays even though the RFC allows the semicolon.
      
      ASTERISK-26316 #close
      Reported by: Kevin Harwell
      
      Change-Id: Ib42b0e940dd34d84c7b14bc2e90d1ba392624f62
      ba362822
    • Walter Doekes's avatar
      contrib: Let safe_asterisk script continue without /dev/tty9. · 56caf540
      Walter Doekes authored
      If you use the safe_asterisk script, it uses hardcoded defaults before
      running configurable values from /etc/asterisk/startup.d. The hardcoded
      default has TTY=9. Some containerized environments don't have such a
      TTY, and safe_asterisk would stop.
      
      The custom configuration from /etc/asterisk/startup.d/* isn't read until
      after it stopped, so changing TTY in a custom config did not help.
      
      This changeset changes safe_asterisk to continue if the TTY setting was
      untouched and /dev/tty9 and /dev/vc/9 aren't found.
      
      Change-Id: I2c7cdba549b77f418a0af4cb1227e8e6fe4148fc
      56caf540
    • Aaron An's avatar
      res/res_pjsip: Add preferred_codec_only config to pjsip endpoint. · 2a50c291
      Aaron An authored
      This patch add config to pjsip by endpoint.
      ;preferred_codec_only=yes
      ; Respond to a SIP invite with the single most preferred codec
      ; rather than advertising all joint codec capabilities. This
      ; limits the other side's codec choice to exactly what we prefer.
      
      ASTERISK-26317 #close
      Reported by: AaronAn
      Tested by: AaronAn
      
      Change-Id: Iad04dc55055403bbf5ec050997aee2dadc4f0762
      2a50c291
  15. Sep 02, 2016
  16. Aug 26, 2016
    • Alexander Traud's avatar
      sip_to_pjsip: Migrate IPv4/IPv6 (Dual Stack) configurations. · f35501b8
      Alexander Traud authored
      When using the migration script sip_to_pjsip.py, and your sip.conf is
      configured with bindaddr=::, two transports are written to pjsip.conf, one for
      0.0.0.0 (IPv4) and one for [::] (IPv6). That way, PJProject listens on the IPv4
      and IPv6 wildcards; a IPv4/IPv6 Dual Stack configuration on a single interface
      like in chan_sip.
      
      Furthermore, the script internal functions "build_host" and "split_hostport"
      did not parse Literal IPv6 addresses as expected (like [::1]:5060). This change
      makes sure, even such addresses are parsed correctly.
      
      ASTERISK-26309
      
      Change-Id: Ia4799a0f80fc30c0550fc373efc207c3330aeb48
      f35501b8
  17. Aug 19, 2016
    • Alexander Traud's avatar
      sip_to_pjsip: Add cert_file. · 02a82f75
      Alexander Traud authored
      When using the migration script sip_to_pjsip.py, cert_file was not migrated to
      pjsip.conf. A previous change regarding this contained a copy/paste error.
      
      ASTERISK-22374
      
      Change-Id: I0fa72e9412117d53b4284fc6b83fa5b2b95ba03b
      02a82f75
  18. Aug 18, 2016
    • Kevin Harwell's avatar
      sip_to_pjsip: Set correct tls transport method · 96652724
      Kevin Harwell authored
      A recent update had a copy/paste error where the unused variable 'val' was
      being passed to the set_value function instead of the 'method' value itself.
      
      This patch passes in the right variable.
      
      ASTERISK-22374
      
      Change-Id: I895b7b3779ce4442bc58b8ec40d59dd29bb43f06
      96652724
    • Alexander Traud's avatar
      sip_to_pjsip: Map the TLS method correctly. · e55d1e47
      Alexander Traud authored
      When using the migration script sip_to_pjsip.py and tlsclientmethod is not set
      in sip.conf, the default value of chan_sip (sslv23) is copied to pjsip.conf, to
      overwrite the default of the PJProject (tlsv1). This makes sure, res_pjsip is
      offering/using not just TLSv1.0 but TLSv1.2 as well.
      
      ASTERISK-22374
      
      Change-Id: Ie530a3dae9926ae14f3920a21be1e2edb15bda4f
      e55d1e47
    • Alexander Traud's avatar
      sip_to_pjsip: Add compactheaders, timerb, timert1, and useragent. · da14c439
      Alexander Traud authored
      When using the migration script sip_to_pjsip.py, no section of type=system or
      type=general were created. Therefore the keys compactheaders, timerb, timert1,
      and useragent were not migrated to pjsip.conf.
      
      ASTERISK-22374
      
      Change-Id: I318a453843227ea36bf130d392d4abd7bd26b5a1
      da14c439
    • Alexander Traud's avatar
      sip_to_pjsip: Map (session-)timers correctly. · 675721a7
      Alexander Traud authored
      When using the migration script sip_to_pjsip.py, session-timers=accept and
      session-timers=refuse were mapped to wrong values.
      
      ASTERISK-22374
      
      Change-Id: Ie4e90d5f6a29aff07837b7fe5bc8aea5fb6fc092
      675721a7
    • Alexander Traud's avatar
      sip_to_pjsip: Write username even without authname. · acc5237e
      Alexander Traud authored
      When using the migration script sip_to_pjsip.py, now the (mandatory) username is
      written to pjsip.conf, even if there was no (optional) authname in the register
      string in sip.conf.
      
      ASTERISK-22374
      
      Change-Id: Ie53e1997104cd2674821688b8a8247249f5e156f
      acc5237e
    • Alexander Traud's avatar
      sip_to_pjsip: Parse register even with transport. · 3eb02235
      Alexander Traud authored
      When using the migration script sip_to_pjsip.py and the register string
      started with a transport in sip.conf - like tls://... - register was not parsed
      correctly and therefore not migrated correctly to pjsip.conf.
      
      ASTERISK-22374
      
      Change-Id: I44c12104eea2bd8558ada6d25d77edfecd92edd2
      3eb02235
    • Alexander Traud's avatar
      sip_to_pjsip: Write local_net, contact_acl, contact_deny, and contact_permit. · 9907e2b1
      Alexander Traud authored
      When using the migration script sip_to_pjsip.py, those keys got missing. These
      keys might appear several times and the function "merge_value" tried to collect
      those. However, because these keys have different names in sip.conf and
      pjsip.conf, "merge_value" was not able to find the new key name in sip.conf.
      This change lets "merge_value" search with the old key name in sip.conf and
      write with the new key name in pjsip.conf.
      
      ASTERISK-22374
      
      Change-Id: Ie53c5278ae6f1cb8fa7e96c5289877d46981d9d2
      9907e2b1
    • Alexander Traud's avatar
      sip_to_pjsip: Map externhost/ip to Transports. · c0e00757
      Alexander Traud authored
      When using the migration script sip_to_pjsip.py, the externhost or externip of
      sip.conf were erroneously written to Endpoints instead to Transports.
      
      ASTERISK-22374
      
      Change-Id: I2c5873386cfc388899fa9cf2368639dd12f1b8e4
      c0e00757
    • Alexander Traud's avatar
      sip_to_pjsip: Add defaultexpiry, maxexpiry, and minexpiry. · a937c2cc
      Alexander Traud authored
      When using the migration script sip_to_pjsip.py, defaultexpiry, maxexpiry, and
      minexpiry were not migrated to pjsip.conf.
      
      ASTERISK-22374
      
      Change-Id: I007fbf543dcadc96fc3ed71c54da502bcb209b7b
      a937c2cc
    • Alexander Traud's avatar
      sip_to_pjsip: Write media_encryption. · 163cc2d6
      Alexander Traud authored
      When using the migration script sip_to_pjsip.py, encryption=yes got missing and
      media_encryption=sdes was not written to pjsip.conf, because of a typo.
      
      ASTERISK-22374
      
      Change-Id: I0fc3e55dc512a57603ae0fef41baacccf2a35c05
      163cc2d6
    • Alexander Traud's avatar
      sip_to_pjsip: Write cos and tos. · d8b59707
      Alexander Traud authored
      When using the migration script sip_to_pjsip.py, both tos_sip and cos_sip got
      missed, because of a typo. Therefore, cos and tos were not written to
      pjsip.conf. Furthermore, that revealed a misuse of an internal function, caused
      by a copy-and-paste error.
      
      ASTERISK-22374
      
      Change-Id: Id245ebadf70ab9776eb280c026288540af3af5c2
      d8b59707
    • Alexander Traud's avatar
      sip_to_pjsip: Add cert_file and ca_list_path. · 38491401
      Alexander Traud authored
      When using the migration script sip_to_pjsip.py, cert_file and ca_list_path were
      not migrated to pjsip.conf.
      
      ASTERISK-22374
      
      Change-Id: I4612877d190b7f86a48698cefbf5c4db6c265825
      38491401
  19. Aug 17, 2016
    • George Joseph's avatar
      res_pjsip: Add contact_user to endpoint · 534063fd
      George Joseph authored
      contact_user, when specified on an endpoint, will override the user
      portion of the Contact header on outgoing requests.
      
      Change-Id: Icd4ebfda2f2e44d3ac749d0b4066630e988407d4
      534063fd
  20. Aug 11, 2016
    • Kevin Harwell's avatar
      alembic: add auth_username to endpoint's identify_by enum · b3c2f116
      Kevin Harwell authored
      A new identify_by option was added recently, auth_username. However, this
      setting was not added as an allowable choice in the database enumeration
      value.
      
      This patch updates the current enumeration, adding in the new setting.
      
      ASTERISK-26268 #close
      
      Change-Id: Ib4788e8485e4cd40172ec0abbf5810a147ab8bf8
      b3c2f116
  21. Aug 10, 2016
    • Kevin Harwell's avatar
      alembic/sqlalchemy: auto increment only allowed on a single column · d4170df4
      Kevin Harwell authored
      The extensions table defined two columns (id and priority) as primary key
      autoincrement columns. However only one is allowed when defining the primary
      key.
      
      This patch removes the autoincrement attribute from the priority column since
      it does not need to be as such and really should not have been on there in the
      first place.
      
      This patch also removes 'context', 'exten', and 'priority' from the primary key
      index and creates a new combined unique contraint index on them.
      
      ASTERISK-26183 #close
      
      Change-Id: Ib9c712c612a4d7ec1edb0dcb77f1bae0905a470b
      d4170df4
  22. Aug 08, 2016
    • Alexei Gradinari's avatar
      res_pjsip_mwi: fix unsolicited mwi blocks PJSIP stack · 403b6357
      Alexei Gradinari authored
      The PJSIP taskprocessors could be overflowed on startup
      if there are many (thousands) realtime endpoints
      configured with unsolicited mwi.
      The PJSIP stack could be totally unresponsive for a few minutes
      after boot completed.
      
      This patch creates a separate PJSIP serializers pool for mwi
      and makes unsolicited mwi use serializers from this pool.
      This patch also adds 2 new global options to tune taskprocessor
      alert levels: 'mwi_tps_queue_high' and 'mwi_tps_queue_low'.
      
      This patch also adds new global option 'mwi_disable_initial_unsolicited'
      to disable sending unsolicited mwi to all endpoints on startup.
      If disabled then unsolicited mwi will start processing
      on next endpoint's contact update.
      
      ASTERISK-26230 #close
      
      Change-Id: I4c8ecb82c249eb887930980a800c9f87f28f861a
      403b6357
  23. Aug 03, 2016
Loading