Skip to content
Snippets Groups Projects
  1. Mar 17, 2017
    • Richard Mudgett's avatar
      CHANNEL(callid): Give dialplan access to the callid. · 8cb4f9ce
      Richard Mudgett authored
      * Added CHANNEL(callid) to retrieve the call identifier log tag associated
      with the channel.  Dialplan now has access to the call log search key
      associated with the channel so it can be saved in case there is a problem
      with the call.
      
      ASTERISK-26878
      
      Change-Id: I2c97ebd928b6f3c5bc80c5729e4d3c07f453049f
      8cb4f9ce
  2. 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
  3. 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
  4. Mar 08, 2017
  5. Mar 01, 2017
    • Jørgen H's avatar
      res_pjsip WebRTC/websockets: Fix usage of WS vs WSS. · 7922f26c
      Jørgen H authored
      According to the RFC[1] WSS should only be used in the Via header
      for secure Websockets.
      
      * Use WSS in Via for secure transport.
      
      * Only register one transport with the WS name because it would be
      ambiguous.  Outgoing requests may try to find the transport by name and
      pjproject only finds the first one registered.  This may mess up unsecure
      websockets but the impact should be minimal.  Firefox and Chrome do not
      support anything other than secure websockets anymore.
      
      * Added and updated some debug messages concerning websockets.
      
      * security_events.c: Relax case restriction when determining security
      transport type.
      
      * The res_pjsip_nat module has been updated to not touch the transport
      on Websocket originating messages.
      
      [1] https://tools.ietf.org/html/rfc7118
      
      ASTERISK-26796 #close
      
      Change-Id: Ie3a0fb1a41101a4c1e49d875a8aa87b189e7ab12
      7922f26c
  6. Feb 27, 2017
    • George Joseph's avatar
      res_pjsip_outbound_registration: Subscribe to network change events · 22242fef
      George Joseph authored
      Outbound registration now subscribes to network change events
      published by res_stun_monitor and refreshes all registrations
      when an event happens.
      
      The 'pjsip send (un)register' CLI commands were updated to accept
      '*all' as an argument to operate on all registrations.
      
      The 'PJSIP(Un)Register' AMI commands were also updated to
      accept '*all'.
      
      ASTERISK-26808 #close
      
      Change-Id: Iad58a9e0aa5d340477fca200bf293187a6ca5a25
      22242fef
  7. Feb 14, 2017
    • Sean Bright's avatar
      app_voicemail: Allow 'Comedian Mail' branding to be overriden · 275f469a
      Sean Bright authored
      Original patch by John Covert, slight modifications by me.
      
      ASTERISK-17428 #close
      Reported by: John Covert
      Patches:
      	app_voicemail.c.patch (license #5512) patch uploaded by
              John Covert
      
      Change-Id: Ic3361b0782e5a5397a19ab18eb8550923a9bd6a6
      275f469a
    • Sean Bright's avatar
      app_record: Add option to prevent silence from being truncated · 662c9e69
      Sean Bright authored
      When using Record() with the silence detection feature, the stream is
      written out to the given file. However, if only 'silence' is detected,
      this file is then truncated to the first second of the recording.
      
      This patch adds the 'u' option to Record() to override that behavior.
      
      ASTERISK-18286 #close
      Reported by: var
      Patches:
      	app_record-1.8.7.1.diff (license #6184) patch uploaded by var
      
      Change-Id: Ia1cd163483235efe2db05e52f39054288553b957
      662c9e69
  8. Jan 23, 2017
    • 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
  9. Jan 17, 2017
  10. 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
  11. 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
  12. Dec 08, 2016
    • George Joseph's avatar
      res_pjsip_registrar: AMI Add RegistrationInboundContactStatuses command · 79b09b5f
      George Joseph authored
      The PJSIPShowRegistrationsInbound AMI command was just dumping out
      all AORs which was pretty useless and resource heavy since it had
      to get all endpoints, then all aors for each endpoint, then all
      contacts for each aor.
      
      PJSIPShowRegistrationInboundContactStatuses sends ContactStatusDetail
      events which meets the intended purpose of the other command and has
      significantly less overhead.  Also, some additional fields that were
      added to Contact since the original creation of the ContactStatusDetail
      event have been added to the end of the event.
      
      For compatibility purposes, PJSIPShowRegistrationsInbound is left
      intact.
      
      ASTERISK-26644 #close
      
      Change-Id: I326f12c9ecb52bf37ba03f0748749de4da01490a
      79b09b5f
  13. Dec 02, 2016
    • Richard Mudgett's avatar
      res_pjsip_outbound_registration.c: Filter redundant statsd reporting. · 4b3d3fc7
      Richard Mudgett authored
      Increasing the testsuite shutdown timeout before forcibly killing
      Asterisk allowed more events to be sent out.  Some tests failed as
      a result.  The tests/channels/pjsip/statsd/registrations failed
      because we now get the statsd events that a comment in the test
      configuration stated couldn't be intercepted.  Unfortunately, we
      get a variable number of events because of internal status state
      transition races generating redundant statsd events.
      
      We were reporting redundant statsd PJSIP.registrations.state changes
      for internal state changes that equated to the same thing publicly.
      
      * Made update_client_state_status() filter out redundant statsd
      updates.
      
      ASTERISK-26527
      
      Change-Id: If851c7d514bb530d9226e4941ba97dcf52000646
      4b3d3fc7
  14. Nov 30, 2016
    • Richard Mudgett's avatar
      PJPROJECT logging: Made easier to get available logging levels. · 1dfa11b6
      Richard Mudgett authored
      Use of the new logging is as simple as issuing the new CLI command or
      setting the new pjproject.conf option.
      
      Other options that can affect the logging are how you have the pjproject
      log levels mapped to Asterisk log types in pjproject.conf and if you have
      configured Asterisk to log the DEBUG type messages.  Altering the
      pjproject.conf level mapping shouldn't be necessary for most installations
      as the default mapping is sensible.  Configuring Asterisk to log the DEBUG
      message type is standard practice for collecting debug information.
      
      * Added CLI "pjproject set log level" command to dynamically adjust the
      maximum pjproject log message level.
      
      * Added CLI "pjproject show log level" command to see the currently set
      maximum pjproject log message level.
      
      * Added pjproject.conf startup section "log_level" option to set the
      initial maximum pjproject log message level so all messages could be
      captured from initialization.
      
      * Set PJ_LOG_MAX_LEVEL to 6 to compile in all defined logging levels into
      bundled pjproject.  Pjproject will use the currently set run time log
      level to determine if a log message is generated just like Asterisk
      verbose and debug logging levels.
      
      * In log_forwarder(), made always log enabled and mapped pjproject log
      messages.  DEBUG mapped log messages are no longer gated by the current
      Asterisk debug logging level.
      
      * Removed RAII_VAR() from res_pjproject.c:get_log_level().
      
      ASTERISK-26630 #close
      
      Change-Id: I6dca12979f482ffb0450aaf58db0fe0f6d2e5389
      1dfa11b6
    • David Kerr's avatar
      app_originate: Add option to execute gosub prior to dial · ddc95106
      David Kerr authored
      Issue/patch ASTERISK-26587 was inspired by issue ASTERISK-22992
      that requested ability to add callerid into app_originate.
      Comments in that issue suggested that it was better solved by
      adding an option to gosub prior to originating the call.  The
      attached patch implements this much like app_dial with two
      options one to gosub on the originating channel and one to gosub
      on the newly created channel and behaves just like app_dial.
      I have tested this patch by adding callerid info to the new
      channel and also SIPAddHeader (to e.g. add header to force auto
      answer) and confirmed it works.  Have also tested both 'exten'
      and 'app' versions of app_originate.
      
      Opened by: dkerr
      Patch by: dkerr
      
      Change-Id: I36abc39b58567ffcab4a636ea196ef48be234c57
      ddc95106
  15. Nov 18, 2016
  16. Nov 14, 2016
    • Matt Jordan's avatar
      res/ari/resource_bridges: Add the ability to manipulate the video source · a72ef381
      Matt Jordan authored
      In multi-party bridges, Asterisk currently supports two video modes:
       * Follow the talker, in which the speaker with the most energy is shown
         to all participants but the speaker, and the speaker sees the
         previous video source
       * Explicitly set video sources, in which all participants see a locked
         video source
      
      Prior to this patch, ARI had no ability to manipulate the video source.
      This isn't important for two-party bridges, in which Asterisk merely
      relays the video between the participants. However, in a multi-party
      bridge, it can be advantageous to allow an external application to
      manipulate the video source.
      
      This patch provides two new routes to accomplish this:
      (1) setVideoSource: POST /bridges/{bridgeId}/videoSource/{channelId}
          Sets a video source to an explicit channel
      (2) clearVideoSource: DELETE /bridges/{bridgeId}/videoSource
          Removes any explicit video source, and sets the video mode to talk
          detection
      
      ASTERISK-26595 #close
      
      Change-Id: I98e455d5bffc08ea5e8d6b84ccaf063c714e6621
      a72ef381
    • Sebastien Duthil's avatar
      res_ari: Add support for channel variables in ARI events. · c6d755de
      Sebastien Duthil authored
      This works the same as for AMI manager variables. Set
      "channelvars=foo,bar" in your ari.conf general section, and then the
      channel variables "foo" and "bar" (along with their values), will
      appear in every Stasis websocket channel event.
      
      ASTERISK-26492 #close
      patches:
        ari_vars.diff submitted by Mark Michelson
      
      Change-Id: I5609ba239259577c0948645df776d7f3bc864229
      c6d755de
    • Tzafrir Cohen's avatar
      Add support for building RADIUS with radcli · 97a75e38
      Tzafrir Cohen authored
      Radcli is yet another RADIUS client library, generally compatible with
      freeradius and radiusclient-ng.
      
      This commit adds autoconf option for detecting it as well and changes
      cdr_radius and cel_radius to use its header file in that case.
      
      ASTERISK-26540 #close
      
      Change-Id: I271f0715406334874865ffbce0b354b3a2ca148f
      97a75e38
  17. Nov 10, 2016
  18. Nov 02, 2016
    • Alexander Traud's avatar
      rtp_engine: Allow more than 32 dynamic payload types. · 9ac53877
      Alexander Traud authored
      Since adding all remaining rates of Signed Linear (ASTERISK-24274), SILK
      (Gerrit 3136) and Codec 2 (ASTERISK-26217), no RTP Payload Type is left in the
      dynamic range (96-127). RFC 3551 section 3 allows to reassign other ranges.
      Consequently, when the dynamic range is exhausted, this change utilizes payload
      types in the range between 35 and 63 giving room for another 29 payload types.
      
      ASTERISK-26311 #close
      
      Change-Id: I7bc96ab764bc30098a178b841cbf7146f9d64964
      9ac53877
  19. Nov 01, 2016
    • Matt Jordan's avatar
      res/stasis: Add CLI commands for displaying/debugging ARI apps · c30d6773
      Matt Jordan authored
      This patch adds three new CLI commands:
       - ari show apps: list the registered ARI applications
       - ari show app: show detailed information about an ARI application
       - ari set debug: dump events being sent to an ARI application
      
      Note that while these CLI commands live in the res_stasis module, we use
      the 'ari' family for these commands. This was done as most users of
      Asterisk aren't aware of the semantic differences between ARI and
      res_stasis, and some 'ari' CLI commands already exist.
      
      ASTERISK-26488 #close
      
      Change-Id: I51ad6ff0cabee0d69db06858c13f18b1c513c9f5
      c30d6773
  20. 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
  21. 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
  22. Oct 25, 2016
    • Badalyan Vyacheslav's avatar
      cdr_radius,cel_radius: Fix old memleak in unload · 01d1d376
      Badalyan Vyacheslav authored
      - Call "rc_openlog" optional. If you do not call,
      you will simply NULL instead of a name.
      
      - On the one PID can be only one syslog channel.
      And it can already be run in logger.c
      
      - Calling rc_openlog we assigns a new name for
      the channel syslog. This unexpected behavior for logger.c.
      
      Most lesser evil, is to agree on a NULL name syslog
      if the channel was not launched in logger.c.
      
      It also solves the problem of memory leaks.
      
      ASTERISK-26455 #close
      
      Change-Id: Ic17c38de67583e971d78fe18807d1a9faf8f0afd
      01d1d376
  23. 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
  24. Oct 19, 2016
    • Michael Walton's avatar
      res_rtp_asterisk: Add ice_blacklist option · 3e96d491
      Michael Walton authored
      Introduces ice_blacklist configuration in rtp.conf. Subnets listed in the
      form ice_blacklist = <subnet spec>, e.g. ice_blacklist =
      192.168.1.0/255.255.255.0, are excluded from ICE host, srflx and relay
      discovery. This is useful for optimizing the ICE process where a system
      has multiple host address ranges and/or physical interfaces and certain
      of them are not expected to be used for RTP. Multiple ice_blacklist
      configuration lines may be used. If left unconfigured, all discovered
      host addresses are used, as per previous behavior.
      
      Documention in rtp.conf.sample.
      
      ASTERISK-26418 #close
      
      Change-Id: Ibee88f80d7693874fda1cceaef94a03bd86012c9
      3e96d491
  25. Oct 17, 2016
    • Matt Jordan's avatar
      res/ari: Add the Asterisk EID field to outgoing events · dd5129d8
      Matt Jordan authored
      This patch adds the Asterisk EID field to all outgoing ARI events.
      Because this field should be added to all events as they are
      transmitted, it is appended to the JSON message just prior to it being
      handed off to the application message handler. This makes it somewhat
      resilient to both new events being added to ARI, as well as other
      potential event transport mechanisms.
      
      ASTERISK-26470 #close
      
      Change-Id: Ieff0ecc24464e83f3f44e9c3e7bd9a5d70b87a1d
      dd5129d8
  26. Oct 11, 2016
    • George Joseph's avatar
      app_dial: Add the "Q" option to set the cause on unanswered channels · 86e87169
      George Joseph authored
      The "Q" option will set the cause on the unanswered channels when
      another channel answers.  It overrides the default of
      ANSWERED_ELSEWHERE.
      
      NOTE:  chan_sip does not support setting the cause on a CANCEL to
      anything other than ANSWERED_ELSEWHERE.
      
      ASTERISK-26446 #close
      
      Change-Id: I71742e0919aaa16784c30a2b2e73fbeed7672e47
      86e87169
  27. Sep 29, 2016
  28. Sep 15, 2016
    • Tzafrir Cohen's avatar
      sd_notify (systemd status notifications) support · 07b95f7c
      Tzafrir Cohen authored
      sd_notify() is used to notify systemd of changes to the status of the
      process. This allows the systemd daemon to know when the process
      finished loading (and thus only start another program after Asterisk has
      finished loading).
      
      To use this, use a systemd unit with 'Type=notify' for Asterisk.
      
      This commit also adds the function ast_sd_notify(), a wrapper around
      sd_notify that does nothing if not built with systemd support.
      
      Also adds support for libsystemd detection in the configure script.
      
      Change-Id: Ied6a59dafd5ef331c5c7ae8f3ccd2dfc94be7811
      07b95f7c
  29. Sep 09, 2016
    • 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
    • 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
  30. Sep 07, 2016
    • Mark Michelson's avatar
      ConfBridge: Make some announcements asynchronous. · ac02bbd9
      Mark Michelson authored
      Confbridge announcements tend to block a channel while they are being
      played. In some circumstances, this is warranted since you want that
      particular channel not to hear the announcement (Example: "John Doe has
      entered the conference"). For others it makes less sense.
      
      This change first introduces methods for playing sounds asynchronously
      into the conference. This is very similar to how synchronous sounds are
      played, except the channel initiating the playback does not wait for the
      sound to complete before moving on.
      
      Asynchronous announcements are used for two circumstances:
      * Sounds played for a user after they have left the bridge
      * Sounds that play first to a single user and then the rest of the
        conference (if the channel and conference use the same language)
      
      ASTERISK-26289 #close
      Reported by Mark Michelson
      
      Change-Id: Ie486bb3de1646d50894489030326a423e594ab0a
      ac02bbd9
    • Alexander Traud's avatar
      chan_sip: Allow Preferred sRTP. · 7a12355d
      Alexander Traud authored
      Following the Encrypt-all-the-things paradigm:
      
      The user enters his SIP-URI and password. Thanks to DNS-NAPTR, the phone
      determines SIP-over-TLS as preferred transport. In SIP/SDP, the phone starts
      the call with a crypto attribute, but not as RTP/sAVP but the RTP/AVP profile
      (sRTP is preferred aka optional; not mandatory). If the VoIP server does not
      support sRTP and TLS, the phone shows an open padlock icon.
      
      This paradigm is supported by several VoIP/SIP clients on default. Some
      implementations even cannot be changed to RTP/sAVP. Therefore here, this
      change allows Preferred sRTP for ingress. For egress, please, create a dial
      plan which starts with RTP/SAVP, and when rejected tries again with RTP/AVP.
      
      ASTERISK-20234 #close
      Reported by: tootai
      Tested by: tootai, Alexander Traud
      patches:
       srtp_patches.diff submitted by Matt Jordan
      
      Change-Id: I42cb779df3a9c7b3dd03a629fb3a296aa4ceb0fd
      7a12355d
  31. Sep 06, 2016
    • George Joseph's avatar
      build: Add download capability for external packages · 6caf6bcd
      George Joseph authored
      The DPMA and g729a, silk, siren7 and siren14 codecs hosted at
      http://downloads.digium.com/pub/telephony/ are now listed in the
      "External" sections of the "Resource Modules" and "Codec Translators"
      pages in menuselect.  Any that are selected will automatically be
      downloaded and installed when "make install" is run.  Their LICENSE and
      README (if avaialble) files will be installed to
      ASTVARLIBDIR/documentation/thirdparty/<product_name>.
      
      Example use with codecs:
      
      The codecs/codecs.xml file is a menuselect style xml file that lists
      the codecs to be included.  Their support levels are 'external', which
      triggers the download and install, and defaultenabled is no.  Also
      because codec_g729a is actually in a directory named codec_g729 on the
      download server, the newly added 'member_data' element is used to
      override the default of the directory name being the package name.  You
      can use the 'directory_name' attribute to keep default base URL
      (http://downloads.digium.com/pub/telephony/) but use the new directory,
      or you use the 'remote_url' attribute to specify a full URL to the
      download directory.  In this case, you must still follow the same
      subdirectory naming conventions as that used for the packages located
      at 'http://downloads.digium.com/pub/telephony'.
      
      A new configure option '--with-externals-cache' was added and like
      '--with-sounds-cache' it allows the installer to cache tarballs so
      they're not downloaded every time.
      
      To assist with the download and install process, each external package
      now has a manifest.xml file that, among other things, contains a package
      version and checksums for each file in the tarball.  The manifest is
      saved to both the cache directory and ASTMODDIR and together with the
      manifest.xml on the downloads site, tells the install scripts whether
      a download and/or update is needed.
      
      bash and xmlstarlet are required for downloader operation.  If they're
      not installed, the external items in menuselect will be unavailable.
      
      Change-Id: Id3dcf1289ffd3cb0bbd7dfab3cafbb87be60323a
      6caf6bcd
  32. Aug 25, 2016
    • Richard Mudgett's avatar
      res_pjsip: Cache global config options. · ea929d76
      Richard Mudgett authored
      We may check a global config option hundreds of times a second or more.
      Asking sorcery for the global configuration from the config files backend
      involves several allocations and container traversals.  Using realtime
      without a memory cache is a lot worse because you have to lookup in the
      realtime database each time to reconstitute the sorcery object.  With a
      memory cache for realtime, there is about the same amount of overhead as
      for config files.  Either way, it is still fairly expensive to access the
      sorcery object that much.
      
      * Cache the global config options so we can access them faster.  You must
      now always perform a res_pjsip reload to change the global options.
      
      Change-Id: Ice16c7a4cbca4614da344aaea21a072b86263ef7
      ea929d76
Loading