Skip to content
Snippets Groups Projects
  1. Sep 08, 2017
    • Florian Floimair's avatar
      alembic: Add support for MS-SQL · e9a81157
      Florian Floimair authored
      MS-SQL has no native Enum-type support and therefore
      needs to work with constraints.
      Since these constraints need unique names the suggested approach
      referenced in the following alembic documentation has been applied:
      http://bit.ly/2x9r8pb
      
      ASTERISK-27255 #close
      
      Change-Id: I8b579750dae0c549f1103ee50172644afb9b2f95
      e9a81157
  2. Sep 06, 2017
  3. Aug 25, 2017
  4. Aug 10, 2017
    • Richard Mudgett's avatar
      res_pjsip: Remove ephemeral registered contacts on transport shutdown. · 82f4ade9
      Richard Mudgett authored
      The fix for the issue is broken up into three parts.
      
      This is part two which handles the server side of REGISTER requests when
      rewrite_contact is enabled.  Any registered reliable transport contact
      becomes invalid when the transport connection becomes disconnected.
      
      * Monitor the rewrite_contact's reliable transport REGISTER contact for
      shutdown.  If it is shutdown then the contact must be removed because it
      is no longer valid.  Otherwise, when the client attempts to re-REGISTER it
      may be blocked because the invalid contact is there.  Also if we try to
      send a call to the endpoint using the invalid contact then the endpoint is
      not likely to see the request.  The endpoint either won't be listening on
      that port for new connections or a NAT/firewall will block it.
      
      * Prune any rewrite_contact's registered reliable transport contacts on
      boot.  The reliable transport no longer exists so the contact is invalid.
      
      * Websockets always rewrite the REGISTER contact address and the transport
      needs to be monitored for shutdown.
      
      * Made the websocket transport set a unique name since that is what we use
      as the ao2 container key.  Otherwise, we would not know which transport we
      find when one of them shuts down.  The names are also used for PJPROJECT
      debug logging.
      
      * Made the websocket transport post the PJSIP_TP_STATE_CONNECTED state
      event.  Now the global keep_alive_interval option, initially idle shutdown
      timer, and the server REGISTER contact monitor can work on wetsocket
      transports.
      
      * Made the websocket transport set the PJSIP_TP_DIR_INCOMING direction.
      Now initially idle websockets will automatically shutdown.
      
      ASTERISK-27147
      
      Change-Id: I397a5e7d18476830f7ffe1726adf9ee6c15964f4
      82f4ade9
  5. Aug 03, 2017
    • Kevin Harwell's avatar
      alembic/res_pjsip: Add "webrtc" configuration option · 521b6fed
      Kevin Harwell authored
      When the "webrtc" option was added in res_pjsip it was not added to the alembic
      scripts. This patch adds the option for alembic.
      
      Also, changed the sorcery configuration type to an OPT_YESNO_T value instead of
      an OPT_BOOL_T so if this field is ever written to a database it will write out
      the correct value.
      
      ASTERISK-27119 #close
      
      Change-Id: I3e199f060aea25e193c439fc5cf96be4d3ed1c7b
      521b6fed
  6. Jul 21, 2017
  7. Jul 20, 2017
  8. Jul 06, 2017
  9. Jun 29, 2017
    • Torrey Searle's avatar
      res_pjsip: Add DTMF INFO Failback mode · fb7247c5
      Torrey Searle authored
      The existing auto dtmf mode reverts to inband if 4733 fails to be
      negotiated.  This patch adds a new mode auto_info which will
      switch to INFO instead of inband if 4733 is not available.
      
      ASTERISK-27066 #close
      
      Change-Id: Id185b11e84afd9191a2f269e8443019047765e91
      fb7247c5
  10. Jun 28, 2017
    • Mark Michelson's avatar
      chan_pjsip: Add support for multiple streams of the same type. · 45df25a5
      Mark Michelson authored
      The stream topology (list of streams and order) is now stored with the
      configured PJSIP endpoints and used during the negotiation process.
      
      Media negotiation state information has been changed to be stored
      in a separate object. Two of these objects exist at any one time
      on a session. The active media state information is what was previously
      negotiated and the pending media state information is what the
      media state will become if negotiation succeeds. Streams and other
      state information is stored in this object using the index (or
      position) of each individual stream for easy lookup.
      
      The ability for a media type handler to specify a callback for
      writing has been added as well as the ability to add file
      descriptors with a callback which is invoked when data is available
      to be read on them. This allows media logic to live outside of
      the chan_pjsip module.
      
      Direct media has been changed so that only the first audio and
      video stream are directly connected. In the future once the RTP
      engine glue API has been updated to know about streams each individual
      stream can be directly connected as appropriate.
      
      Media negotiation itself will currently answer all the provided streams
      on an offer within configured limits and on an offer will use the
      topology created as a result of the disallow/allow codec lines.
      
      If a stream has been removed or declined we will now mark it as such
      within the resulting SDP.
      
      Applications can now also request that the stream topology change.
      If we are told to do so we will limit any provided formats to the ones
      configured on the endpoint and send a re-invite with the new topology.
      
      Two new configuration options have also been added to PJSIP endpoints:
      
      max_audio_streams: determines the maximum number of audio streams to
      offer/accept from an endpoint. Defaults to 1.
      
      max_video_streams: determines the maximum number of video streams to
      offer/accept from an endpoint. Defaults to 1.
      
      ASTERISK-27076
      
      Change-Id: I8afd8dd2eb538806a39b887af0abd046266e14c7
      45df25a5
  11. Jun 19, 2017
    • Corey Farrell's avatar
      Core: Add support for systemd socket activation. · 70d2ccb9
      Corey Farrell authored
      This change adds support for socket activation of certain SOCK_STREAM
      listeners in Asterisk:
      * AMI / AMI over TLS
      * CLI
      * HTTP / HTTPS
      
      Example systemd units are provided.  This support extends to any socket
      which is initialized using ast_tcptls_server_start, so any unknown
      modules using this function will support socket activation.
      
      Asterisk continues to function as normal if socket activation is not
      enabled or if systemd development headers are not available during
      build.
      
      ASTERISK-27063 #close
      
      Change-Id: Id814ee6a892f4b80d018365c8ad8d89063474f4d
      70d2ccb9
  12. Jun 16, 2017
    • Alexei Gradinari's avatar
      res_pjsip: New endpoint option "notify_early_inuse_ringing" · 7a46309d
      Alexei Gradinari authored
      This option was added to control whether to notify dialog-info state
      'early' or 'confirmed' on Ringing when already INUSE.
      The value "yes" is useful for some SIP phones (Cisco SPA)
      to be able to indicate and pick up ringing devices.
      
      ASTERISK-26919 #close
      
      Change-Id: Ie050bc30023543c7dfb4365c5be3ce58c738c711
      7a46309d
  13. May 11, 2017
    • Alexei Gradinari's avatar
      res_pjsip: New endpoint option "refer_blind_progress" · 808f2998
      Alexei Gradinari authored
      This option was added to turn off notifying the progress details
      on Blind Transfer. If this option is not set then the chan_pjsip
      will send NOTIFY "200 OK" immediately after "202 Accepted".
      
      Some SIP phones like Mitel/Aastra or Snom keep the line busy until
      receive "200 OK".
      
      ASTERISK-26333 #close
      
      Change-Id: Id606fbff2e02e967c02138457badc399144720f2
      808f2998
  14. Apr 25, 2017
  15. Apr 07, 2017
    • Joshua Colp's avatar
      pjsip: Add Alembic for PUBLISH support. · 270b485f
      Joshua Colp authored
      This change adds database tables for the PUBLISH support so it
      can be configured using realtime. A minor fix to the
      res_pjsip_publish_asterisk module was done so that it read the
      sorcery configuration from the correct section. Finally the
      sample configuration files have been updated.
      
      ASTERISK-26928
      
      Change-Id: I81991ae5c75af98d247f7eacd1c0b0a763675952
      270b485f
  16. Mar 28, 2017
  17. Mar 22, 2017
    • Richard Begg's avatar
      res_pjsip_session: Enable RFC3578 overlap dialing support. · 6b7697ed
      Richard Begg authored
      Support for RFC3578 overlap dialling (i.e. 484 Response to partially matched
      destinations) as currently provided by chan_sip is missing from res_pjsip.
      This patch adds a new endpoint attribute (allow_overlap) [defaults to yes]
      which when set to yes enables 484 responses to partial destination
      matches rather than the current 404.
      
      ASTERISK-26864
      
      Change-Id: Iea444da3ee7c7d4f1fde1d01d138a3d7b0fe40f6
      6b7697ed
  18. 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
  19. 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
  20. Jan 31, 2017
  21. 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
  22. 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
  23. 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
  24. 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
  25. Dec 21, 2016
  26. Dec 15, 2016
  27. 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
  28. 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
  29. 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
  30. Sep 30, 2016
  31. 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
  32. Sep 02, 2016
Loading