Mercurial > pidgin.yaz
diff libpurple/protocols/jabber/jabber.c @ 27034:1dcee141997d
The server list is definitive for who is blocked.
author | Paul Aurich <paul@darkrain42.org> |
---|---|
date | Wed, 27 May 2009 00:57:17 +0000 |
parents | 10c91922bc1e |
children | 373141b35c52 |
line wrap: on
line diff
--- a/libpurple/protocols/jabber/jabber.c Tue May 26 23:44:55 2009 +0000 +++ b/libpurple/protocols/jabber/jabber.c Wed May 27 00:57:17 2009 +0000 @@ -1716,21 +1716,23 @@ "blocklist", "urn:xmpp:blocking"); account = purple_connection_get_account(js->gc); - if (blocklist == NULL) + if (type == JABBER_IQ_ERROR || blocklist == NULL) return; /* This is the only privacy method supported by XEP-0191 */ - if (account->perm_deny != PUPRLE_PRIVACY_DENY_USERS) + if (account->perm_deny != PURPLE_PRIVACY_DENY_USERS) account->perm_deny = PURPLE_PRIVACY_DENY_USERS; /* - * FIXME: We should probably completely override the local list with - * the contents of the server list instead of merging them. + * TODO: When account->deny is something more than a hash table, this can + * be re-written to find the set intersection and difference. */ + while (account->deny) + purple_privacy_deny_remove(account, account->deny->data, TRUE); + item = xmlnode_get_child(blocklist, "item"); while (item != NULL) { const char *jid = xmlnode_get_attrib(item, "jid"); - purple_privacy_deny_add(account, jid, TRUE); item = xmlnode_get_next_twin(item); }