Skip to content
Snippets Groups Projects
  1. Nov 15, 2017
    • George Joseph's avatar
      ast_coredumper: Add ability to use directory other than /tmp · cf1cb334
      George Joseph authored
      The OUTPUTDIR environment variable can now be set either in the
      environment itself or in ast_debug_tools.conf.  If set, it's used
      for all work products instead of /tmp.
      
      Also added the --tarball-config option that includes the contents
      of /etc/asterisk when either --tarball-coredumps or --tarball-results
      are used.
      
      Change-Id: I66b2553319df61caea5b313d084f51978f730b4c
      cf1cb334
  2. Nov 06, 2017
    • 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
  3. Nov 04, 2017
    • Alexander Traud's avatar
      install_prereq: Checkout of libSRTP 2.x. · 2ebea5aa
      Alexander Traud authored
      Since Asterisk 13.17, libSRTP 2.x is supported. Therefore, its latest version
      is installed again via the script install_prereq.
      
      ASTERISK-27356
      
      Change-Id: I13125839a79052356469e41edacbebff0a937d39
      2ebea5aa
  4. Oct 30, 2017
  5. Oct 25, 2017
    • Joshua Colp's avatar
      res_pjsip: Add 'ip' as a valid option to 'identify_by' on endpoint. · 9e1fbab3
      Joshua Colp authored
      When the identify_by option on an endpoint is set to ip it will
      only be identified using the res_pjsip_endpoint_identifier_ip module.
      This ensures that it is not mistakenly matched using the username of
      the From header. To ensure behavior has not changed the default has
      been changed to "username,ip" for the identify_by option.
      
      ASTERISK-27206
      
      Change-Id: I2170b86a7f7e221b4f00bf14aa1ef1ac5b050bbd
      9e1fbab3
    • George Joseph's avatar
      ast_coredumper: Add gzipping of binaries and display of signal info · 4aec7069
      George Joseph authored
      The --tarball-coredump option now creates a gzipped tarball of
      coredumps processed, their results txt files and copies of
      /etc/os-release, /usr/sbin/asterisk, /usr/lib(64)/libasterisk* and
      /usr/lib(64)/asterisk as those files are needed to properly examine
      the coredump.  The file will be named
      /tmp/asterisk.<timestamp>.coredumps.tar.gz or
      /tmp/asterisk-<uniqueid>.coredumps.tar.gz if --tarball-uniqueid was
      specified.
      
      Added dumps of *_siginfo to the top of the txt files so you can
      tell what signal was invoked.
      
      Change-Id: Ib9ee6d83592d4b1bc90cb3419a05376a88d1ded9
      4aec7069
  6. Oct 16, 2017
    • Torrey Searle's avatar
      contrib/script/sip_to_pjsip: implement 'all' for allow/disallow · da24d425
      Torrey Searle authored
      when 'all' is specified in an allow or disallow section, it should erase
      all values from the inverse section in the default config. E.G.
      allow=all should erase any deny values from default config &
      vice-versa
      
      ASTERISK-27333 #close
      
      Change-Id: I99219478fb98f08751d769daaee0b7795118a5a6
      da24d425
  7. Oct 10, 2017
  8. Sep 13, 2017
    • George Joseph's avatar
      res_pjsip: Add handling for incoming unsolicited MWI NOTIFY · 446d48fd
      George Joseph authored
      A new endpoint parameter "incoming_mwi_mailbox" allows Asterisk to
      receive unsolicited MWI NOTIFY requests and make them available to
      other modules via the stasis message bus.
      
      res_pjsip_pubsub has a new handler "pubsub_on_rx_mwi_notify_request"
      that parses a simple-message-summary body and, if
      endpoint->incoming_mwi_account is set, calls ast_publish_mwi_state
      with the voice-message counts from the message.
      
      Change-Id: I08bae3d16e77af48fcccc2c936acce8fc0ef0f3c
      446d48fd
  9. Sep 11, 2017
  10. 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
  11. Sep 06, 2017
  12. Aug 25, 2017
  13. 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
  14. 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
  15. Jul 21, 2017
  16. Jul 20, 2017
  17. Jul 06, 2017
  18. 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
  19. 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
  20. 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
  21. 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
  22. 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
  23. Apr 25, 2017
  24. 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
  25. Mar 28, 2017
  26. 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
  27. 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
  28. 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
  29. Jan 31, 2017
  30. 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
  31. 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
  32. 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
  33. 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
  34. Dec 21, 2016
  35. Dec 15, 2016
Loading