comparison mcabber/mcabber/xmpp.c @ 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 51cc01a1a5ec
children 68a4f8dda3e7
comparison
equal deleted inserted replaced
1903:75a0a22bbf78 1904:9a3d7a7dada2
1481 display_server_error(lm_message_node_get_child(m->node, "error"), 1481 display_server_error(lm_message_node_get_child(m->node, "error"),
1482 lm_message_get_from(m)); 1482 lm_message_get_from(m));
1483 return LM_HANDLER_RESULT_REMOVE_MESSAGE; 1483 return LM_HANDLER_RESULT_REMOVE_MESSAGE;
1484 } 1484 }
1485 1485
1486 if (mstype == LM_MESSAGE_SUB_TYPE_RESULT) {
1487 scr_LogPrint(LPRINT_DEBUG, "Unhandled IQ result? %s", lm_message_node_to_string(m->node)); // TODO check
1488
1489 scr_LogPrint(LPRINT_NORMAL, "Received unhandled IQ result from <%s>.",
1490 lm_message_get_from(m));
1491 return LM_HANDLER_RESULT_ALLOW_MORE_HANDLERS;
1492 }
1493
1486 for (x = m->node->children; x; x=x->next) { 1494 for (x = m->node->children; x; x=x->next) {
1487 xmlns = lm_message_node_get_attribute(x, "xmlns"); 1495 xmlns = lm_message_node_get_attribute(x, "xmlns");
1488 if (xmlns) 1496 if (xmlns)
1489 for (i=0; iq_handlers[i].xmlns; ++i) 1497 for (i=0; iq_handlers[i].xmlns; ++i)
1490 if (!strcmp(iq_handlers[i].xmlns, xmlns)) 1498 if (!strcmp(iq_handlers[i].xmlns, xmlns))
1496 (mstype == LM_MESSAGE_SUB_TYPE_GET)) 1504 (mstype == LM_MESSAGE_SUB_TYPE_GET))
1497 send_iq_error(connection, m, XMPP_ERROR_NOT_IMPLEMENTED); 1505 send_iq_error(connection, m, XMPP_ERROR_NOT_IMPLEMENTED);
1498 1506
1499 scr_LogPrint(LPRINT_DEBUG, "Unhandled IQ: %s", lm_message_node_to_string(m->node)); 1507 scr_LogPrint(LPRINT_DEBUG, "Unhandled IQ: %s", lm_message_node_to_string(m->node));
1500 1508
1501 if (mstype != LM_MESSAGE_SUB_TYPE_RESULT) { 1509 scr_LogPrint(LPRINT_NORMAL, "Received unhandled IQ request from <%s>.",
1502 scr_LogPrint(LPRINT_NORMAL, "Received unhandled IQ request from <%s>.", 1510 lm_message_get_from(m));
1503 lm_message_get_from(m));
1504 }
1505 1511
1506 return LM_HANDLER_RESULT_REMOVE_MESSAGE; 1512 return LM_HANDLER_RESULT_REMOVE_MESSAGE;
1507 } 1513 }
1508 1514
1509 static LmHandlerResult handle_s10n(LmMessageHandler *handler, 1515 static LmHandlerResult handle_s10n(LmMessageHandler *handler,