Mercurial > ~mikael > mcabber > hg
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, |