Fix looping issue spotted by isbear when sending manual IQ messages
authorMikael Berthe <mikael@lilotux.net>
Sat, 17 Apr 2010 11:50:22 +0200
changeset 1904 9a3d7a7dada2
parent 1903 75a0a22bbf78
child 1905 68a4f8dda3e7
Fix looping issue spotted by isbear when sending manual IQ messages The IQ handlers should not be triggered for unexpected IQ result messages
mcabber/mcabber/xmpp.c
--- 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;
 }