mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2025-04-26 06:54:49 +00:00
souphttpsrc: Add GTlsInteraction property
https://bugzilla.gnome.org/show_bug.cgi?id=750709
This commit is contained in:
parent
4718870959
commit
10044b1d0f
3 changed files with 33 additions and 4 deletions
|
@ -754,7 +754,7 @@ AG_GST_CHECK_FEATURE(SHOUT2, [Shoutcast/Icecast client library], shout2, [
|
||||||
dnl *** soup ***
|
dnl *** soup ***
|
||||||
translit(dnm, m, l) AM_CONDITIONAL(USE_SOUP, true)
|
translit(dnm, m, l) AM_CONDITIONAL(USE_SOUP, true)
|
||||||
AG_GST_CHECK_FEATURE(SOUP, [soup http client plugin (2.4)], souphttpsrc, [
|
AG_GST_CHECK_FEATURE(SOUP, [soup http client plugin (2.4)], souphttpsrc, [
|
||||||
PKG_CHECK_MODULES(SOUP, libsoup-2.4 >= 2.40, [HAVE_SOUP="yes"], [HAVE_SOUP="no"])
|
PKG_CHECK_MODULES(SOUP, libsoup-2.4 >= 2.48, [HAVE_SOUP="yes"], [HAVE_SOUP="no"])
|
||||||
AC_SUBST(SOUP_CFLAGS)
|
AC_SUBST(SOUP_CFLAGS)
|
||||||
AC_SUBST(SOUP_LIBS)
|
AC_SUBST(SOUP_LIBS)
|
||||||
])
|
])
|
||||||
|
|
|
@ -124,7 +124,8 @@ enum
|
||||||
PROP_SSL_USE_SYSTEM_CA_FILE,
|
PROP_SSL_USE_SYSTEM_CA_FILE,
|
||||||
PROP_TLS_DATABASE,
|
PROP_TLS_DATABASE,
|
||||||
PROP_RETRIES,
|
PROP_RETRIES,
|
||||||
PROP_METHOD
|
PROP_METHOD,
|
||||||
|
PROP_TLS_INTERACTION,
|
||||||
};
|
};
|
||||||
|
|
||||||
#define DEFAULT_USER_AGENT "GStreamer souphttpsrc "
|
#define DEFAULT_USER_AGENT "GStreamer souphttpsrc "
|
||||||
|
@ -136,6 +137,7 @@ enum
|
||||||
#define DEFAULT_SSL_CA_FILE NULL
|
#define DEFAULT_SSL_CA_FILE NULL
|
||||||
#define DEFAULT_SSL_USE_SYSTEM_CA_FILE TRUE
|
#define DEFAULT_SSL_USE_SYSTEM_CA_FILE TRUE
|
||||||
#define DEFAULT_TLS_DATABASE NULL
|
#define DEFAULT_TLS_DATABASE NULL
|
||||||
|
#define DEFAULT_TLS_INTERACTION NULL
|
||||||
#define DEFAULT_TIMEOUT 15
|
#define DEFAULT_TIMEOUT 15
|
||||||
#define DEFAULT_RETRIES 3
|
#define DEFAULT_RETRIES 3
|
||||||
#define DEFAULT_SOUP_METHOD NULL
|
#define DEFAULT_SOUP_METHOD NULL
|
||||||
|
@ -380,6 +382,20 @@ gst_soup_http_src_class_init (GstSoupHTTPSrcClass * klass)
|
||||||
"TLS database with anchor certificate authorities used to validate the server certificate",
|
"TLS database with anchor certificate authorities used to validate the server certificate",
|
||||||
G_TYPE_TLS_DATABASE, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
|
G_TYPE_TLS_DATABASE, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
|
||||||
|
|
||||||
|
/**
|
||||||
|
* GstSoupHTTPSrc::tls-interaction:
|
||||||
|
*
|
||||||
|
* A #GTlsInteraction object to be used when the connection or certificate
|
||||||
|
* database need to interact with the user. This will be used to prompt the
|
||||||
|
* user for passwords or certificate where necessary.
|
||||||
|
*
|
||||||
|
* Since: 1.8
|
||||||
|
*/
|
||||||
|
g_object_class_install_property (gobject_class, PROP_TLS_INTERACTION,
|
||||||
|
g_param_spec_object ("tls-interaction", "TLS interaction",
|
||||||
|
"A GTlsInteraction object to be used when the connection or certificate database need to interact with the user.",
|
||||||
|
G_TYPE_TLS_INTERACTION, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* GstSoupHTTPSrc::retries:
|
* GstSoupHTTPSrc::retries:
|
||||||
*
|
*
|
||||||
|
@ -484,6 +500,7 @@ gst_soup_http_src_init (GstSoupHTTPSrc * src)
|
||||||
src->ssl_strict = DEFAULT_SSL_STRICT;
|
src->ssl_strict = DEFAULT_SSL_STRICT;
|
||||||
src->ssl_use_system_ca_file = DEFAULT_SSL_USE_SYSTEM_CA_FILE;
|
src->ssl_use_system_ca_file = DEFAULT_SSL_USE_SYSTEM_CA_FILE;
|
||||||
src->tls_database = DEFAULT_TLS_DATABASE;
|
src->tls_database = DEFAULT_TLS_DATABASE;
|
||||||
|
src->tls_interaction = DEFAULT_TLS_INTERACTION;
|
||||||
src->max_retries = DEFAULT_RETRIES;
|
src->max_retries = DEFAULT_RETRIES;
|
||||||
src->method = DEFAULT_SOUP_METHOD;
|
src->method = DEFAULT_SOUP_METHOD;
|
||||||
proxy = g_getenv ("http_proxy");
|
proxy = g_getenv ("http_proxy");
|
||||||
|
@ -542,6 +559,9 @@ gst_soup_http_src_finalize (GObject * gobject)
|
||||||
g_object_unref (src->tls_database);
|
g_object_unref (src->tls_database);
|
||||||
g_free (src->method);
|
g_free (src->method);
|
||||||
|
|
||||||
|
if (src->tls_interaction)
|
||||||
|
g_object_unref (src->tls_interaction);
|
||||||
|
|
||||||
G_OBJECT_CLASS (parent_class)->finalize (gobject);
|
G_OBJECT_CLASS (parent_class)->finalize (gobject);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -647,6 +667,10 @@ gst_soup_http_src_set_property (GObject * object, guint prop_id,
|
||||||
g_clear_object (&src->tls_database);
|
g_clear_object (&src->tls_database);
|
||||||
src->tls_database = g_value_dup_object (value);
|
src->tls_database = g_value_dup_object (value);
|
||||||
break;
|
break;
|
||||||
|
case PROP_TLS_INTERACTION:
|
||||||
|
g_clear_object (&src->tls_interaction);
|
||||||
|
src->tls_interaction = g_value_dup_object (value);
|
||||||
|
break;
|
||||||
case PROP_RETRIES:
|
case PROP_RETRIES:
|
||||||
src->max_retries = g_value_get_int (value);
|
src->max_retries = g_value_get_int (value);
|
||||||
break;
|
break;
|
||||||
|
@ -736,6 +760,9 @@ gst_soup_http_src_get_property (GObject * object, guint prop_id,
|
||||||
case PROP_TLS_DATABASE:
|
case PROP_TLS_DATABASE:
|
||||||
g_value_set_object (value, src->tls_database);
|
g_value_set_object (value, src->tls_database);
|
||||||
break;
|
break;
|
||||||
|
case PROP_TLS_INTERACTION:
|
||||||
|
g_value_set_object (value, src->tls_interaction);
|
||||||
|
break;
|
||||||
case PROP_RETRIES:
|
case PROP_RETRIES:
|
||||||
g_value_set_int (value, src->max_retries);
|
g_value_set_int (value, src->max_retries);
|
||||||
break;
|
break;
|
||||||
|
@ -928,14 +955,15 @@ gst_soup_http_src_session_open (GstSoupHTTPSrc * src)
|
||||||
SOUP_SESSION_TIMEOUT, src->timeout,
|
SOUP_SESSION_TIMEOUT, src->timeout,
|
||||||
SOUP_SESSION_SSL_STRICT, src->ssl_strict,
|
SOUP_SESSION_SSL_STRICT, src->ssl_strict,
|
||||||
SOUP_SESSION_ADD_FEATURE_BY_TYPE, SOUP_TYPE_PROXY_RESOLVER_DEFAULT,
|
SOUP_SESSION_ADD_FEATURE_BY_TYPE, SOUP_TYPE_PROXY_RESOLVER_DEFAULT,
|
||||||
NULL);
|
SOUP_SESSION_TLS_INTERACTION, src->tls_interaction, NULL);
|
||||||
} else {
|
} else {
|
||||||
src->session =
|
src->session =
|
||||||
soup_session_async_new_with_options (SOUP_SESSION_ASYNC_CONTEXT,
|
soup_session_async_new_with_options (SOUP_SESSION_ASYNC_CONTEXT,
|
||||||
src->context, SOUP_SESSION_PROXY_URI, src->proxy,
|
src->context, SOUP_SESSION_PROXY_URI, src->proxy,
|
||||||
SOUP_SESSION_TIMEOUT, src->timeout,
|
SOUP_SESSION_TIMEOUT, src->timeout,
|
||||||
SOUP_SESSION_SSL_STRICT, src->ssl_strict,
|
SOUP_SESSION_SSL_STRICT, src->ssl_strict,
|
||||||
SOUP_SESSION_USER_AGENT, src->user_agent, NULL);
|
SOUP_SESSION_USER_AGENT, src->user_agent,
|
||||||
|
SOUP_SESSION_TLS_INTERACTION, src->tls_interaction, NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!src->session) {
|
if (!src->session) {
|
||||||
|
|
|
@ -92,6 +92,7 @@ struct _GstSoupHTTPSrc {
|
||||||
gchar *ssl_ca_file;
|
gchar *ssl_ca_file;
|
||||||
gboolean ssl_use_system_ca_file;
|
gboolean ssl_use_system_ca_file;
|
||||||
GTlsDatabase *tls_database;
|
GTlsDatabase *tls_database;
|
||||||
|
GTlsInteraction *tls_interaction;
|
||||||
|
|
||||||
/* Shoutcast/icecast metadata extraction handling. */
|
/* Shoutcast/icecast metadata extraction handling. */
|
||||||
gboolean iradio_mode;
|
gboolean iradio_mode;
|
||||||
|
|
Loading…
Reference in a new issue