changeset 30376:50d472b3d752

Fixed a bug I accidentally introduced in fb1ab831dedebf45ea50b6f87bfc00265a0115ef. We now have two different set_perm_deny()'s with different semantics (the ICQ one controls visibility, the AIM one, blocking), but purple_ssi_parselist() always called the ICQ one, no matter what is the current account. I've also changed the names of functions to make the distinction clearer.
author ivan.komarov@soc.pidgin.im
date Thu, 01 Jul 2010 18:56:17 +0000
parents ab7e28b1b478
children b8f47c07ca42 c5790044f32f
files libpurple/protocols/oscar/libaim.c libpurple/protocols/oscar/oscar.c libpurple/protocols/oscar/oscar.h libpurple/protocols/oscar/oscarcommon.h
diffstat 4 files changed, 13 insertions(+), 5 deletions(-) [+]
line wrap: on
line diff
--- a/libpurple/protocols/oscar/libaim.c	Thu Jul 01 17:15:37 2010 +0000
+++ b/libpurple/protocols/oscar/libaim.c	Thu Jul 01 18:56:17 2010 +0000
@@ -25,6 +25,7 @@
  */
 
 #include "oscarcommon.h"
+#include "oscar.h"
 
 static PurplePluginProtocolInfo prpl_info =
 {
@@ -57,7 +58,7 @@
 	oscar_add_deny,			/* add_deny */
 	oscar_rem_permit,		/* rem_permit */
 	oscar_rem_deny,			/* rem_deny */
-	oscar_set_permit_deny,	/* set_permit_deny */
+	oscar_set_aim_permdeny,	/* set_permit_deny */
 	oscar_join_chat,		/* join_chat */
 	NULL,					/* reject_chat */
 	oscar_get_chat_name,	/* get_chat_name */
--- a/libpurple/protocols/oscar/oscar.c	Thu Jul 01 17:15:37 2010 +0000
+++ b/libpurple/protocols/oscar/oscar.c	Thu Jul 01 18:56:17 2010 +0000
@@ -4067,8 +4067,10 @@
 		return;
 	}
 
-	if (od->icq)
+	if (od->icq) {
+		/* Set visibility */
 		oscar_set_icq_permdeny(account);
+	}
 
 	/* Set the AIM-style away message for both AIM and ICQ accounts */
 	oscar_set_info_and_status(account, FALSE, NULL, TRUE, status);
@@ -4539,7 +4541,11 @@
 		} /* End of switch on curitem->type */
 	} /* End of for loop */
 
-	oscar_set_icq_permdeny(account);
+	if (od->icq) {
+		oscar_set_icq_permdeny(account);
+	} else {
+		oscar_set_aim_permdeny(gc);
+	}
 
 	/* Activate SSI */
 	/* Sending the enable causes other people to be able to see you, and you to see them */
@@ -5172,7 +5178,7 @@
 	return ret;
 }
 
-void oscar_set_permit_deny(PurpleConnection *gc) {
+void oscar_set_aim_permdeny(PurpleConnection *gc) {
 	PurpleAccount *account = purple_connection_get_account(gc);
 	OscarData *od = purple_connection_get_protocol_data(gc);
 
--- a/libpurple/protocols/oscar/oscar.h	Thu Jul 01 17:15:37 2010 +0000
+++ b/libpurple/protocols/oscar/oscar.h	Thu Jul 01 18:56:17 2010 +0000
@@ -1737,6 +1737,8 @@
 void oscar_auth_sendrequest_menu(PurpleBlistNode *node, gpointer ignored);
 void oscar_auth_recvrequest(PurpleConnection *gc, gchar *name, gchar *nick, gchar *reason);
 
+void oscar_set_aim_permdeny(PurpleConnection *gc);
+
 struct buddyinfo
 {
 	gboolean typingnot;
--- a/libpurple/protocols/oscar/oscarcommon.h	Thu Jul 01 17:15:37 2010 +0000
+++ b/libpurple/protocols/oscar/oscarcommon.h	Thu Jul 01 18:56:17 2010 +0000
@@ -77,7 +77,6 @@
 void oscar_add_deny(PurpleConnection *gc, const char *who);
 void oscar_rem_permit(PurpleConnection *gc, const char *who);
 void oscar_rem_deny(PurpleConnection *gc, const char *who);
-void oscar_set_permit_deny(PurpleConnection *gc);
 void oscar_join_chat(PurpleConnection *gc, GHashTable *data);
 char *oscar_get_chat_name(GHashTable *data);
 void oscar_chat_invite(PurpleConnection *gc, int id, const char *message, const char *name);