Skip to content
Snippets Groups Projects
  1. Nov 10, 2016
  2. Nov 09, 2016
    • Mark Michelson's avatar
      res_pjsip_session: Do not call session supplements when it's too late. · e5860ce0
      Mark Michelson authored
      res_pjsip_sesssion was hooking into transaction and invite state
      changes. One of the reasons for doing so was due to the
      PJSIP_EVENT_TX_MSG event. The idea was that we were hooking into the
      message sending process, and so we should call session supplements to
      alter the outgoing message.
      
      In reality, this event was meant to indicate that the message either
      a) had already been sent, or
      b) required a DNS lookup and would be sent when the DNS query
      completed.
      
      In case (a), this meant we were altering an already-sent
      request/response for no reason. In case (b), this potentially meant we
      could be trying to alter a request/response at the same time that the
      DNS resolution completed. In this case, it meant we might be stomping on
      memory being used by the thread actually sending the message. This
      caused potential crashes and memory corruption.
      
      This patch removes the calls to session supplements from the case where
      the PJSIP_EVENT_TX_MSG event occurs. In all of these cases, trying to
      alter the message at this point is too late, and it can cause nothing
      but harm to try to do it. Because there were no longer any calls to the
      handle_outgoing() function, it has been removed.
      
      Change-Id: Ibcc223fb1c3a237927f38754e0429e80ee301e92
      e5860ce0
  3. Nov 08, 2016
  4. Nov 07, 2016
  5. Nov 06, 2016
  6. Nov 04, 2016
    • Matt Jordan's avatar
      res_http_websocket: Increase the buffer size for non-LOW_MEMORY systems · 367d4903
      Matt Jordan authored
      Not surprisingly, using Respoke (and possibly other systems) it is
      possible to blow past the 16k limit for a WebSocket packet size. This
      patch bumps it up to 32k, which, at least for Respoke, is sufficient.
      For now.
      
      Because 32k is laughable on a LOW_MEMORY system (as is 16k, for that
      matter), this patch adds a LOW_MEMORY directive that sets the buffer to
      8k for systems who have asked for their reduced memory availability to
      be considered.
      
      Change-Id: Id235902537091b58608196844dc4b045e383cd2e
      367d4903
    • Matt Jordan's avatar
      res_stasis: Set a video source mode on Stasis created bridges · 7a449b68
      Matt Jordan authored
      When a bridge is created via ARI (through res_stasis), no video source
      mode is set by default. As a result, any endpoint sending video media
      won't ever see any video reflected back to it.
      
      This patch defaults a bridge to a 'follow the talker' video mode.
      Further work can be done to add routes that allow for the video mode to
      be controlled through the /bridges resource.
      
      Change-Id: I7e9d530a5d7a97a4524a9ee4e468e1a6b3443866
      7a449b68
    • Matt Jordan's avatar
      main/bridge_channel: Fix channel reference leak on video source · bbe94372
      Matt Jordan authored
      When a channel is made the video source, the bridge holds a reference to
      it. Whenever the video source changes, that reference is released.
      However, a ref leak does occur if the channel leaves the bridge (such as
      being hung up) while it is the video source, as the bridge never
      releases the ref in such a case.
      
      This patch adds a line to the bridge_channel_internal_join routine such
      that, when a channel finishes its time in the bridge, it notifies the
      bridge via ast_bridge_remove_video_src that if it is a video source its
      reference should be released.
      
      ASTERISK-26555 #close
      
      Change-Id: I3a2f5238a9d2fc49c591f0e65199d782ab0be76a
      bbe94372
    • Matt Jordan's avatar
      main/bridge: Add some verbose logging for video source changes · a70d6dba
      Matt Jordan authored
      It's actually quite useful to see the source of a video stream change.
      This doesn't happen terribly often, even with talk detection - but when
      it does, it's nice to know which channel is now providing your video
      stream.
      
      As a verbose 5 level message, it shouldn't be terribly spammy or costly
      to have, and is 'lower level' then most other verbose messages that the
      bridge system emits.
      
      ASTERISK-26555
      
      Change-Id: Ia1c20ecafa9670171fd38bddcf3beccae47fb15c
      a70d6dba
    • 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
    • Kevin Harwell's avatar
      stasis_recording/stored: remove calls to deprecated readdir_r function. · 70d5f90e
      Kevin Harwell authored
      The readdir_r function has been deprecated and should no longer be used. This
      patch removes the readdir_r dependency (replaced it with readdir) and also moves
      the directory search code to a more centralized spot (file.c)
      
      Also removed a strict dependency on the dirent structure's d_type field as it
      is not portable. The code now checks to see if the value is available. If so,
      it tries to use it, but defaults back to using the stats function if necessary.
      
      Lastly, for most implementations of readdir it *should* be thread-safe to make
      concurrent calls to it as long as different directory streams are specified.
      glibc falls into this category. However, since it is possible that there exist
      some implementations that are not safe, locking has been added for those other
      than glibc.
      
      ASTERISK-26412
      ASTERISK-26509 #close
      
      Change-Id: Id8f54689b1e2873e82a09d0d0d2faf41964e80ba
      70d5f90e
    • Kevin Harwell's avatar
      Revert "chan_sip: Fix lastrtprx always updated" · bf01ff53
      Kevin Harwell authored
      This reverts commit 93332cb1.
      
      Unfortunately, the aforementioned commit caused a regression (incoming calls
      would eventually disconnect). Thus it is being removed.
      
      ASTERISK-26523 #close
      ASTERISK-25270
      
      Change-Id: Ibf5586adc303073a8eac667a4cbfdb6be184a64d
      bf01ff53
  7. Nov 03, 2016
    • Alexander Anikin's avatar
      chan_ooh323: Fix infinite loop on read second part of H.225 packet · 15041942
      Alexander Anikin authored
      Fix logic on read second part of H.225 packet. There was infinite loop on
      wrong connections due to read before poll.
      
      Change-Id: I42b4bf75c46e4a5c5df5c5ca1f0bd74b8944e7ff
      15041942
    • George Joseph's avatar
      pjproject_bundled: Fix issue with libasteriskpj needing libresample · 78dc6cea
      George Joseph authored
      libresample is only needed by pjproject if we're building pjsua, which
      we only do if TEST_FRAMEWORK is selected.  It's required by pjsua to
      process audio which is needed by some testsuite tests.  Unfortunately,
      pjproject relies on a newer version of libresample than the version
      that ships by most distros so we need to compile the version that's
      bundled with pjproject.  Since we only need it for pjsua, we DON'T want
      it's symbols exposed when we actually build asterisk.
      
      There was a problem however... TEST_FRAMEWORK is only known AFTER we've
      already run ./configure on both asterisk and pjproject but pjproject's
      ./configure needs to test it to know whether to set up to build
      libresample or not.  The previous way of figuring this out was to
      always tell ./configure "yes" but not actually build the library.  This
      caused an issue where building libasteriskpj was being told to include
      libresample but it wasn't actually there.
      
      The solution is to still do a default pjproject configure during an
      asterisk ./configure but if makeopts or menuselect.makeopts changes
      subsequently, we now reconfigure pjproject, taking into account the
      current state of TEST_FRAMEWORK.  Previously, if makeopts or
      menuselect.makeopts changed, only a recompile of pjproject was done.
      
      Change-Id: I9b5d84c61384a3ae07fe30e85c49698378cc4685
      78dc6cea
Loading