1. 18 Jun, 2020 2 commits
    • Sebastian Dröge's avatar
      rtsp-stream: Remove unused variable · d830670e
      Sebastian Dröge authored
      d830670e
    • Sebastian Dröge's avatar
      rtsp-media: Don't set the sinks to PLAYING on NO_PREROLL · ece5f3cc
      Sebastian Dröge authored
      Instead handle the sink states independent of the remainder of the
      pipeline state. This way we can start producing data in live pipelines
      while the sinks don't send out data yet until the PLAY/RECORD request is
      fully handled.
      
      This prevents sending data out before the PLAY response and also
      prevents the PLAY reponse to contain sequence numbers of a packet later
      than the first one, which then would cause clients to drop the first few
      packets that were actually received.
      
      This allows live medias to work correctly again without sometimes losing
      the first keyframe, or generally the first packets.
      ece5f3cc
  2. 15 Jun, 2020 4 commits
  3. 12 Jun, 2020 1 commit
  4. 10 Jun, 2020 2 commits
  5. 09 Jun, 2020 1 commit
  6. 08 Jun, 2020 1 commit
  7. 05 Jun, 2020 1 commit
  8. 03 Jun, 2020 1 commit
  9. 30 May, 2020 2 commits
  10. 27 May, 2020 8 commits
    • Tim-Philipp Müller's avatar
      meson: gir: remove bogus sources_top_dir kwarg · b61f1081
      Tim-Philipp Müller authored
      Doesn't actually exist. Was fixed differently in Meson
      so that the user doesn't have to specify it.
      
      Part-of: <!127>
      b61f1081
    • Tim-Philipp Müller's avatar
      tests: put registry into tests/check not the gst/ subdir · a33e756d
      Tim-Philipp Müller authored
      Underscorify the test name before setting GST_REGISTRY,
      so the registry actually ends up in the current build dir
      and not some subdir.
      
      For consistency with the other modules, but should also
      avoid problems on windows.
      
      Also fix indentation of environment block.
      
      Part-of: <!126>
      a33e756d
    • Tim-Philipp Müller's avatar
      tests: fix meson test env setup to make sure we use the right gst-plugin-scanner · f9348a5e
      Tim-Philipp Müller authored
      If core is built as a subproject (e.g. as in gst-build), make sure to use
      the gst-plugin-scanner from the built subproject. Without this, gstreamer
      might accidentally use the gst-plugin-scanner from the install prefix if
      that exists, which in turn might drag in gst library versions we didn't
      mean to drag in. Those gst library versions might then be older than
      what our current build needs, and might cause our newly-built plugins
      to get blacklisted in the test registry because they rely on a symbol
      that the wrongly-pulled in gst lib doesn't have.
      
      This should fix running of unit tests in gst-build when invoking
      meson test or ninja test from outside the devenv for the case where
      there is an older or different-version gst-plugin-scanner installed
      in the install prefix.
      
      In case no gst-plugin-scanner is installed in the install prefix, this
      will fix "GStreamer-WARNING: External plugin loader failed. This most
      likely means that the plugin loader helper binary was not found or
      could not be run. You might need to set the GST_PLUGIN_SCANNER
      environment variable if your setup is unusual." warnings when running
      the unit tests.
      
      In the case where we find GStreamer core via pkg-config we use
      a newly-added pkg-config var "pluginscannerdir" to get the right
      directory. This has the benefit of working transparently for both
      installed and uninstalled pkg-config files/setups.
      
      Part-of: <!126>
      f9348a5e
    • Tim-Philipp Müller's avatar
      tests: gst-plugins-base and -bad plugins are required for the unit tests · 92215f2f
      Tim-Philipp Müller authored
      Make hard requirement until we have more fine-grained control
      in the unit tests. Of course the presence of the .pc file doesn't
      imply that the plugins we need are actually there, but it's at
      least a step in the right direction.
      
      Part-of: <!126>
      92215f2f
    • Tim-Philipp Müller's avatar
      fe5d29ee
    • Ludvig Rappe's avatar
      rtsp-media: wait for all GstRTSPStreamBlocking messages · ae58f7d7
      Ludvig Rappe authored
      Make sure rtsp-media have received a GstRTSPStreamBlocking message from
      each active stream when checking if all streams are blocked.
      
      Without this change there will be a race condition when using two or
      more streams and rtsp-media receives a GstRTSPStreamBlocking message
      from one of the streams. This is because rtsp-media then checks if all
      streams are blocked by calling gst_rtsp_stream_is_blocking() for each
      stream. This function call returns TRUE if the stream has sent a
      GstRTSPStreamBlocking message, however, rtsp-media may have yet to
      receive this message. This would then result in that rtsp-media
      erroneously thinks it is blocking all streams which could result in
      rtsp-media changing state, from PREPARING to PREPARED. In the case of a
      preroll, this could result in that rtsp-media thinks that the pipeline
      is prerolled even though that might not be the case.
      
      Part-of: <!124>
      ae58f7d7
    • Ludvig Rappe's avatar
      rtsp-media: update expected_async_done during suspend · 0526a5c9
      Ludvig Rappe authored
      Set expected_async_done to FALSE in default_suspend() if a state change
      occurs and the return value from set_target_state() is something other
      than GST_STATE_CHANGE_ASYNC.
      
      Without this change there is a risk that expected_async_done will be
      TRUE even though no asynchronous state change is taking place. This
      could happen if the pipeline is set to PAUSED using
      media_set_pipeline_state_locked(), an asynchronous state change starts
      and then the media is suspended (which could result in a state change,
      aborting the asynchronous state change). If the media is suspended
      before the asynchronous state change ends then expected_async_done will
      be TRUE but no asynchronous state change is taking place.
      
      Part-of: <!123>
      0526a5c9
    • Kristofer Björkström's avatar
      rtsp-client: Fix race condition in rtsp ctrl timeout by WeakRef client · ba7d568b
      Kristofer Björkström authored
      There was a race condition where client was being finalized and
      concurrently in some other thread the rtsp ctrl timout was relying on
      client data that was being freed.
      When rtsp ctrl timeout is setup, a WeakRef on Client is set.
      
      Part-of: <!121>
      ba7d568b
  11. 18 May, 2020 1 commit
  12. 14 May, 2020 1 commit
  13. 03 May, 2020 2 commits
  14. 01 May, 2020 1 commit
  15. 28 Apr, 2020 4 commits
  16. 27 Apr, 2020 1 commit
  17. 30 Mar, 2020 1 commit
  18. 23 Mar, 2020 1 commit
    • Sebastian Dröge's avatar
      rtsp-auth: Fix NULL pointer dereference when handling an invalid basic Authorization header · 44ccca30
      Sebastian Dröge authored
      When using the basic authentication scheme, we wouldn't validate that
      the authorization field of the credentials is not NULL and pass it on
      to g_hash_table_lookup(). g_str_hash() however is not NULL-safe and will
      dereference the NULL pointer and crash.
      A specially crafted (read: invalid) RTSP header can cause this to
      happen.
      
      As a solution, check for the authorization to be not NULL before
      continuing processing it and if it is simply fail authentication.
      
      This fixes CVE-2020-6095 and TALOS-2020-1018.
      
      Discovered by Peter Wang of Cisco ASIG.
      44ccca30
  19. 09 Mar, 2020 1 commit
  20. 24 Feb, 2020 4 commits