diff libpurple/protocols/jabber/message.c @ 27943:684690dbda4a

propagate from branch 'im.pidgin.pidgin' (head f92d95c83baba97463f923077688ba2eb144763b) to branch 'im.pidgin.pidgin.yaz' (head ae2b51da61a998a69de04124f2696ce2a419a7b3)
author Yoshiki Yazawa <yaz@honeyplanet.jp>
date Fri, 01 May 2009 20:44:30 +0000
parents f3ccb5a36fd6 f67f24008334
children e0bcdc2bad7d
line wrap: on
line diff
--- a/libpurple/protocols/jabber/message.c	Fri Apr 24 07:43:08 2009 +0000
+++ b/libpurple/protocols/jabber/message.c	Fri May 01 20:44:30 2009 +0000
@@ -24,6 +24,7 @@
 #include "notify.h"
 #include "server.h"
 #include "util.h"
+#include "adhoccommands.h"
 #include "buddy.h"
 #include "chat.h"
 #include "data.h"
@@ -597,8 +598,11 @@
 			/* The following tests expect xmlns != NULL */
 			continue;
 		} else if(!strcmp(child->name, "subject") && !strcmp(xmlns,"jabber:client")) {
-			if(!jm->subject)
+			if(!jm->subject) {
 				jm->subject = xmlnode_get_data(child);
+				if(!jm->subject)
+					jm->subject = g_strdup("");
+			}
 		} else if(!strcmp(child->name, "thread") && !strcmp(xmlns,"jabber:client")) {
 			if(!jm->thread_id)
 				jm->thread_id = xmlnode_get_data(child);
@@ -641,7 +645,8 @@
 							}
 
 							jabber_id_free(jid);
-						} else {
+						} else if (jm->type == JABBER_MESSAGE_NORMAL ||
+						           jm->type == JABBER_MESSAGE_CHAT) {
 							conv =
 								purple_find_conversation_with_account(PURPLE_CONV_TYPE_ANY,
 									who, account);
@@ -782,6 +787,12 @@
 			} else {
 				jm->etc = g_list_append(jm->etc, child);
 			}
+		} else if (g_str_equal(child->name, "query")) {
+			const char *node = xmlnode_get_attrib(child, "node");
+			if (purple_strequal(xmlns, "http://jabber.org/protocol/disco#items")
+					&& purple_strequal(node, "http://jabber.org/protocol/commands")) {
+				jabber_adhoc_got_list(js, jm->from, child);
+			}
 		}
 	}
 
@@ -1221,29 +1232,11 @@
 	return 0;
 }
 
-void jabber_message_conv_closed(JabberStream *js, const char *who)
-{
-	JabberMessage *jm;
-	if (!purple_prefs_get_bool("/purple/conversations/im/send_typing"))
-		return;
-
-	jm  = g_new0(JabberMessage, 1);
-	jm->js = js;
-	jm->type = JABBER_MESSAGE_CHAT;
-	jm->to = g_strdup(who);
-	jm->id = jabber_get_next_id(jm->js);
-	jm->typing_style = JM_TS_JEP_0085;
-	jm->chat_state = JM_STATE_GONE;
-	jabber_message_send(jm);
-	jabber_message_free(jm);
-}
-
-gboolean jabber_buzz_isenabled(JabberStream *js, const gchar *shortname, const gchar *namespace) {
+gboolean jabber_buzz_isenabled(JabberStream *js, const gchar *namespace) {
 	return js->allowBuzz;
 }
 
-gboolean jabber_custom_smileys_isenabled(JabberStream *js, const gchar *shortname,
-										 const gchar *namespace)
+gboolean jabber_custom_smileys_isenabled(JabberStream *js, const gchar *namespace)
 {
 	const PurpleConnection *gc = js->gc;
 	PurpleAccount *account = purple_connection_get_account(gc);