# HG changeset patch # User Mikael Berthe # Date 1265566413 -3600 # Node ID 44e023ad99ed6fc2fe5884e2ff54d786a507fa42 # Parent 87dd0a8f1a9cf869fe1666d7c3f3c21417744420 Add dummy handler for roster manipulation IQ responses This clears up the "Unhandled IQ" messages, only errors should displayed now. diff -r 87dd0a8f1a9c -r 44e023ad99ed mcabber/mcabber/xmpp.c --- 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); diff -r 87dd0a8f1a9c -r 44e023ad99ed mcabber/mcabber/xmpp_iq.c --- 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"); diff -r 87dd0a8f1a9c -r 44e023ad99ed mcabber/mcabber/xmpp_iq.h --- 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);