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;