Mercurial > pidgin.yaz
diff src/protocols/jabber/roster.c @ 7310:dd4b4a187171
[gaim-migrate @ 7894]
assorted jabber tweaks
committer: Tailor Script <tailor@pidgin.im>
author | Nathan Walp <nwalp@pidgin.im> |
---|---|
date | Tue, 21 Oct 2003 17:18:46 +0000 |
parents | e4851710d9a9 |
children | 5b408a3fc6f4 |
line wrap: on
line diff
--- a/src/protocols/jabber/roster.c Tue Oct 21 16:34:12 2003 +0000 +++ b/src/protocols/jabber/roster.c Tue Oct 21 17:18:46 2003 +0000 @@ -117,20 +117,36 @@ { xmlnode *query, *item, *group; const char *from = xmlnode_get_attrib(packet, "from"); - char *me1, *me2; + + if(from) { + char *me, *from_norm; + JabberID *from_jid = jabber_id_new(from); + gboolean invalid; - me1 = g_strdup_printf("%s@%s", js->user->node, js->user->domain); - me2 = g_strdup_printf("%s/%s", me1, js->user->resource); + if(!from_jid) + return; + + from_norm = g_strdup_printf("%s@%s%s%s", + from_jid->node ? from_jid->node : "", + from_jid->domain, + from_jid->resource ? "/" : "", + from_jid->resource ? from_jid->resource : ""); - if(from && strcmp(from, me1) && strcmp(from, me2)) { - g_free(me1); - g_free(me2); - return; + if(from_jid->resource) + me = g_strdup_printf("%s@%s/%s", js->user->node, js->user->domain, + js->user->resource); + else + me = g_strdup_printf("%s@%s", js->user->node, js->user->domain); + + invalid = g_utf8_collate(from_norm, me); + g_free(from_norm); + g_free(me); + jabber_id_free(from_jid); + + if(invalid) + return; } - g_free(me1); - g_free(me2); - query = xmlnode_get_child(packet, "query"); if(!query) return;