# HG changeset patch # User Sean Egan # Date 1170191044 0 # Node ID 2c81b0a81790201ac949da45523e6f6e8a874aa5 # Parent cc1721b06dc6eaf5273781b9424651d7e1c2b848 Make deleting Google Talk buddies work diff -r cc1721b06dc6 -r 2c81b0a81790 libpurple/protocols/jabber/google.c --- a/libpurple/protocols/jabber/google.c Tue Jan 30 17:29:00 2007 +0000 +++ b/libpurple/protocols/jabber/google.c Tue Jan 30 21:04:04 2007 +0000 @@ -206,7 +206,7 @@ } -void jabber_google_roster_incoming(JabberStream *js, xmlnode *item) +gboolean jabber_google_roster_incoming(JabberStream *js, xmlnode *item) { GaimAccount *account = gaim_connection_get_account(js->gc); GSList *list = account->deny; @@ -225,6 +225,12 @@ list = list->next; } + if (grt && (*grt == 'H' || *grt == 'h')) { + GaimBuddy *buddy = gaim_find_buddy(account, jid_norm); + gaim_blist_remove_buddy(buddy); + return FALSE; + } + if (!on_block_list && (grt && (*grt == 'B' || *grt == 'b'))) { gaim_debug_info("jabber", "Blocking %s\n", jid_norm); gaim_privacy_deny_add(account, jid_norm, TRUE); @@ -232,6 +238,7 @@ gaim_debug_info("jabber", "Unblocking %s\n", jid_norm); gaim_privacy_deny_remove(account, jid_norm, TRUE); } + return TRUE; } void jabber_google_roster_add_deny(GaimConnection *gc, const char *who) diff -r cc1721b06dc6 -r 2c81b0a81790 libpurple/protocols/jabber/google.h --- a/libpurple/protocols/jabber/google.h Tue Jan 30 17:29:00 2007 +0000 +++ b/libpurple/protocols/jabber/google.h Tue Jan 30 21:04:04 2007 +0000 @@ -31,7 +31,11 @@ void jabber_google_roster_init(JabberStream *js); void jabber_google_roster_outgoing(JabberStream *js, xmlnode *query, xmlnode *item); -void jabber_google_roster_incoming(JabberStream *js, xmlnode *item); + +/* Returns FALSE if this should short-circuit processing of this roster item, or TRUE + * if this roster item should continue to be processed + */ +gboolean jabber_google_roster_incoming(JabberStream *js, xmlnode *item); void jabber_google_roster_add_deny(GaimConnection *gc, const char *who); void jabber_google_roster_rem_deny(GaimConnection *gc, const char *who); diff -r cc1721b06dc6 -r 2c81b0a81790 libpurple/protocols/jabber/roster.c --- a/libpurple/protocols/jabber/roster.c Tue Jan 30 17:29:00 2007 +0000 +++ b/libpurple/protocols/jabber/roster.c Tue Jan 30 21:04:04 2007 +0000 @@ -226,7 +226,8 @@ groups = g_slist_append(groups, group_name); } if (js->server_caps & JABBER_CAP_GOOGLE_ROSTER) - jabber_google_roster_incoming(js, item); + if (!jabber_google_roster_incoming(js, item)) + continue; add_gaim_buddies_in_groups(js, jid, name, groups); } }