Skip to content
Snippets Groups Projects
  1. Jun 13, 2017
    • Joshua Colp's avatar
      bridge: Add a deferred queue. · d6386a8f
      Joshua Colp authored
      This change adds a deferred queue to bridging. If a bridge
      technology determines that a frame can not be written and
      should be deferred it can indicate back to bridging to do so.
      Bridging will then requeue any deferred frames upon a new
      channel joining the bridge.
      
      This change has been leveraged for T.38 request negotiate
      control frames. Without the deferred queue there is a race
      condition between the bridge receiving the T.38 request
      negotiate and the second channel joining and being in the
      bridge. If the channel is not yet in the bridge then the T.38
      negotiation fails.
      
      A unit test has also been added that confirms that a T.38
      request negotiate control frame is deferred when no other
      channel is in the bridge and that it is requeued when a new
      channel joins the bridge.
      
      ASTERISK-26923
      
      Change-Id: Ie05b08523f399eae579130f4a5f562a344d2e415
      d6386a8f
  2. May 30, 2017
    • Mark Michelson's avatar
      Add primitive SFU support to bridge_softmix. · 2da86940
      Mark Michelson authored
      This sets up the "plumbing" in bridge_softmix to
      be able to accommodate Asterisk asking as an SFU
      (selective forwarding unit) for conferences.
      
      The way this works is that whenever a channel enters or leaves a
      conference, all participants in the bridge get sent a stream topology
      change request. The topologies consist of the channels' original
      topology, along with video destination streams corresponding to each
      participants' source video streams. So for instance, if Alice, Bob, and
      Carol are in the conference, and each supplies one video stream, then
      the topologies for each would look like so:
      
      Alice:
      Audio,
      Source video(Alice),
      Destination Video(Bob),
      Destination video (Carol)
      
      Bob:
      Audio,
      Source video(Bob)
      Destination Video(Alice),
      Destination video (Carol)
      
      Carol:
      Audio,
      Source video(Carol)
      Destination Video(Alice),
      Destination video (Bob)
      
      This way, video that arrives from a source video stream can then be
      copied out to the destination video streams on the other participants'
      channels.
      
      Once the bridge gets told that a topology on a channel has changed, the
      bridge constructs a map in order to get the video frames routed to the
      proper destination streams. This is done using the bridge channel's
      stream_map.
      
      This change is bare-bones with regards to SFU support. Some key features
      are missing at this point:
      
      * Stream limits. This commit makes no effort to limit the number of
        streams on a specific channel. This means that if there were 50 video
        callers in a conference, bridge_softmix will happily send out topology
        change requests to every channel in the bridge, requesting 50+
        streams.
      
      * Configuration. The plumbing has been added to bridge_softmix, but
        there has been nothing added as of yet to app_confbridge to enable SFU
        video mode.
      
      * Testing. Some functions included here have unit tests.
        However, the functionality as a whole has only been verified by
        hand-tracing the code.
      
      * Selectivenss. For a "selective" forwarding unit, this does not
        currently have any means of being selective.
      
      * Features. Presumably, someone might wish to only receive video from
        specific sources. There are no external-facing functions at the moment
        that allow for users to select who they receive video from.
      
      * Efficiency. The current scheme treats all video streams as being
        unidirectional. We could be re-using a source video stream as a
        desetnation, too. But to simplify things on this first round, I did it
        this way.
      
      Change-Id: I7c44a829cc63acf8b596a337b2dc3c13898a6c4d
      2da86940
  3. May 03, 2017
    • Kevin Harwell's avatar
      bridge_simple: Added support for streams · 7b0e3b92
      Kevin Harwell authored
      This patch is the first cut at adding stream support to the bridging framework.
      Changes were made to the framework that allows mapping of stream topologies to
      a bridge's supported media types.
      
      The first channel to enter a bridge initially defines the media types for a
      bridge (i.e. a one to one mapping is created between the bridge and the first
      channel). Subsequently added channels merge their media types into the bridge's
      adding to it when necessary. This allows channels with different sized
      topologies to map correctly to each other according to media type. The bridge
      drops any frame that does not have a matching index into a given write stream.
      
      For now though, bridge_simple will align its two channels according to size or
      first to join. Once both channels join the bridge the one with the most streams
      will indicate to the other channel to update its streams to be the same as that
      of the other. If both channels have the same number of streams then the first
      channel to join is chosen as the stream base.
      
      A topology change source was also added to a channel when a stream toplogy
      change request is made. This allows subsystems to know whether or not they
      initiated a change request. Thus avoiding potential recursive situations.
      
      ASTERISK-26966 #close
      
      Change-Id: I1eb5987921dd80c3cdcf52accc136393ca2d4163
      7b0e3b92
  4. Apr 14, 2017
  5. Apr 12, 2017
    • Torrey Searle's avatar
      bridging: Ensure successful T.38 negotation · 7819f957
      Torrey Searle authored
      When a T.38 happens immediatly after call establishment, the control
      frame can be lost because the other leg is not yet in the bridge.
      
      This patch detects this case an makes sure T.38 negotation happens
      when the 2nd leg is being made compatible with the negotating
      first leg
      
      ASTERISK-26923 #close
      
      Change-Id: If334125ee61ed63550d242fc9efe7987e37e1d94
      7819f957
  6. Mar 20, 2017
    • Sean Bright's avatar
      bridge_softmix: Ignore non-voice frames from translator · fc794de7
      Sean Bright authored
      Some codecs - codec_speex specifically - take voice frames and return
      other types of frames, like CNG. If we subsequently treat those as
      voice frames, we'll run into trouble when destroying the frame because
      of the requirement that each voice frame have an associated format.
      
      ASTERISK-26880 #close
      Reported by: Kirsty Tyerman
      
      Change-Id: I43f8450c48fb276ad8b99db8512be82949c1ca7c
      fc794de7
  7. Feb 27, 2017
    • Joshua Colp's avatar
      bridge_native_rtp: Handle case where channel joins already suspended. · ff2b4308
      Joshua Colp authored
      The bridge_native_rtp module did not properly handle the case where
      a smart bridge operation occurs while a channel is suspended. In this
      scenario the module would incorrectly set up local or remote RTP
      bridging despite the media having to flow through Asterisk. The remote
      endpoint would see two media streams and experience wonky audio.
      
      The module has been changed so that it ensures both channels are
      not suspended when performing the native RTP bridging and this
      requirement has been documented in the bridge technology.
      
      ASTERISK-26781
      
      Change-Id: Id4022d73ace837d4a293106445e3ade10dbc7c7c
      ff2b4308
  8. Feb 23, 2017
    • frahaase's avatar
      Binaural synthesis (confbridge): Adds binaural synthesis to bridge_softmix. · 094c26aa
      frahaase authored
      Adds binaural synthesis to bridge_softmix (via convolution using libfftw3).
      Binaural synthesis is conducted at 48kHz.
      For a conference, only one spatial representation is rendered.
      The default rendering is applied for mono-capable channels.
      
      ASTERISK-26292
      
      Change-Id: Iecdb381b6adc17c961049658678f6219adae1ddf
      094c26aa
  9. Dec 23, 2016
    • Richard Mudgett's avatar
      bridge_native_rtp.c: Minor code cleanups. · ac04e63a
      Richard Mudgett authored
      In native_rtp_bridge_compatible_check()
      
      * Made one variable declaration per line.
      
      * Extracted if test assignment to make the test easier to see.
      
      * Made long if tests easier to see the combinatorial logic.
      
      * Added bridge id to a couple debug messages.
      
      Change-Id: I65bc5732aa7c9a2537f062f106fbea711cf2daad
      ac04e63a
    • Richard Mudgett's avatar
      bridge_native_rtp.c: Fix native rtp bridge data race. · da6f40c9
      Richard Mudgett authored
      native_rtp_bridge_compatible() didn't lock the bridge channels before
      checking the channels for native bridging ability.  As a result, one of
      the channel's native format capabilities structure got replaced out from
      under the native bridge check.  Use of a stale pointer to freed memory
      causes bad things to happen.
      
      MALLOC_DEBUG, DO_CRASH, and the
      tests/channels/pjsip/transfers/blind_transfer/caller_direct_media
      testsuite test caught this.
      
      * Add missing channel locking in native_rtp_bridge_compatible().
      
      Change-Id: If25fdb3ac8e85563c4857fb8216b3d9dc3d0fa53
      da6f40c9
  10. Nov 06, 2016
  11. Nov 04, 2016
    • Matt Jordan's avatar
      bridges/bridge_softmix: Remove SSRC changes on join/leave; update video source · fb17b630
      Matt Jordan authored
      WebRTC clients really, really want to know the SSRC of the media they're
      getting. Changing the SSRC is generally not a good thing.
      
      bridge_softmix, starting in Asterisk 12, started changing the SSRC of
      parties as they joined or left the bridge. With most phones, this isn't
      a problem: phones just play back the stream they're getting. With WebRTC
      clients, however, the SSRC is tied to a media stream that may be
      negotiated. When a new SSRC just shows up, the media can be dropped.
      
      As it turns out, the SSRC change shouldn't even be necessary. From the
      perspective of the client, it's still talking to Asterisk with the same
      media stream: why indicate that the far party has suddenly changed to a
      different source of media?
      
      This patch opts to just remove the SSRC changes. With this patch, video
      clients that join/leave a softmix bridge actually get the video stream
      instead of freaking out.
      
      ASTERISK-26555
      
      Change-Id: I27fec098b32e7c8718b4b65f3fd5fa73527968bf
      fb17b630
  12. 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
  13. Apr 22, 2016
    • Richard Mudgett's avatar
      bridge_softmix.c: Fix crash if channel fails to join mixing tech. · 71dfa355
      Richard Mudgett authored
      softmix_bridge_join() failed because of an allocation failure.  To address
      this, the softmix bridge technology now checks if the channel failed to
      join softmix successfully.  In addition, the bridge now begins the process
      of kicking the channel out of the bridge so we don't have channels
      partially in the bridge for very long.
      
      * Fix the test_channel_feature_hooks.c unit tests.  The test channel must
      have a valid codec to join the simple_bridge technology.  This patch makes
      joining a bridge more strict by not allowing partially joined channels to
      remain in the bridge.
      
      Change-Id: I97e2ade6a2bcd1214f24fb839fda948825b61a2b
      71dfa355
  14. Apr 14, 2016
  15. Dec 06, 2015
    • Matt Jordan's avatar
      Revert "bridges/bridge_t38: Add a bridging module for managing T.38 state" · 75c800eb
      Matt Jordan authored
      This reverts commit f42d22d3.
      
      Unfortunately, using a bridge to manage T.38 state will cause severe deadlocks
      in core_unreal/chan_local. Local channels attempt to reach across both their
      peer and the peer's bridge to inspect T.38 state. Given the propensity of
      Local channel chains, managing the locking situation in such a scenario is
      practically infeasible.
      
      Change-Id: I932107387c13aad2c75a7a4c1e94197a9d6d8a51
      75c800eb
  16. Dec 04, 2015
    • Matt Jordan's avatar
      bridges/bridge_t38: Add a bridging module for managing T.38 state · f42d22d3
      Matt Jordan authored
      When 4875e5ac was merged, it fixed several issues with a direct media bridge
      transitioning to handling a T.38 fax. However, it uncovered a race condition
      caused by the bridging core. When a channel involved in a T.38 fax leaves a
      bridge, the frame queued by the channel driver that should inform the far side
      that it is no longer in a T.38 fax may not make it across the bridge. The
      bridging framework is *extremely* aggressive in tearing down the bridge, and
      control frames that are currently in flight *may* get dropped.
      
      This patch adds a new module to the bridging framework, bridge_t38. This module
      maintains some notion of the T.38 state for the two channels in a bridge. When
      the bridge detects that it is being torn down or when one of the two channels
      leaves, it informs the respective channel(s) that they should stop faxing. This
      ensures that channels switch back to audio if they survive and are ejected out
      of a bridge while faxing.
      
      ASTERISK-25582
      
      Change-Id: If5b0bb478eb01c4607c9f4a7fc17c7957d260ea0
      f42d22d3
  17. Nov 09, 2015
  18. Jul 28, 2015
    • Jonathan Rose's avatar
      holding_bridge: ensure moh participants get frames · 687597ca
      Jonathan Rose authored
      Currently, if a blank musiconhold.conf is used, musiconhold will fail
      to start for a channel going into a holding bridge with an anticipation
      of getting music on hold. That being the case, no frames will be written
      to the channel and that can pose a problem for blind transfers in PJSIP
      which may rely on frames being written to get past the REFER framehook.
      This patch makes holding bridges start a silence generator if starting
      music on hold fails and makes it so that if no music on hold functions
      are installed that the ast_moh_start function will report a failure so
      that consumers of that function will be able to respond appropriately.
      
      ASTERISK-25271 #close
      
      Change-Id: I06f066728604943cba0bb0b39fa7cf658a21cd99
      (cherry picked from commit 8458b8d4)
      687597ca
  19. Jul 09, 2015
    • Joshua Colp's avatar
      bridge_native_rtp.c: Don't start native RTP bridging after attended transfer. · 4a25d554
      Joshua Colp authored
      The bridge_native_rtp module adds a frame hook to channels which are in
      a native RTP bridge. This frame hook is used to intercept when a hold
      or unhold frame traverses the bridge so native RTP can be stopped or
      started as appropriate. This is expected but exposes a specific bug
      when attended transfers are involved.
      
      Upon completion of an attended transfer an unhold frame is queued up
      to take one of the channels involved off hold. After this is done
      the channel is moved between bridges.
      
      When the frame hook is involved in this case for the unhold it
      releases the channel lock and acquires the bridge lock. This
      allows the bridge core to step in and move the channel
      (potentially changing the bridging techology) from another thread.
      Once completed the bridge lock is released by the bridge core.
      The frame hook is then able to acquire the bridge lock and
      wrongfully starts native RTP again, despite the channel no longer
      being in the bridge or needing to start native RTP. In fact at
      this point the frame hook is no longer attached to the channel.
      
      This change makes it so the native RTP bridge data is available to
      the frame hook when it is invoked. Whether the frame hook has
      been detached or not is stored on the native RTP bridge data and
      is checked by the frame hook before starting or stopping native
      RTP bridging. If the frame hook has been detached it does nothing.
      
      ASTERISK-25240 #close
      
      Change-Id: I13a73186a05f4e5a764f81e5cd0ccec1ed1891d2
      4a25d554
  20. Apr 13, 2015
    • Matt Jordan's avatar
      git migration: Refactor the ASTERISK_FILE_VERSION macro · 4a582616
      Matt Jordan authored
      Git does not support the ability to replace a token with a version
      string during check-in. While it does have support for replacing a
      token on clone, this is somewhat sub-optimal: the token is replaced
      with the object hash, which is not particularly easy for human
      consumption. What's more, in practice, the source file version was often
      not terribly useful. Generally, when triaging bugs, the overall version
      of Asterisk is far more useful than an individual SVN version of a file. As a
      result, this patch removes Asterisk's support for showing source file
      versions.
      
      Specifically, it does the following:
      
      * Rename ASTERISK_FILE_VERSION macro to ASTERISK_REGISTER_FILE, and
        remove passing the version in with the macro. Other facilities
        than 'core show file version' make use of the file names, such as
        setting a debug level only on a specific file. As such, the act of
        registering source files with the Asterisk core still has use. The
        macro rename now reflects the new macro purpose.
      
      * main/asterisk:
        - Refactor the file_version structure to reflect that it no longer
          tracks a version field.
        - Remove the "core show file version" CLI command. Without the file
          version, it is no longer useful.
        - Remove the ast_file_version_find function. The file version is no
          longer tracked.
        - Rename ast_register_file_version/ast_unregister_file_version to
          ast_register_file/ast_unregister_file, respectively.
      
      * main/manager: Remove value from the Version key of the ModuleCheck
        Action. The actual key itself has not been removed, as doing so would
        absolutely constitute a backwards incompatible change. However, since
        the file version is no longer tracked, there is no need to attempt to
        include it in the Version key.
      
      * UPGRADE: Add notes for:
        - Modification to the ModuleCheck AMI Action
        - Removal of the "core show file version" CLI command
      
      Change-Id: I6cf0ff280e1668bf4957dc21f32a5ff43444a40e
      4a582616
  21. Apr 10, 2015
    • Richard Mudgett's avatar
      chan_pjsip/res_pjsip/bridge_softmix/core: Improve translation path choices. · c499cabf
      Richard Mudgett authored
      With this patch, chan_pjsip/res_pjsip now sets the native formats to the
      codecs negotiated by a call.
      
      * The changes in chan_pjsip.c and res_pjsip_sdp_rtp.c set the native
      formats to include all the negotiated audio codecs instead of only the
      initial preferred audio codec and later the currently received audio
      codec.
      
      * The audio frame handling in channel.c:ast_read() is more streamlined and
      will automatically adjust to changes in received frame formats.  The new
      policy is to remove translation and pass the new frame format to the
      receiver except if the translation was to a signed linear format.  A more
      long winded version is commented in ast_read() along with some caveats.
      
      * The audio frame handling in channel.c:ast_write() is more streamlined
      and will automatically adjust any needed translation to changes in the
      frame formats sent.  Frame formats sent can change for many reasons such
      as a recording is being played back or the bridged peer changed the format
      it sends.  Since it is a normal expectation that sent formats can change,
      the codec mismatch warning message is demoted to a debug message.
      
      * Removed the short circuit check in
      channel.c:ast_channel_make_compatible_helper().  Two party bridges need to
      make channels compatible with each other.  However, transfers and moving
      channels among bridges can result in otherwise compatible channels having
      sub-optimal translation paths if the make compatible check is short
      circuited.  A result of forcing the reevaluation of channel compatibility
      is that the asterisk.conf:transcode_via_slin and codecs.conf:genericplc
      options take effect consistently now.  It is unfortunate that these two
      options are enabled by default and negate some of the benefits to the
      changes in channel.c:ast_read() by forcing translation through signed
      linear on a two party bridge.
      
      * Improved the softmix bridge technology to better control the translation
      of frames to the bridge.  All of the incoming translation is now normally
      handled by ast_read() instead of splitting any translation steps between
      ast_read() and the slin factory.  If any frame comes in with an unexpected
      format then the translation path in ast_read() is updated for the next
      frame and the slin factory handles the current frame translation.
      
      This is the final patch in a series of patches aimed at improving
      translation path choices.  The other patches are on the following reviews:
      https://reviewboard.asterisk.org/r/4600/
      https://reviewboard.asterisk.org/r/4605/
      
      ASTERISK-24841 #close
      Reported by: Matt Jordan
      
      Review: https://reviewboard.asterisk.org/r/4609/
      ........
      
      Merged revisions 434671 from http://svn.asterisk.org/svn/asterisk/branches/13
      
      
      git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@434672 65c4cc65-6c06-0410-ace0-fbb531ad65f3
      c499cabf
    • Richard Mudgett's avatar
      bridge_softmix.c,channel.c: Minor code simplification and cleanup. · 6f1a7fe0
      Richard Mudgett authored
      * Made code easier to follow in bridge_softmix.c:analyse_softmix_stats()
      and made some debug messages more helpful.
      
      * Made some debug and warning messages more helpful in
      channel.c:set_format().
      
      Review: https://reviewboard.asterisk.org/r/4607/
      ........
      
      Merged revisions 434617 from http://svn.asterisk.org/svn/asterisk/branches/13
      
      
      git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@434618 65c4cc65-6c06-0410-ace0-fbb531ad65f3
      6f1a7fe0
  22. Apr 09, 2015
  23. Apr 08, 2015
    • Richard Mudgett's avatar
      Bridging: Eliminate the unnecessary make channel compatible with bridge operation. · 09df34d8
      Richard Mudgett authored
      When a channel enters the bridging system it is first made compatible with
      the bridge and then the bridge technology makes the channel compatible
      with the technology.  For all but the DAHDI native and softmix bridge
      technologies the make channel compatible with the bridge step is an
      effective noop because the other technologies allow all audio formats.
      For the DAHDI native bridge technology it doesn't matter because it is not
      an initial bridge technology and chan_dahdi allows only one native format
      per channel.  For the softmix bridge technology, it is a noop at best and
      harmful at worst because the wrong translation path could be setup if the
      channel's native formats allow more than one audio format.
      
      This is an intermediate patch for a series of patches aimed at improving
      translation path choices.
      
      * Removed code dealing with the unnecessary step of making the channel
      compatible with the bridge.
      
      ASTERISK-24841
      Reported by: Matt Jordan
      
      Review: https://reviewboard.asterisk.org/r/4600/
      ........
      
      Merged revisions 434424 from http://svn.asterisk.org/svn/asterisk/branches/13
      
      
      git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@434430 65c4cc65-6c06-0410-ace0-fbb531ad65f3
      09df34d8
  24. Feb 24, 2015
  25. Feb 11, 2015
  26. Jan 06, 2015
  27. Nov 09, 2014
    • Matthew Jordan's avatar
      bridge_native_rtp: Fix T.38 issues with remote bridges · 9a1ab5d5
      Matthew Jordan authored
      After r425242 the fax/sip/directmedia_reinvite_t38 test started failing due to
      the surviving channel not being re-INVITEd back from T.38 to audio. This patch
      fixes that bug - a deeper explanation of what happened follows.
      
      When two RTP channels are in a native bridge, the bridging layer will
      investigate each via the get_rtp_info glue callback. This callback returns the
      native bridge preference of the channel *at that moment in time* (that part is
      key). At different points during the bridging, the native bridging layer will
      inform the RTP capable channels of the status of the bridge via the update_peer
      glue callback.
      
      In a T.38 scenario with audio direct media, the sequence of events will often
      look like the following:
       * SIP/A and SIP/B both have audio and enter a native bridge.
       * Asterisk re-INVITEs audio between SIP/A and SIP/B directly (via an
         update_peer callback).
       * SIP/A sends a re-INVITE to T.38, which causes Asterisk to send a re-INVITE
         to T.38 to SIP/B. Assuming everyone 200 OKs the process, the UDPTL stack
         receives UDPTL packets in Asterisk from both endpoints. From the perspective
         of the channels, we are now in a local bridge for T.38, even though we are
         technically still in a remote bridge in bridge_native_rtp. (YAY!)
       * When one side hangs up, bridge_native_rtp is told to stop bridging. It then
         re-evaluates the channels and asks them how they are bridged - and since
         T.38 is enabled, they reply with a Local bridge (which is correct), but is
         wrong because the audio portion is still technically in a remote bridge.
       * Asterisk releases the surviving channel, whose audio is *not* re-INVITED
         back to Asterisk as bridge_native_rtp incorrectly assumes that it was in a
         local bridge.
      
      Ironically, prior to r425242, this used to work mostly due to a fluke in the
      bridging layer.
      
      The purpose of the get_rtp_info callback shouldn't be modified: it should tell
      the bridging layer what kind of bridge the channel prefers at that moment in
      time. If you have T.38 enabled, that *must* be a local bridge, as the UDPTPL
      stack must be in the media path. As such, this patch does not modify that
      part of the code.
      
      However, we have to tell the channels to re-evaluate themselves when they come
      out of a native bridge, since we can no longer trust the get_rtp_info callbacks
      when the native bridge is being stopped. Something else may have changed in the
      channels, and they may now be lying to us. As such, this patch makes it so that
      we unilaterally tell the channels that they are no longer bridged via the
      update_peer callback. This is actually what the channels expect anyway: code in
      both chan_sip and chan_pjsip's callbacks look at the T.38 state and - if they
      were in T.38 - send a re-INVITE to get the audio back to Asterisk.
      
      Review: https://reviewboard.asterisk.org/r/4157/
      ........
      
      Merged revisions 427582 from http://svn.asterisk.org/svn/asterisk/branches/12
      ........
      
      Merged revisions 427583 from http://svn.asterisk.org/svn/asterisk/branches/13
      
      
      git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@427584 65c4cc65-6c06-0410-ace0-fbb531ad65f3
      9a1ab5d5
  28. Oct 28, 2014
  29. Oct 17, 2014
  30. Oct 10, 2014
  31. Sep 18, 2014
  32. Jul 20, 2014
  33. Jul 18, 2014
  34. Jun 08, 2014
  35. Jun 01, 2014
  36. May 28, 2014
    • Matthew Jordan's avatar
      Logger/CLI/etc.: Fix some aesthetic issues; reduce chatty verbose messages · fb5690ce
      Matthew Jordan authored
      This patch addresses some aesthetic issues in Asterisk. These are all just
      minor tweaks to improve the look of the CLI when used in a variety of
      settings. Specifically:
       * A number of chatty verbose messages were removed or demoted to DEBUG
         messages. Verbose messages with a verbosity level of 5 or higher were -
         if kept as verbose messages - demoted to level 4. Several messages
         that were emitted at verbose level 3 were demoted to 4, as announcement
         of dialplan applications being executed occur at level 3 (and so the
         effects of those applications should generally be less).
       * Some verbose messages that only appear when their respective 'debug'
         options are enabled were bumped up to always be displayed.
       * Prefix/timestamping of verbose messages were moved to the verboser
         handlers. This was done to prevent duplication of prefixes when the
         timestamp option (-T) is used with the CLI.
       * Verbose magic is removed from messages before being emitted to
         non-verboser handlers. This prevents the magic in multi-line verbose
         messages (such as SIP debug traces or the output of DumpChan) from
         being written to files.
       * _Slightly_ better support for the "light background" option (-W) was
         added. This includes using ast_term_quit in the output of XML
         documentation help, as well as changing the "Asterisk Ready" prompt to
         bright green on the default background (which stands a better chance of
         being displayed properly than bright white).
      
      Review: https://reviewboard.asterisk.org/r/3547/
      
      
      
      git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@414798 65c4cc65-6c06-0410-ace0-fbb531ad65f3
      fb5690ce
  37. May 19, 2014
  38. May 18, 2014
    • Matthew Jordan's avatar
      bridge_native_rtp/bridge_channel: Fix direct media issues due to frame hook · 17ff4d92
      Matthew Jordan authored
      This patch fixes issues with direct media bridges that occur after a blind
      transfer. These issues were caught by the (currently failing)
      pjsip/transfers/blind_transfer/caller_direct_media test.
      
      The test currently fails primarily for two reasons:
      (1) When Bob and Charlie (the transfer target and the transfer destination)
          enter a bridge together, the framehook remains on the transfer target
          channel until both channels are in the bridge. As it consumes voice frames,
          the initial bridge type is a simple bridge. The framehook is removed when
          both channels are in the bridge; however, this does not currently cause the
          bridging framework to re-evaluate the bridge. This patch adds a
          AST_SOFTHANGUP_UNBRIDGE poke to the transfer target channel when a
          framehook is removed so the bridge can re-evaluate itself.
      
      (2) When a channel leaves a native RTP bridge, it may be leaving due to being
          hung up. Sending a re-INVITE to a channel that is about to be hung up is
          not nice - in fact, there's a good chance we'll send the BYE request before
          the channel has had a chance to send back a 200 OK. To be somewhat nicer,
          this patch adds a function to channel.h that allows the bridging framework
          to query for exactly why a channel is leaving a bridge via the channel's
          soft hangup flags. This allows it to only send the re-INVITE if there's a
          chance the channel will survive the native bridging experience.
      
      Review: https://reviewboard.asterisk.org/r/3535/
      ........
      
      Merged revisions 414122 from http://svn.asterisk.org/svn/asterisk/branches/12
      
      
      git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@414123 65c4cc65-6c06-0410-ace0-fbb531ad65f3
      17ff4d92
Loading