changeset 1904:9a3d7a7dada2

Fix looping issue spotted by isbear when sending manual IQ messages The IQ handlers should not be triggered for unexpected IQ result messages
author Mikael Berthe <mikael@lilotux.net>
date Sat, 17 Apr 2010 11:50:22 +0200
parents 75a0a22bbf78
children 68a4f8dda3e7
files mcabber/mcabber/xmpp.c
diffstat 1 files changed, 10 insertions(+), 4 deletions(-) [+]
line wrap: on
line diff
--- 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;
 }