Mercurial > pidgin
changeset 29022:9e735d7e2f1d
Oops, just realized that caps can be reset in certain situations, and we
only want that to happen for the specific resource, not the entire buddy
caps.
author | Elliott Sales de Andrade <qulogic@pidgin.im> |
---|---|
date | Thu, 11 Feb 2010 04:15:00 +0000 |
parents | 7cab6dc6b79c |
children | 786d58ae6f76 |
files | libpurple/protocols/jabber/jabber.c |
diffstat | 1 files changed, 7 insertions(+), 4 deletions(-) [+] |
line wrap: on
line diff
--- a/libpurple/protocols/jabber/jabber.c Thu Feb 11 03:59:56 2010 +0000 +++ b/libpurple/protocols/jabber/jabber.c Thu Feb 11 04:15:00 2010 +0000 @@ -3146,7 +3146,7 @@ purple_account_get_connection(account)->proto_data; JabberBuddy *jb; JabberBuddyResource *jbr; - PurpleMediaCaps caps = PURPLE_MEDIA_CAPS_NONE; + PurpleMediaCaps total = PURPLE_MEDIA_CAPS_NONE; gchar *resource; GList *specific = NULL, *l; @@ -3162,7 +3162,7 @@ /* no resources online, we're trying to get caps for someone * whose presence we're not subscribed to, or * someone who is offline. */ - return caps; + return total; } else if ((resource = jabber_get_resource(who)) != NULL) { /* they've specified a resource, no need to ask or @@ -3173,7 +3173,7 @@ if (!jbr) { purple_debug_error("jabber", "jabber_get_media_caps:" " Can't find resource %s\n", who); - return caps; + return total; } l = specific = g_list_prepend(specific, jbr); @@ -3184,6 +3184,7 @@ } for (; l; l = l->next) { + PurpleMediaCaps caps = PURPLE_MEDIA_CAPS_NONE; jbr = l->data; if (jabber_resource_has_capability(jbr, @@ -3214,13 +3215,15 @@ if (jabber_resource_has_capability(jbr, NS_GOOGLE_VIDEO)) caps |= PURPLE_MEDIA_CAPS_AUDIO_VIDEO; } + + total |= caps; } if (specific) { g_list_free(specific); } - return caps; + return total; #else return PURPLE_MEDIA_CAPS_NONE; #endif