mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-12-15 12:56:33 +00:00
56e636b60c
The aim of this example is to show how to make use of the accept-certificate signal from a GTK GUI, and prompt user in case of invalid certificate. There are two subtleties to be aware of: 1. the signal is emitted from the GStreamer streaming thread, therefore the caller can't modify the GUI straight away, instead they must do it from the main thread (eg. by using g_idle_add()) 2. in case of a redirection, then a TLS failure, the caller won't know about the redirection. Actually, it's possible to be notified of the redirection by watching "message:element" and inspecting http-headers, but even in that case, the signal will be received *after* the signal "accept-certificate" (even though the redirection happened *before*). This second point is tricky. It's not uncommon to have servers that redirect http requests to https. So errors of the type "HTTP -> HTTPS -> TLS error" happen, and if the caller doesn't care about redirection, they might prompt users with a message such as "TLS error for URL http://...", which wouldn't make much sense. This example shows how to handle that right, by connecting to the signal "message:element", inspecting the http-headers, and in case of redirection, updating the TLS error dialog to indicate that the request was redirected. Here are a few examples of streams that exhibit TLS failure (at the time of this commit, of course): * https://radiolive.sanjavier.es:8443/stream: unknown-ca * https://am981.ddns.net:9005/stream.ogg: unknown-ca * http://stream.diazol.hu:7092/zene.mp3: redir then bad-identity * https://streaming.fabrik.fm/izwi/echocast/audio/index.m3u8: unknown-ca (this one is a HLS stream) Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4925>
25 lines
781 B
Meson
25 lines
781 B
Meson
executable('gtkhttpsrc', 'gtkhttpsrc.c',
|
|
dependencies: [gst_dep, gtk_dep, optional_deps],
|
|
c_args: gst_plugins_good_args,
|
|
include_directories: [configinc],
|
|
install: false)
|
|
|
|
executable('gtksink', 'gtksink.c',
|
|
dependencies: [gst_dep, gtk_dep, optional_deps],
|
|
c_args: gst_plugins_good_args,
|
|
include_directories: [configinc],
|
|
install: false)
|
|
|
|
if have_gstgl
|
|
executable('gtkglsink', 'gtkglsink.c',
|
|
dependencies: [gst_dep, gstgl_dep, gtk_dep, x11_dep],
|
|
c_args: gst_plugins_good_args,
|
|
include_directories: [configinc],
|
|
install: false)
|
|
|
|
executable('glliveshader', 'glliveshader.c',
|
|
dependencies: [gst_dep, gstgl_dep, gstglproto_dep, gtk_dep, x11_dep],
|
|
c_args: gst_plugins_good_args,
|
|
include_directories: [configinc],
|
|
install: false)
|
|
endif
|