Sun, 14 Jul 2019 22:53:31 +0200
Add purple_media_set_require_encryption api
--- a/ChangeLog.API Thu Jul 18 18:30:08 2019 +0000 +++ b/ChangeLog.API Sun Jul 14 22:53:31 2019 +0200 @@ -5,6 +5,7 @@ Added: * purple_media_manager_enumerate_elements * purple_request_screenshare_media + * purple_media_set_require_encryption version 2.13.0: libpurple:
--- a/libpurple/media.c Thu Jul 18 18:30:08 2019 +0000 +++ b/libpurple/media.c Sun Jul 14 22:53:31 2019 +0200 @@ -1318,6 +1318,19 @@ } gboolean +purple_media_set_require_encryption(PurpleMedia *media, const gchar *sess_id, + const gchar *participant, const 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 Thu Jul 18 18:30:08 2019 +0000 +++ b/libpurple/media.h Sun Jul 14 22:53:31 2019 +0200 @@ -386,6 +386,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 session id of the session to set parameters of. + * @param participant The participant of the session to set parameters of. + * @param require-encryption TRUE is 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); + +/** * Gets whether a session's codecs are ready to be used. * * @param media The media object to find the session in.
--- a/libpurple/media/backend-fs2.c Thu Jul 18 18:30:08 2019 +0000 +++ b/libpurple/media/backend-fs2.c Sun Jul 14 22:53:31 2019 +0200 @@ -97,6 +97,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, const gboolean require_encryption); #endif static gboolean purple_media_backend_fs2_set_remote_codecs( PurpleMediaBackend *self, @@ -580,6 +583,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; #endif iface->set_params = purple_media_backend_fs2_set_params; iface->get_available_params = purple_media_backend_fs2_get_available_params; @@ -2802,6 +2807,27 @@ gst_structure_free(srtp); return result; } + +static gboolean +purple_media_backend_fs2_set_require_encryption (PurpleMediaBackend *self, + const gchar *sess_id, const gchar *participant, + const gboolean require_encryption) +{ + PurpleMediaBackendFs2Stream *stream; + gboolean result; + + g_return_val_if_fail(PURPLE_IS_MEDIA_BACKEND_FS2(self), FALSE); + + 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; +} + #endif /* GST 1.0+ */ static gboolean
--- a/libpurple/media/backend-iface.c Thu Jul 18 18:30:08 2019 +0000 +++ b/libpurple/media/backend-iface.c Sun Jul 14 22:53:31 2019 +0200 @@ -222,6 +222,20 @@ sess_id, participant, cipher, auth, key, key_len); } +gboolean +purple_media_backend_set_require_encryption(PurpleMediaBackend *self, + const gchar *sess_id, const gchar *participant, + const gboolean require_encryption) +{ + PurpleMediaBackendIface *backend_iface; + + g_return_val_if_fail(PURPLE_IS_MEDIA_BACKEND(self), FALSE); + backend_iface = PURPLE_MEDIA_BACKEND_GET_INTERFACE(self); + g_return_val_if_fail(backend_iface->set_require_encryption, 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 Thu Jul 18 18:30:08 2019 +0000 +++ b/libpurple/media/backend-iface.h Sun Jul 14 22:53:31 2019 +0200 @@ -75,6 +75,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, + const gboolean require_encryption); void (*set_params) (PurpleMediaBackend *self, guint num_params, GParameter *params); const gchar **(*get_available_params) (void); @@ -244,6 +247,20 @@ const gchar *key, gsize key_len); /** + * Sets whether a session participant's media requires encryption. + * + * @param self he media object to find the session in. + * @param sess_id The session id of the session to set parameters of. + * @param participant The participant of the session to set parameters of. + * @param require-encryption TRUE is the media requires encryption. + * + * @since 2.14.0 + */ +gboolean purple_media_backend_set_require_encryption(PurpleMediaBackend *self, + const gchar *sess_id, const gchar *participant, + gboolean require_encryption); + +/** * Sets various optional parameters of the media backend. * * @param self The media backend to set the parameters on.