Mercurial > pidgin
comparison libpurple/protocols/jabber/buddy.c @ 25208:6f94b4a27372
propagate from branch 'im.pidgin.pidgin' (head f1327672337219c8907eea2d335efb0035e4b39e)
to branch 'im.pidgin.cpw.malu.xmpp.idle' (head 6bfd4d87742ad77dd228039033d081fb8b68f8aa)
author | Marcus Lundblad <ml@update.uu.se> |
---|---|
date | Tue, 02 Dec 2008 22:45:39 +0000 |
parents | b2f4964768d7 5f597914cd01 |
children | e3bb0bbfa388 |
comparison
equal
deleted
inserted
replaced
25207:b2f4964768d7 | 25208:6f94b4a27372 |
---|---|
113 if ((jbr->state != JABBER_BUDDY_STATE_ONLINE) && (jbr->state != JABBER_BUDDY_STATE_CHAT)) | 113 if ((jbr->state != JABBER_BUDDY_STATE_ONLINE) && (jbr->state != JABBER_BUDDY_STATE_CHAT)) |
114 jbr = l->data; | 114 jbr = l->data; |
115 break; | 115 break; |
116 case JABBER_BUDDY_STATE_AWAY: | 116 case JABBER_BUDDY_STATE_AWAY: |
117 case JABBER_BUDDY_STATE_DND: | 117 case JABBER_BUDDY_STATE_DND: |
118 case JABBER_BUDDY_STATE_UNAVAILABLE: | 118 /* This resource is away/dnd. Prefer to one which is extended away, unavailable, or unknown. */ |
119 /* This resource is away/dnd/unavailable. Prefer to one which is extended away or unknown. */ | 119 if ((jbr->state == JABBER_BUDDY_STATE_XA) || (jbr->state == JABBER_BUDDY_STATE_UNAVAILABLE) || |
120 if ((jbr->state == JABBER_BUDDY_STATE_XA) || | |
121 (jbr->state == JABBER_BUDDY_STATE_UNKNOWN) || (jbr->state == JABBER_BUDDY_STATE_ERROR)) | 120 (jbr->state == JABBER_BUDDY_STATE_UNKNOWN) || (jbr->state == JABBER_BUDDY_STATE_ERROR)) |
122 jbr = l->data; | 121 jbr = l->data; |
123 break; | 122 break; |
124 case JABBER_BUDDY_STATE_XA: | 123 case JABBER_BUDDY_STATE_XA: |
125 /* This resource is extended away. That's better than unknown. */ | 124 /* This resource is extended away. That's better than unavailable or unknown. */ |
125 if ((jbr->state == JABBER_BUDDY_STATE_UNAVAILABLE) || (jbr->state == JABBER_BUDDY_STATE_UNKNOWN) || (jbr->state == JABBER_BUDDY_STATE_ERROR)) | |
126 jbr = l->data; | |
127 break; | |
128 case JABBER_BUDDY_STATE_UNAVAILABLE: | |
129 /* This resource is unavailable. That's better than unknown. */ | |
126 if ((jbr->state == JABBER_BUDDY_STATE_UNKNOWN) || (jbr->state == JABBER_BUDDY_STATE_ERROR)) | 130 if ((jbr->state == JABBER_BUDDY_STATE_UNKNOWN) || (jbr->state == JABBER_BUDDY_STATE_ERROR)) |
127 jbr = l->data; | 131 jbr = l->data; |
128 break; | 132 break; |
129 case JABBER_BUDDY_STATE_UNKNOWN: | 133 case JABBER_BUDDY_STATE_UNKNOWN: |
130 case JABBER_BUDDY_STATE_ERROR: | 134 case JABBER_BUDDY_STATE_ERROR: |
964 | 968 |
965 g_string_free(tmp, TRUE); | 969 g_string_free(tmp, TRUE); |
966 } | 970 } |
967 #endif | 971 #endif |
968 } else { | 972 } else { |
969 gboolean multiple_resources = jbi->jb->resources && (g_list_length(jbi->jb->resources) > 1); | 973 gboolean multiple_resources = jbi->jb->resources && jbi->jb->resources->next; |
970 | 974 |
971 for(resources = jbi->jb->resources; resources; resources = resources->next) { | 975 for(resources = jbi->jb->resources; resources; resources = resources->next) { |
972 char *purdy = NULL; | 976 char *purdy = NULL; |
973 const char *status_name = NULL; | 977 const char *status_name = NULL; |
974 | 978 |
1796 } | 1800 } |
1797 | 1801 |
1798 void jabber_buddy_get_info(PurpleConnection *gc, const char *who) | 1802 void jabber_buddy_get_info(PurpleConnection *gc, const char *who) |
1799 { | 1803 { |
1800 JabberStream *js = gc->proto_data; | 1804 JabberStream *js = gc->proto_data; |
1801 char *bare_jid = jabber_get_bare_jid(who); | 1805 JabberID *jid = jabber_id_new(who); |
1802 | 1806 |
1803 if(bare_jid) { | 1807 if (!jid) |
1808 return; | |
1809 | |
1810 if (jabber_chat_find(js, jid->node, jid->domain)) { | |
1811 /* For a conversation, include the resource (indicates the user). */ | |
1812 jabber_buddy_get_info_for_jid(js, who); | |
1813 } else { | |
1814 char *bare_jid = jabber_get_bare_jid(who); | |
1804 jabber_buddy_get_info_for_jid(js, bare_jid); | 1815 jabber_buddy_get_info_for_jid(js, bare_jid); |
1805 g_free(bare_jid); | 1816 g_free(bare_jid); |
1806 } | 1817 } |
1818 | |
1819 jabber_id_free(jid); | |
1807 } | 1820 } |
1808 | 1821 |
1809 static void jabber_buddy_set_invisibility(JabberStream *js, const char *who, | 1822 static void jabber_buddy_set_invisibility(JabberStream *js, const char *who, |
1810 gboolean invisible) | 1823 gboolean invisible) |
1811 { | 1824 { |