Port purple_media_set_require_encryption api port-changes-from-branch-2.x.y-to-default

Thu, 03 Oct 2019 10:34:22 +0200

author
Fabrice Bellet <fabrice@bellet.info>
date
Thu, 03 Oct 2019 10:34:22 +0200
branch
port-changes-from-branch-2.x.y-to-default
changeset 40268
a7be471404ba
parent 40237
905872c9dd7a
child 40269
334fd0d7c7e6

Port purple_media_set_require_encryption api

libpurple/media.c file | annotate | diff | comparison | revisions
libpurple/media.h file | annotate | diff | comparison | revisions
libpurple/media/backend-fs2.c file | annotate | diff | comparison | revisions
libpurple/media/backend-iface.c file | annotate | diff | comparison | revisions
libpurple/media/backend-iface.h file | annotate | diff | comparison | revisions
--- a/libpurple/media.c	Tue Dec 10 04:43:23 2019 +0000
+++ b/libpurple/media.c	Thu Oct 03 10:34:22 2019 +0200
@@ -1240,6 +1240,19 @@
 }
 
 gboolean
+purple_media_set_require_encryption(PurpleMedia *media, const gchar *sess_id,
+                const gchar *participant, gboolean require_encryption)
+{
+#ifdef USE_VV
+	g_return_val_if_fail(PURPLE_IS_MEDIA(media), FALSE);
+	return purple_media_backend_set_require_encryption(media->priv->backend,
+			sess_id, participant, require_encryption);
+#else
+	return FALSE;
+#endif
+}
+
+gboolean
 purple_media_codecs_ready(PurpleMedia *media, const gchar *sess_id)
 {
 #ifdef USE_VV
--- a/libpurple/media.h	Tue Dec 10 04:43:23 2019 +0000
+++ b/libpurple/media.h	Thu Oct 03 10:34:22 2019 +0200
@@ -412,6 +412,20 @@
 		const gchar *key, gsize key_len);
 
 /**
+ * Sets whether a session participant's media requires encryption.
+ *
+ * @param media The media object to find the session in.
+ * @param sess_id The id of the session to set parameters of.
+ * @param participant The participant of the session to set parameters of.
+ * @param require_encryption TRUE if the media requires encryption.
+ *
+ * @since 2.14.0
+ */
+gboolean purple_media_set_require_encryption(PurpleMedia *media,
+		const gchar *sess_id, const gchar *participant,
+		gboolean require_encryption);
+
+/**
  * purple_media_codecs_ready:
  * @media: The media object to find the session in.
  * @sess_id: The session id of the session to check.
--- a/libpurple/media/backend-fs2.c	Tue Dec 10 04:43:23 2019 +0000
+++ b/libpurple/media/backend-fs2.c	Thu Oct 03 10:34:22 2019 +0200
@@ -74,6 +74,9 @@
 		PurpleMediaBackend *self, const gchar *sess_id,
 		const gchar *participant, const gchar *cipher,
 		const gchar *auth, const gchar *key, gsize key_len);
+static gboolean purple_media_backend_fs2_set_require_encryption(
+		PurpleMediaBackend *self, const gchar *sess_id,
+		const gchar *participant, gboolean require_encryption);
 static gboolean purple_media_backend_fs2_set_remote_codecs(
 		PurpleMediaBackend *self,
 		const gchar *sess_id, const gchar *participant,
@@ -505,6 +508,8 @@
 			purple_media_backend_fs2_set_encryption_parameters;
 	iface->set_decryption_parameters =
 			purple_media_backend_fs2_set_decryption_parameters;
+	iface->set_require_encryption =
+			purple_media_backend_fs2_set_require_encryption;
 	iface->set_params = purple_media_backend_fs2_set_params;
 	iface->get_available_params = purple_media_backend_fs2_get_available_params;
 	iface->send_dtmf = purple_media_backend_fs2_send_dtmf;
@@ -2380,6 +2385,25 @@
 }
 
 static gboolean
+purple_media_backend_fs2_set_require_encryption(PurpleMediaBackend *self,
+		const gchar *sess_id, const gchar *participant,
+		gboolean require_encryption)
+{
+	PurpleMediaBackendFs2Stream *stream;
+	gboolean result;
+
+	stream = get_stream(PURPLE_MEDIA_BACKEND_FS2(self), sess_id,
+			participant);
+	if (!stream) {
+		return FALSE;
+	}
+
+	g_object_set(stream->stream, "require-encryption",
+			require_encryption, NULL);
+	return TRUE;
+}
+
+static gboolean
 purple_media_backend_fs2_set_send_codec(PurpleMediaBackend *self,
 		const gchar *sess_id, PurpleMediaCodec *codec)
 {
--- a/libpurple/media/backend-iface.c	Tue Dec 10 04:43:23 2019 +0000
+++ b/libpurple/media/backend-iface.c	Thu Oct 03 10:34:22 2019 +0200
@@ -219,6 +219,24 @@
 			sess_id, participant, cipher, auth, key, key_len);
 }
 
+gboolean
+purple_media_backend_set_require_encryption(PurpleMediaBackend *self,
+		const gchar *sess_id, const gchar *participant,
+		gboolean require_encryption)
+{
+	PurpleMediaBackendInterface *backend_iface;
+
+	g_return_val_if_fail(PURPLE_IS_MEDIA_BACKEND(self), FALSE);
+	backend_iface = PURPLE_MEDIA_BACKEND_GET_INTERFACE(self);
+
+	if (!backend_iface->set_require_encryption) {
+		return FALSE;
+	}
+
+	return backend_iface->set_require_encryption(self,
+			sess_id, participant, require_encryption);
+}
+
 void
 purple_media_backend_set_params(PurpleMediaBackend *self,
 		guint num_params, GParameter *params)
--- a/libpurple/media/backend-iface.h	Tue Dec 10 04:43:23 2019 +0000
+++ b/libpurple/media/backend-iface.h	Thu Oct 03 10:34:22 2019 +0200
@@ -90,6 +90,9 @@
 		const gchar *sess_id, const gchar *participant,
 		const gchar *cipher, const gchar *auth,
 		const gchar *key, gsize key_len);
+	gboolean (*set_require_encryption) (PurpleMediaBackend *self,
+		const gchar *sess_id, const gchar *participant,
+		gboolean require_encryption);
 	G_GNUC_BEGIN_IGNORE_DEPRECATIONS
 	void (*set_params) (PurpleMediaBackend *self,
 		guint num_params, GParameter *params);
@@ -254,6 +257,19 @@
 		const gchar *key, gsize key_len);
 
 /**
+ * purple_media_backend_set_require_encryption:
+ * @self The media object to find the session in.
+ * @sess_id The id of the session to set parameters of.
+ * @participant The participant of the session to set parameters of.
+ * @require_encryption TRUE if the media requires encryption.
+ *
+ * Sets whether a session participant's media requires encryption.
+ */
+gboolean purple_media_backend_set_require_encryption(PurpleMediaBackend *self,
+		const gchar *sess_id, const gchar *participant,
+		gboolean require_encryption);
+
+/**
  * purple_media_backend_set_params:
  * @self: The media backend to set the parameters on.
  * @num_params: The number of parameters to pass to backend

mercurial