/* TLS */
GTlsDatabase *tls_database;
+ GTlsInteraction *tls_interaction;
DecodeCtx ctx;
DecodeCtx *ctxp;
static void
socket_client_event (GSocketClient * client, GSocketClientEvent event,
- GSocketConnectable * connectable, GIOStream * connection,
+ GSocketConnectable * connectable, GTlsConnection * connection,
GstRTSPConnection * rtspconn)
{
if (event == G_SOCKET_CLIENT_TLS_HANDSHAKING) {
g_signal_connect (connection, "accept-certificate",
(GCallback) tls_accept_certificate, rtspconn);
+
+ g_tls_connection_set_interaction (connection, rtspconn->tls_interaction);
}
}
return result;
}
+/**
+ * gst_rtsp_connection_set_tls_interaction:
+ * @conn: a #GstRTSPConnection
+ * @interaction: a #GTlsInteraction
+ *
+ * Sets 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 where necessary.
+ *
+ * Since: 1.6
+ */
+void
+gst_rtsp_connection_set_tls_interaction (GstRTSPConnection * conn,
+ GTlsInteraction * interaction)
+{
+ GTlsInteraction *old_interaction;
+
+ g_return_if_fail (conn != NULL);
+
+ if (interaction)
+ g_object_ref (interaction);
+
+ old_interaction = conn->tls_interaction;
+ conn->tls_interaction = interaction;
+
+ if (old_interaction)
+ g_object_unref (old_interaction);
+}
+
+/**
+ * gst_rtsp_connection_get_tls_interaction:
+ * @conn: a #GstRTSPConnection
+ *
+ * Gets 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 where necessary.
+ *
+ * Returns: (transfer full): a reference on the #GTlsInteraction. Use
+ * g_object_unref() to release.
+ *
+ * Since: 1.6
+ */
+GTlsInteraction *
+gst_rtsp_connection_get_tls_interaction (GstRTSPConnection * conn)
+{
+ GTlsInteraction *result;
+
+ g_return_val_if_fail (conn != NULL, NULL);
+
+ if ((result = conn->tls_interaction))
+ g_object_ref (result);
+
+ return result;
+}
+
static GstRTSPResult
setup_tunneling (GstRTSPConnection * conn, GTimeVal * timeout, gchar * uri)
{
g_object_unref (conn->client);
if (conn->tls_database)
g_object_unref (conn->tls_database);
+ if (conn->tls_interaction)
+ g_object_unref (conn->tls_interaction);
g_timer_destroy (conn->timer);
gst_rtsp_url_free (conn->url);
GTlsCertificateFlags gst_rtsp_connection_get_tls_validation_flags (GstRTSPConnection * conn);
void gst_rtsp_connection_set_tls_database (GstRTSPConnection * conn, GTlsDatabase * database);
GTlsDatabase * gst_rtsp_connection_get_tls_database (GstRTSPConnection * conn);
+void gst_rtsp_connection_set_tls_interaction (GstRTSPConnection * conn, GTlsInteraction * interaction);
+GTlsInteraction * gst_rtsp_connection_get_tls_interaction (GstRTSPConnection * conn);
/* sending/receiving raw bytes */
GstRTSPResult gst_rtsp_connection_read (GstRTSPConnection * conn, guint8 * data,