Add dummy handler for roster manipulation IQ responses
This clears up the "Unhandled IQ" messages, only errors should displayed now.
--- a/mcabber/mcabber/xmpp.c Sun Feb 07 17:34:00 2010 +0100
+++ b/mcabber/mcabber/xmpp.c Sun Feb 07 19:13:33 2010 +0100
@@ -106,6 +106,7 @@
{
LmMessageNode *query, *y;
LmMessage *iq;
+ LmMessageHandler *handler;
char *cleanjid;
if (!xmpp_is_online())
@@ -129,7 +130,9 @@
if (group)
lm_message_node_add_child(y, "group", group);
- lm_connection_send(lconnection, iq, NULL);
+ handler = lm_message_handler_new(handle_iq_dummy, NULL, FALSE);
+ lm_connection_send_with_reply(lconnection, iq, handler, NULL);
+ lm_message_handler_unref(handler);
lm_message_unref(iq);
xmpp_send_s10n(cleanjid, LM_MESSAGE_SUB_TYPE_SUBSCRIBE);
@@ -144,6 +147,7 @@
void xmpp_updatebuddy(const char *bjid, const char *name, const char *group)
{
LmMessage *iq;
+ LmMessageHandler *handler;
LmMessageNode *x;
char *cleanjid;
@@ -167,7 +171,9 @@
if (group)
lm_message_node_add_child(x, "group", group);
- lm_connection_send(lconnection, iq, NULL);
+ handler = lm_message_handler_new(handle_iq_dummy, NULL, FALSE);
+ lm_connection_send_with_reply(lconnection, iq, handler, NULL);
+ lm_message_handler_unref(handler);
lm_message_unref(iq);
g_free(cleanjid);
}
@@ -176,6 +182,7 @@
{
LmMessageNode *y, *z;
LmMessage *iq;
+ LmMessageHandler *handler;
char *cleanjid;
if (!xmpp_is_online())
@@ -211,7 +218,9 @@
"jid", cleanjid,
"subscription", "remove",
NULL);
- lm_connection_send(lconnection, iq, NULL);
+ handler = lm_message_handler_new(handle_iq_dummy, NULL, FALSE);
+ lm_connection_send_with_reply(lconnection, iq, handler, NULL);
+ lm_message_handler_unref(handler);
lm_message_unref(iq);
roster_del_user(cleanjid);
--- a/mcabber/mcabber/xmpp_iq.c Sun Feb 07 17:34:00 2010 +0100
+++ b/mcabber/mcabber/xmpp_iq.c Sun Feb 07 19:13:33 2010 +0100
@@ -144,6 +144,17 @@
lm_message_node_add_child(field, "value", message);
}
+// Dummy handler to ignore IQ response
+LmHandlerResult handle_iq_dummy(LmMessageHandler *h, LmConnection *c,
+ LmMessage *m, gpointer ud)
+{
+ LmMessageSubType mstype = lm_message_get_sub_type(m);
+ if (mstype == LM_MESSAGE_SUB_TYPE_ERROR) {
+ display_server_error(lm_message_node_get_child(m->node, "error"));
+ }
+ return LM_HANDLER_RESULT_REMOVE_MESSAGE;
+}
+
static LmHandlerResult handle_iq_commands_list(LmMessageHandler *h,
LmConnection *c,
LmMessage *m, gpointer ud)
@@ -560,11 +571,9 @@
int need_refresh = FALSE;
guint roster_type;
- for (y = lm_message_node_find_child(lm_message_node_find_xmlns
- (m->node, NS_ROSTER),
- "item");
- y;
- y = y->next) {
+ y = lm_message_node_find_child(lm_message_node_find_xmlns(m->node, NS_ROSTER),
+ "item");
+ for ( ; y; y = y->next) {
char *name_tmp = NULL;
fjid = lm_message_node_get_attribute(y, "jid");
--- a/mcabber/mcabber/xmpp_iq.h Sun Feb 07 17:34:00 2010 +0100
+++ b/mcabber/mcabber/xmpp_iq.h Sun Feb 07 19:13:33 2010 +0100
@@ -1,6 +1,9 @@
#ifndef __MCABBER_XMPP_IQ_H__
#define __MCABBER_XMPP_IQ_H__ 1
+LmHandlerResult handle_iq_dummy(LmMessageHandler *h,
+ LmConnection *c,
+ LmMessage *m, gpointer ud);
LmHandlerResult handle_iq_commands(LmMessageHandler *h,
LmConnection *c,
LmMessage *m, gpointer ud);