Mercurial > pidgin
diff libpurple/protocols/jabber/roster.c @ 27981:0af4b1fb0566
propagate from branch 'im.pidgin.pidgin' (head 1876e80a840aa8045b1a49c60049781e0d285558)
to branch 'im.pidgin.cpw.darkrain42.2.6.1' (head 0e467725740268650f924a56ea776122abfffb67)
author | Paul Aurich <paul@darkrain42.org> |
---|---|
date | Mon, 03 Aug 2009 00:46:28 +0000 |
parents | eb2d17945ce3 |
children | c585572e80dd |
line wrap: on
line diff
--- a/libpurple/protocols/jabber/roster.c Sun Aug 02 22:24:21 2009 +0000 +++ b/libpurple/protocols/jabber/roster.c Mon Aug 03 00:46:28 2009 +0000 @@ -66,7 +66,7 @@ } static void add_purple_buddy_to_groups(JabberStream *js, const char *jid, - const char *alias, GSList *groups, const char *own_jid) + const char *alias, GSList *groups) { GSList *buddies, *l; GSList *pool = NULL; @@ -162,12 +162,6 @@ purple_blist_add_buddy(b, NULL, g, NULL); purple_blist_alias_buddy(b, alias); - /* If we just learned about ourself, then fake our status, - * because we won't be receiving a normal presence message - * about ourself. */ - if(!strcmp(purple_buddy_get_name(b), own_jid)) - jabber_presence_fake_to_self(js, NULL); - g_free(groups->data); groups = g_slist_delete_link(groups, groups); } @@ -187,7 +181,6 @@ JabberIqType type, const char *id, xmlnode *query) { xmlnode *item, *group; - gchar *own_jid; if (!jabber_is_own_account(js, from)) { purple_debug_warning("jabber", "Received bogon roster push from %s\n", @@ -197,8 +190,6 @@ js->currently_parsing_roster_push = TRUE; - own_jid = g_strdup_printf("%s@%s", js->user->node, js->user->domain); - for(item = xmlnode_get_child(query, "item"); item; item = xmlnode_get_next_twin(item)) { const char *jid, *name, *subscription, *ask; @@ -216,11 +207,7 @@ continue; if(subscription) { - gboolean me = FALSE; - - me = g_str_equal(own_jid, jabber_normalize(js->gc->account, jid)); - - if(me) + if (jb == js->user_jb) jb->subscription = JABBER_SUB_BOTH; else if(!strcmp(subscription, "none")) jb->subscription = JABBER_SUB_NONE; @@ -260,11 +247,12 @@ groups = g_slist_prepend(groups, group_name); } - add_purple_buddy_to_groups(js, jid, name, groups, own_jid); + add_purple_buddy_to_groups(js, jid, name, groups); + if (jb == js->user_jb) + jabber_presence_fake_to_self(js, NULL); } } - g_free(own_jid); js->currently_parsing_roster_push = FALSE; /* if we're just now parsing the roster for the first time, @@ -348,7 +336,6 @@ char *who; JabberBuddy *jb; JabberBuddyResource *jbr; - char *own_jid; const char *name; /* If we haven't received the roster yet, ignore any adds */ @@ -366,8 +353,7 @@ jabber_roster_update(js, who, NULL); - own_jid = g_strdup_printf("%s@%s", js->user->node, js->user->domain); - if (g_str_equal(who, own_jid)) { + if (jb == js->user_jb) { jabber_presence_fake_to_self(js, NULL); } else if(!jb || !(jb->subscription & JABBER_SUB_TO)) { jabber_presence_subscription_set(js, who, "subscribe"); @@ -377,7 +363,6 @@ "priority", jbr->priority, jbr->status ? "message" : NULL, jbr->status, NULL); } - g_free(own_jid); g_free(who); }