--- a/mcabber/mcabber/xmpp_iqrequest.c Sun Feb 07 19:19:33 2010 +0100
+++ b/mcabber/mcabber/xmpp_iqrequest.c Mon Feb 08 19:15:55 2010 +0100
@@ -125,16 +125,9 @@
{
LmMessageNode *ansqry;
const char *p, *bjid;
- char *tmp;
- char *buf;
+ char *buf, *tmp;
- ansqry = lm_message_node_get_child(m->node, "query");
- if (!ansqry) {
- scr_LogPrint(LPRINT_LOGNORM, "Invalid IQ:version result!");
- return LM_HANDLER_RESULT_ALLOW_MORE_HANDLERS;
- }
-
- // Display IQ result sender...
+ // Check IQ result sender
bjid = lm_message_get_from(m);
if (!bjid)
bjid = lm_connection_get_jid(lconnection); // No from means our JID...
@@ -143,6 +136,20 @@
return LM_HANDLER_RESULT_REMOVE_MESSAGE;
}
+ // Check for error message
+ if (lm_message_get_sub_type(m) == LM_MESSAGE_SUB_TYPE_ERROR) {
+ scr_LogPrint(LPRINT_LOGNORM, "Received error IQ message (%s)", bjid);
+ display_server_error(lm_message_node_get_child(m->node, "error"));
+ return LM_HANDLER_RESULT_REMOVE_MESSAGE;
+ }
+
+ // Check message contents
+ ansqry = lm_message_node_get_child(m->node, "query");
+ if (!ansqry) {
+ scr_LogPrint(LPRINT_LOGNORM, "Invalid IQ:version result from <%s>!", bjid);
+ return LM_HANDLER_RESULT_REMOVE_MESSAGE;
+ }
+
buf = g_strdup_printf("Received IQ:version result from <%s>", bjid);
scr_LogPrint(LPRINT_LOGNORM, "%s", buf);
@@ -183,20 +190,28 @@
{
LmMessageNode *ansqry;
const char *p, *bjid;
- char *tmp;
- char *buf;
+ char *buf, *tmp;
- ansqry = lm_message_node_get_child(m->node, "query");
- if (!ansqry) {
- scr_LogPrint(LPRINT_LOGNORM, "Invalid IQ:time result!");
- return LM_HANDLER_RESULT_ALLOW_MORE_HANDLERS;
- }
- // Display IQ result sender...
+ // Check IQ result sender
bjid = lm_message_get_from(m);
if (!bjid)
bjid = lm_connection_get_jid(lconnection); // No from means our JID...
if (!bjid) {
- scr_LogPrint(LPRINT_LOGNORM, "Invalid IQ:version result (no sender name).");
+ scr_LogPrint(LPRINT_LOGNORM, "Invalid IQ:time result (no sender name).");
+ return LM_HANDLER_RESULT_REMOVE_MESSAGE;
+ }
+
+ // Check for error message
+ if (lm_message_get_sub_type(m) == LM_MESSAGE_SUB_TYPE_ERROR) {
+ scr_LogPrint(LPRINT_LOGNORM, "Received error IQ message (%s)", bjid);
+ display_server_error(lm_message_node_get_child(m->node, "error"));
+ return LM_HANDLER_RESULT_REMOVE_MESSAGE;
+ }
+
+ // Check message contents
+ ansqry = lm_message_node_get_child(m->node, "query");
+ if (!ansqry) {
+ scr_LogPrint(LPRINT_LOGNORM, "Invalid IQ:time result from <%s>!", bjid);
return LM_HANDLER_RESULT_REMOVE_MESSAGE;
}
@@ -242,17 +257,26 @@
const char *p, *bjid;
char *buf, *tmp;
- ansqry = lm_message_node_get_child(m->node, "query");
- if (!ansqry) {
- scr_LogPrint(LPRINT_LOGNORM, "Invalid IQ:last result!");
- return LM_HANDLER_RESULT_ALLOW_MORE_HANDLERS;
- }
- // Display IQ result sender...
+ // Check IQ result sender
bjid = lm_message_get_from(m);
if (!bjid)
bjid = lm_connection_get_jid(lconnection); // No from means our JID...
if (!bjid) {
- scr_LogPrint(LPRINT_LOGNORM, "Invalid IQ:version result (no sender name).");
+ scr_LogPrint(LPRINT_LOGNORM, "Invalid IQ:last result (no sender name).");
+ return LM_HANDLER_RESULT_REMOVE_MESSAGE;
+ }
+
+ // Check for error message
+ if (lm_message_get_sub_type(m) == LM_MESSAGE_SUB_TYPE_ERROR) {
+ scr_LogPrint(LPRINT_LOGNORM, "Received error IQ message (%s)", bjid);
+ display_server_error(lm_message_node_get_child(m->node, "error"));
+ return LM_HANDLER_RESULT_REMOVE_MESSAGE;
+ }
+
+ // Check message contents
+ ansqry = lm_message_node_get_child(m->node, "query");
+ if (!ansqry) {
+ scr_LogPrint(LPRINT_LOGNORM, "Invalid IQ:version result from <%s>!", bjid);
return LM_HANDLER_RESULT_REMOVE_MESSAGE;
}
@@ -415,12 +439,19 @@
const char *bjid;
char *buf, *tmp;
- // Display IQ result sender...
+ // Check IQ result sender
bjid = lm_message_get_from(m);
if (!bjid)
bjid = lm_connection_get_jid(lconnection); // No from means our JID...
if (!bjid) {
- scr_LogPrint(LPRINT_LOGNORM, "Invalid IQ:version result (no sender name).");
+ scr_LogPrint(LPRINT_LOGNORM, "Invalid IQ:vCard result (no sender name).");
+ return LM_HANDLER_RESULT_REMOVE_MESSAGE;
+ }
+
+ // Check for error message
+ if (lm_message_get_sub_type(m) == LM_MESSAGE_SUB_TYPE_ERROR) {
+ scr_LogPrint(LPRINT_LOGNORM, "Received error IQ message (%s)", bjid);
+ display_server_error(lm_message_node_get_child(m->node, "error"));
return LM_HANDLER_RESULT_REMOVE_MESSAGE;
}