Skip to content
Snippets Groups Projects
  1. Apr 17, 2018
    • Joshua Colp's avatar
      bridge_softmix / app_confbridge: Add support for REMB combining. · 8de3fa2b
      Joshua Colp authored
      This change adds the ability for multiple REMB reports in
      bridge_softmix to be combined according to a configured
      behavior into a single report. This single report is sent
      back to the sender of video, which adjusts the encoding bitrate
      to be at or below the bitrate of the report. The available
      behaviors are: lowest, highest, and average. Lowest uses the
      lowest received bitrate. Highest uses the highest received
      bitrate. Average goes through the received bitrates adding
      them to the previous average and creates a new average.
      
      Other behaviors can be added in the future and the existing
      average one may be adjusted, but this provides the foundation
      to do so.
      
      Support for configuring which behavior to use has been
      added to app_confbridge.
      
      ASTERISK-27804
      
      Change-Id: I9eafe4e7c1f72d67074a8d6acb26bfcf19322b66
      8de3fa2b
    • Jenkins2's avatar
  2. Apr 16, 2018
  3. Apr 13, 2018
    • Ben Ford's avatar
      res_musiconhold: Don't restart MOH from beginning after announcement. · 4aeec610
      Ben Ford authored
      This reverts a problem introduced by the fix for ASTERISK_24329.
      Now, when an announcement is played while waiting in a queue, music on
      hold will not restart from the beginning of the sound file and will
      instead pick up where it left off. However, the incorrect behavior in
      ASTERISK_24329 is now present again; if an announcement X seconds
      long is played when music on hold starts, music on hold will start X
      seconds into the file.
      
      ASTERISK-27774 #close
      Reported by: lvl
      
      Change-Id: I86b2885ee7063268f9b9747eddb788336ade989b
      4aeec610
  4. Apr 12, 2018
    • Richard Mudgett's avatar
      pjsip_scheduler.c: Add ability to trace scheduled tasks. · 3bb6cf43
      Richard Mudgett authored
      When a scheduled task is created you can pass in the
      AST_SIP_SCHED_TASK_TRACK flag.  This new flag causes scheduling events to
      be logged.
      
      Change-Id: I91967eb3d5a220915ce86881a28af772f9a7f56b
      3bb6cf43
    • Richard Mudgett's avatar
      res_pjsip.c: Split ast_sip_push_task_synchronous() to fit expectations. · 237d341b
      Richard Mudgett authored
      ast_sip_push_task_synchronous() did not necessarily execute the passed in
      task under the specified serializer.  If the current thread is any
      registered pjsip thread then it would execute the task immediately instead
      of under the specified serializer.  Reentrancy issues could result if the
      task does not execute with the right serializer.
      
      The original reason ast_sip_push_task_synchronous() checked to see if the
      current thread was a registered pjsip thread was because of a deadlock
      with masquerades and the channel technology's fixup callback
      (ASTERISK_22936).  A subsequent masquerade deadlock fix (ASTERISK_24356)
      involving call pickups avoided the original deadlock situation entirely.
      The PJSIP channel technology's fixup callback no longer needed to call
      ast_sip_push_task_synchronous().
      
      However, there are a few places where this unexpected behavior is still
      required to avoid deadlocks.  The pjsip monitor thread executes callbacks
      that do calls to ast_sip_push_task_synchronous() that would deadlock if
      the task were actually pushed to the specified serializer.  I ran into one
      dealing with the pubsub subscriptions where an ao2 destructor called
      ast_sip_push_task_synchronous().
      
      * Split ast_sip_push_task_synchronous() into
      ast_sip_push_task_wait_servant() and ast_sip_push_task_wait_serializer().
      ast_sip_push_task_wait_servant() has the old behavior of
      ast_sip_push_task_synchronous().  ast_sip_push_task_wait_serializer() has
      the new behavior where the task is always executed by the specified
      serializer or a picked serializer if one is not passed in.  Both functions
      behave the same if the current thread is not a SIP servant.
      
      * Redirected ast_sip_push_task_synchronous() to
      ast_sip_push_task_wait_servant() to preserve API for released branches.
      
      ASTERISK_26806
      
      Change-Id: Id040fa42c0e5972f4c8deef380921461d213b9f3
      237d341b
    • Richard Mudgett's avatar
      pjsip_scheduler.c: Fix some corner cases. · c2f85e88
      Richard Mudgett authored
      * Fix the periodic interval wander because it may take significant time
      between the sched thread queueing the task in the serializer and the
      serializer actually executing the task.  The time it takes to actually
      execute the task was already taken into account.
      
      * Pass a schtd ref to the serializer when we queue a scheduled task on
      the serializer.  We don't want it going away on us while it is in the
      serializer queue.
      
      * Skip the scheduled task if the task was canceled between queueing the
      task to the serializer and the serializer actually executing the task.
      
      * Reorder struct ast_sip_sched_task to avoid unnecessary padding.  Removed
      task_id and added next_periodic.
      
      * Hold a ref to the passed in serializer so the serializer cannot go away
      on the scheduled task.
      
      ASTERISK_26806
      
      Change-Id: I6c8046b75f6953792c8c30e55b836a4291143f24
      c2f85e88
    • Richard Mudgett's avatar
      pjsip_scheduler.c: Sort "pjsip show scheduled_tasks" output. · 96c4a57e
      Richard Mudgett authored
      * A side benefit is that the scheduled tasks are not completely blocked
      while the CLI command executes.
      
      * Adjusted the "Task Name" column width to have more room for longer
      names.
      
      Change-Id: Iec64aa463ee8b10eef90120e00c38b1fb444087e
      96c4a57e
    • Jenkins2's avatar
      3c5d7686
    • Jenkins2's avatar
      77773262
    • Jenkins2's avatar
  5. Apr 11, 2018
  6. Apr 10, 2018
  7. Apr 09, 2018
  8. Apr 06, 2018
    • Richard Mudgett's avatar
      res_pjsip_refer/chan_sip: Fix INVITE with replaces transfer to ConfBridge · 0c03eab9
      Richard Mudgett authored
      There is a problem when an INVITE-with-Replaces transfer targets a channel
      in a ConfBridge.  The transfer will unconditionally swap out the
      ConfBridge channel.  Unfortunately, the ConfBridge state will not be aware
      of this change.  Unexpected behavior will happen as a result since
      ConfBridge channels currently can only be replaced by a masquerade and not
      normal bridge channel moves.
      
      * We just need to pretend that the channel isn't in a bridge (like other
      transfer methods already do) so the transfer channel will masquerade into
      the ConfBridge channel.
      
      Change-Id: I209beb0e748fa4f4b92a576f36afa8f495ba4c82
      0c03eab9
    • Joshua Colp's avatar
      pjsip / res_rtp_asterisk: Add support for sending REMB · c7bd5540
      Joshua Colp authored
      This change allows chan_pjsip to be given an AST_FRAME_RTCP
      containing REMB feedback and pass it to res_rtp_asterisk.
      Once res_rtp_asterisk receives the frame a REMB RTCP feedback
      packet is constructed with the appropriate contents and sent
      to the remote endpoint.
      
      ASTERISK-27776
      
      Change-Id: Ic53f821c1560d8924907ad82c4d9c0bc322b38cd
      c7bd5540
    • Jenkins2's avatar
    • Joshua Colp's avatar
      res_rtp_asterisk: Fix minimum block word length for REMB. · 39016e35
      Joshua Colp authored
      The minimum block word length is actually 4, not 5.
      
      Change-Id: I878542218225aed72c72bdf1b856fc822cd2d649
      39016e35
  9. Apr 05, 2018
    • Joshua Colp's avatar
      res_rtp_asterisk: Queue video update on picture loss indication. · 8a602f18
      Joshua Colp authored
      The previous payload specific feedback handling was very single
      minded in that it just assumed everything should trigger a video
      update. This was changed but the handling of picture loss indication
      was not added. The result was that video may not flow. This change
      adds it explicitly in.
      
      Change-Id: I1894be02e39ee10a0af841b5a1dca5f0ec7d60b6
      8a602f18
    • Richard Mudgett's avatar
      chan_sip.c: Fix INVITE with replaces channel ref leak. · d72a2966
      Richard Mudgett authored
      Given the below call scenario:
      A -> Ast1 -> B
      C <- Ast2 <- B
      
      1) A calls B through Ast1
      2) B calls C through Ast2
      3) B transfers A to C
      
      When party B transfers A to C, B sends a REFER to Ast1 causing Ast1 to
      send an INVITE with replaces to Ast2.  Ast2 then leaks a channel ref of
      the channel between Ast1 and Ast2.
      
      Channel ref leaks are easily seen in the CLI "core show channels" output.
      The leaked channels appear in the output but you can do nothing with them
      and they never go away unless you restart Asterisk.
      
      * Properly account for the channel refs when imparting a channel into a
      bridge when handling an INVITE with replaces in handle_invite_replaces().
      The ast_bridge_impart() function steals a channel ref but the code didn't
      account for how many refs were held by the code at the time and which ref
      was stolen.
      
      * Eliminated RAII_VAR in handle_invite_replaces().
      
      ASTERISK-27740
      
      Change-Id: I7edbed774314b55acf0067b2762bfe984ecaa9a4
      d72a2966
  10. Apr 04, 2018
  11. Apr 03, 2018
  12. Apr 02, 2018
Loading