Sat, 01 Oct 2022 01:05:38 -0500
Remove the server privacy api that was just proxying to PurpleProtocolPrivacy
There's a bunch of duplicated code here, but privacy has need an overhaul for a
long time, and making it harder to work with will hopefully speed that up.
Testing Done:
Compiled
Reviewed at https://reviews.imfreedom.org/r/1868/
| ChangeLog.API | file | annotate | diff | comparison | revisions | |
| libpurple/account.c | file | annotate | diff | comparison | revisions | |
| libpurple/connection.c | file | annotate | diff | comparison | revisions | |
| libpurple/server.c | file | annotate | diff | comparison | revisions | |
| libpurple/server.h | file | annotate | diff | comparison | revisions | |
| pidgin/gtkprivacy.c | file | annotate | diff | comparison | revisions |
--- a/ChangeLog.API Fri Sep 30 23:52:35 2022 -0500 +++ b/ChangeLog.API Sat Oct 01 01:05:38 2022 -0500 @@ -643,6 +643,11 @@ * purple_roomlist_get_protocol_data * purple_roomlist_set_protocol_data * purple_running_osx + * purple_serv_add_deny + * purple_serv_add_permit + * purple_serv_remove_deny + * purple_serv_remove_permit + * purple_serv_set_permit_deny * PurpleSetPublicAliasFailureCallback * PurpleSetPublicAliasSuccessCallback * purple_smiley_get_type
--- a/libpurple/account.c Fri Sep 30 23:52:35 2022 -0500 +++ b/libpurple/account.c Sat Oct 01 01:05:38 2022 -0500 @@ -37,6 +37,7 @@ #include "purpleprivate.h" #include "purpleprotocolclient.h" #include "purpleprotocolmanager.h" +#include "purpleprotocolprivacy.h" #include "purpleprotocolserver.h" #include "request.h" #include "server.h" @@ -1764,8 +1765,13 @@ account->permit = g_slist_append(account->permit, name); - if (!local_only && purple_account_is_connected(account)) - purple_serv_add_permit(purple_account_get_connection(account), who); + if (!local_only && purple_account_is_connected(account)) { + PurpleConnection *connection = purple_account_get_connection(account); + PurpleProtocol *protocol = purple_connection_get_protocol(connection); + PurpleProtocolPrivacy *privacy = PURPLE_PROTOCOL_PRIVACY(protocol); + + purple_protocol_privacy_add_permit(privacy, connection, who); + } if (ui_ops != NULL && ui_ops->permit_added != NULL) ui_ops->permit_added(account, who); @@ -1809,7 +1815,11 @@ account->permit = g_slist_delete_link(account->permit, l); if (!local_only && purple_account_is_connected(account)) { - purple_serv_remove_permit(purple_account_get_connection(account), who); + PurpleConnection *connection = purple_account_get_connection(account); + PurpleProtocol *protocol = purple_connection_get_protocol(connection); + PurpleProtocolPrivacy *privacy = PURPLE_PROTOCOL_PRIVACY(protocol); + + purple_protocol_privacy_remove_permit(privacy, connection, who); } if (ui_ops != NULL && ui_ops->permit_removed != NULL) { @@ -1850,8 +1860,13 @@ account->deny = g_slist_append(account->deny, name); - if (!local_only && purple_account_is_connected(account)) - purple_serv_add_deny(purple_account_get_connection(account), who); + if (!local_only && purple_account_is_connected(account)) { + PurpleConnection *connection = purple_account_get_connection(account); + PurpleProtocol *protocol = purple_connection_get_protocol(connection); + PurpleProtocolPrivacy *privacy = PURPLE_PROTOCOL_PRIVACY(protocol); + + purple_protocol_privacy_add_deny(privacy, connection, who); + } if (ui_ops != NULL && ui_ops->deny_added != NULL) ui_ops->deny_added(account, who); @@ -1893,7 +1908,11 @@ account->deny = g_slist_delete_link(account->deny, l); if (!local_only && purple_account_is_connected(account)) { - purple_serv_remove_deny(purple_account_get_connection(account), name); + PurpleConnection *connection = purple_account_get_connection(account); + PurpleProtocol *protocol = purple_connection_get_protocol(connection); + PurpleProtocolPrivacy *privacy = PURPLE_PROTOCOL_PRIVACY(protocol); + + purple_protocol_privacy_remove_deny(privacy, connection, name); } if (ui_ops != NULL && ui_ops->deny_removed != NULL) { @@ -1953,8 +1972,18 @@ } /* Notify the server if the privacy setting was changed */ - if (type != purple_account_get_privacy_type(account) && purple_account_is_connected(account)) - purple_serv_set_permit_deny(purple_account_get_connection(account)); + if(type != purple_account_get_privacy_type(account) && + purple_account_is_connected(account)) + { + PurpleProtocol *protocol = purple_account_get_protocol(account); + + if(PURPLE_IS_PROTOCOL_PRIVACY(protocol)) { + PurpleConnection *connection = purple_account_get_connection(account); + + purple_protocol_privacy_set_permit_deny(PURPLE_PROTOCOL_PRIVACY(protocol), + connection); + } + } } void @@ -1998,8 +2027,18 @@ } /* Notify the server if the privacy setting was changed */ - if (type != purple_account_get_privacy_type(account) && purple_account_is_connected(account)) - purple_serv_set_permit_deny(purple_account_get_connection(account)); + if(type != purple_account_get_privacy_type(account) && + purple_account_is_connected(account)) + { + PurpleProtocol *protocol = purple_account_get_protocol(account); + + if(PURPLE_IS_PROTOCOL_PRIVACY(protocol)) { + PurpleConnection *connection = purple_account_get_connection(account); + + purple_protocol_privacy_set_permit_deny(PURPLE_PROTOCOL_PRIVACY(protocol), + connection); + } + } } GSList *
--- a/libpurple/connection.c Fri Sep 30 23:52:35 2022 -0500 +++ b/libpurple/connection.c Sat Oct 01 01:05:38 2022 -0500 @@ -30,6 +30,7 @@ #include "proxy.h" #include "purpleenums.h" #include "purpleprivate.h" +#include "purpleprotocolprivacy.h" #include "purpleprotocolserver.h" #include "request.h" #include "server.h" @@ -161,10 +162,12 @@ if(gc->state == PURPLE_CONNECTION_CONNECTED) { PurpleAccount *account; PurplePresence *presence; + PurpleProtocol *protocol; gboolean emit_online = FALSE; gpointer handle = NULL; account = purple_connection_get_account(gc); + protocol = purple_connection_get_protocol(gc); presence = purple_account_get_presence(account); handle = purple_connections_get_handle(); @@ -180,7 +183,10 @@ purple_signal_emit(handle, "signed-on", gc); purple_signal_emit_return_1(handle, "autojoin", gc); - purple_serv_set_permit_deny(gc); + if(PURPLE_IS_PROTOCOL_PRIVACY(protocol)) { + purple_protocol_privacy_set_permit_deny(PURPLE_PROTOCOL_PRIVACY(protocol), + gc); + } update_keepalive(gc, TRUE);
--- a/libpurple/server.c Fri Sep 30 23:52:35 2022 -0500 +++ b/libpurple/server.c Sat Oct 01 01:05:38 2022 -0500 @@ -257,65 +257,6 @@ } } -void purple_serv_add_permit(PurpleConnection *gc, const char *name) -{ - if (gc) { - PurpleProtocol *protocol = purple_connection_get_protocol(gc); - PurpleProtocolPrivacy *privacy = PURPLE_PROTOCOL_PRIVACY(protocol); - - purple_protocol_privacy_add_permit(privacy, gc, name); - } -} - -void purple_serv_add_deny(PurpleConnection *gc, const char *name) -{ - if (gc) { - PurpleProtocol *protocol = purple_connection_get_protocol(gc); - PurpleProtocolPrivacy *privacy = PURPLE_PROTOCOL_PRIVACY(protocol); - - purple_protocol_privacy_add_deny(privacy, gc, name); - } -} - -void purple_serv_remove_permit(PurpleConnection *gc, const char *name) -{ - if (gc) { - PurpleProtocol *protocol = purple_connection_get_protocol(gc); - PurpleProtocolPrivacy *privacy = PURPLE_PROTOCOL_PRIVACY(protocol); - - purple_protocol_privacy_remove_permit(privacy, gc, name); - } -} - -void purple_serv_remove_deny(PurpleConnection *gc, const char *name) -{ - if (gc) { - PurpleProtocol *protocol = purple_connection_get_protocol(gc); - PurpleProtocolPrivacy *privacy = PURPLE_PROTOCOL_PRIVACY(protocol); - - purple_protocol_privacy_remove_deny(privacy, gc, name); - } -} - -void -purple_serv_set_permit_deny(PurpleConnection *gc) { - if(gc) { - PurpleProtocol *protocol = purple_connection_get_protocol(gc); - - if(PURPLE_IS_PROTOCOL_PRIVACY(protocol)) { - PurpleProtocolPrivacy *privacy = PURPLE_PROTOCOL_PRIVACY(protocol); - - /* - * this is called when either you import a buddy list, and make lots - * of changes that way, or when the user toggles the permit/deny mode - * in the prefs. In either case you should probably be resetting and - * resending the permit/deny info when you get this. - */ - purple_protocol_privacy_set_permit_deny(privacy, gc); - } - } -} - void purple_serv_join_chat(PurpleConnection *gc, GHashTable *data) { PurpleProtocol *protocol;
--- a/libpurple/server.h Fri Sep 30 23:52:35 2022 -0500 +++ b/libpurple/server.h Sat Oct 01 01:05:38 2022 -0500 @@ -95,54 +95,6 @@ void purple_serv_set_info(PurpleConnection *gc, const char *info); /****************************************************************************** - * Privacy interface - *****************************************************************************/ - -/** - * purple_serv_add_permit: - * @gc: The connection over which to send the typing notification. - * @name: The name of the remote user. - * - * Add the buddy on the required authorized list. - */ -void purple_serv_add_permit(PurpleConnection *gc, const char *name); - -/** - * purple_serv_add_deny: - * @gc: The connection over which to send the typing notification. - * @name: The name of the remote user. - * - * Add the buddy on the required blocked list. - */ -void purple_serv_add_deny(PurpleConnection *gc, const char *name); - -/** - * purple_serv_remove_permit: - * @gc: The connection over which to send the typing notification. - * @name: The name of the remote user. - * - * Remove the buddy from the required authorized list. - */ -void purple_serv_remove_permit(PurpleConnection *gc, const char *name); - -/** - * purple_serv_remove_deny: - * @gc: The connection over which to send the typing notification. - * @name: The name of the remote user. - * - * Remove the buddy from the required blocked list. - */ -void purple_serv_remove_deny(PurpleConnection *gc, const char *name); - -/** - * purple_serv_set_permit_deny: - * @gc: The connection over which to send the typing notification. - * - * Update the server with the privacy information on the permit and deny lists. - */ -void purple_serv_set_permit_deny(PurpleConnection *gc); - -/****************************************************************************** * Chat Interface *****************************************************************************/
--- a/pidgin/gtkprivacy.c Fri Sep 30 23:52:35 2022 -0500 +++ b/pidgin/gtkprivacy.c Sat Oct 01 01:05:38 2022 -0500 @@ -162,10 +162,23 @@ PidginPrivacyDialog *dialog = data; PurpleAccountPrivacyType new_type = menu_entries[gtk_drop_down_get_selected(GTK_DROP_DOWN(obj))].type; + PurpleProtocol *protocol = NULL; gboolean buttons_sensitive; purple_account_set_privacy_type(dialog->account, new_type); - purple_serv_set_permit_deny(purple_account_get_connection(dialog->account)); + + protocol = purple_account_get_protocol(dialog->account); + if(PURPLE_IS_PROTOCOL_PRIVACY(protocol)) { + PurpleConnection *connection = NULL; + + connection = purple_account_get_connection(dialog->account); + if(PURPLE_IS_CONNECTION(connection)) { + PurpleProtocolPrivacy *privacy = NULL; + + privacy = PURPLE_PROTOCOL_PRIVACY(protocol); + purple_protocol_privacy_set_permit_deny(privacy, connection); + } + } gtk_widget_hide(dialog->allow_widget); gtk_widget_hide(dialog->block_widget);