changeset 27512:ed284238509b

Use Entity Capabilities to pick up Chat States support. Refs #4650.
author Paul Aurich <paul@darkrain42.org>
date Sun, 12 Jul 2009 05:25:59 +0000
parents 5d82a9298ed5
children ecae4c8ee0c3 a08e84032814
files libpurple/protocols/jabber/message.c libpurple/protocols/jabber/presence.c
diffstat 2 files changed, 12 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- a/libpurple/protocols/jabber/message.c	Sun Jul 12 05:14:32 2009 +0000
+++ b/libpurple/protocols/jabber/message.c	Sun Jul 12 05:25:59 2009 +0000
@@ -87,6 +87,9 @@
 	}
 
 	if(!jm->xhtml && !jm->body) {
+		if (jbr)
+			jbr->chat_states = JABBER_CHAT_STATES_SUPPORTED;
+
 		if(JM_STATE_COMPOSING == jm->chat_state) {
 			serv_got_typing(jm->js->gc, from, 0, PURPLE_TYPING);
 		} else if(JM_STATE_PAUSED == jm->chat_state) {
--- a/libpurple/protocols/jabber/presence.c	Sun Jul 12 05:14:32 2009 +0000
+++ b/libpurple/protocols/jabber/presence.c	Sun Jul 12 05:25:59 2009 +0000
@@ -447,6 +447,9 @@
 	jbr->caps.info = info;
 	jbr->caps.exts = exts;
 
+	if (info == NULL)
+		goto out;
+
 	if (!jbr->commands_fetched && jabber_resource_has_capability(jbr, "http://jabber.org/protocol/commands")) {
 		JabberIq *iq = jabber_iq_new_query(userdata->js, JABBER_IQ_GET, "http://jabber.org/protocol/disco#items");
 		xmlnode *query = xmlnode_get_child_with_namespace(iq->node, "query", "http://jabber.org/protocol/disco#items");
@@ -458,6 +461,12 @@
 		jbr->commands_fetched = TRUE;
 	}
 
+	if (jabber_resource_has_capability(jbr, "http://jabber.org/protocol/chatstates"))
+		jbr->chat_states = JABBER_CHAT_STATES_SUPPORTED;
+	else
+		jbr->chat_states = JABBER_CHAT_STATES_UNSUPPORTED;
+
+out:
 	g_free(userdata->from);
 	g_free(userdata);
 }