Fix looping issue spotted by isbear when sending manual IQ messages
The IQ handlers should not be triggered for unexpected IQ result messages
--- a/mcabber/mcabber/xmpp.c Sat Apr 17 11:21:04 2010 +0200
+++ b/mcabber/mcabber/xmpp.c Sat Apr 17 11:50:22 2010 +0200
@@ -1483,6 +1483,14 @@
return LM_HANDLER_RESULT_REMOVE_MESSAGE;
}
+ if (mstype == LM_MESSAGE_SUB_TYPE_RESULT) {
+ scr_LogPrint(LPRINT_DEBUG, "Unhandled IQ result? %s", lm_message_node_to_string(m->node)); // TODO check
+
+ scr_LogPrint(LPRINT_NORMAL, "Received unhandled IQ result from <%s>.",
+ lm_message_get_from(m));
+ return LM_HANDLER_RESULT_ALLOW_MORE_HANDLERS;
+ }
+
for (x = m->node->children; x; x=x->next) {
xmlns = lm_message_node_get_attribute(x, "xmlns");
if (xmlns)
@@ -1498,10 +1506,8 @@
scr_LogPrint(LPRINT_DEBUG, "Unhandled IQ: %s", lm_message_node_to_string(m->node));
- if (mstype != LM_MESSAGE_SUB_TYPE_RESULT) {
- scr_LogPrint(LPRINT_NORMAL, "Received unhandled IQ request from <%s>.",
- lm_message_get_from(m));
- }
+ scr_LogPrint(LPRINT_NORMAL, "Received unhandled IQ request from <%s>.",
+ lm_message_get_from(m));
return LM_HANDLER_RESULT_REMOVE_MESSAGE;
}