changeset 2017:87049d55e34f

Fix /request time /request time was still using Legacy Entity Time (XEP-90). This patch makes mcabber use XEP-202 for queries; mcabber still answers to both current and legacy queries.
author Mikael Berthe <mikael@lilotux.net>
date Sat, 28 Jul 2012 14:40:50 +0200
parents e9b6e168a45e
children fe04f29f70e7
files mcabber/mcabber/xmpp.c mcabber/mcabber/xmpp_iqrequest.c
diffstat 2 files changed, 11 insertions(+), 10 deletions(-) [+]
line wrap: on
line diff
--- a/mcabber/mcabber/xmpp.c	Wed Jul 18 00:24:13 2012 +0200
+++ b/mcabber/mcabber/xmpp.c	Sat Jul 28 14:40:50 2012 +0200
@@ -242,7 +242,7 @@
     xmlns = NS_VERSION;
     strreqtype = "version";
   } else if (reqtype == iqreq_time) {
-    xmlns = NS_TIME;
+    xmlns = NS_XMPP_TIME;
     strreqtype = "time";
   } else if (reqtype == iqreq_last) {
     xmlns = NS_LAST;
--- a/mcabber/mcabber/xmpp_iqrequest.c	Wed Jul 18 00:24:13 2012 +0200
+++ b/mcabber/mcabber/xmpp_iqrequest.c	Sat Jul 28 14:40:50 2012 +0200
@@ -54,12 +54,12 @@
   const gchar *querytag;
   LmHandleMessageFunction handler;
 } iq_request_handlers[] = {
-  {NS_ROSTER, "query", &cb_roster},
-  {NS_VERSION,"query", &cb_version},
-  {NS_TIME,   "query", &cb_time},
-  {NS_LAST,   "query", &cb_last},
-  {NS_PING,   "ping",  &cb_ping},
-  {NS_VCARD,  "vCard", &cb_vcard},
+  {NS_ROSTER,   "query", &cb_roster},
+  {NS_VERSION,  "query", &cb_version},
+  {NS_XMPP_TIME,"time",  &cb_time},
+  {NS_LAST,     "query", &cb_last},
+  {NS_PING,     "ping",  &cb_ping},
+  {NS_VCARD,    "vCard", &cb_vcard},
   {NULL, NULL, NULL}
 };
 
@@ -146,7 +146,8 @@
 
   iq = lm_message_new_with_sub_type(fulljid, LM_MESSAGE_TYPE_IQ,
                                     LM_MESSAGE_SUB_TYPE_GET);
-  for (i = 0; strcmp(iq_request_handlers[i].xmlns, xmlns) != 0 ; ++i)
+  for (i = 0; iq_request_handlers[i].xmlns &&
+              strcmp(iq_request_handlers[i].xmlns, xmlns) != 0 ; ++i)
        ;
   query = lm_message_node_add_child(iq->node,
                                     iq_request_handlers[i].querytag,
@@ -288,7 +289,7 @@
   }
 
   // Check message contents
-  ansqry = lm_message_node_get_child(m->node, "query");
+  ansqry = lm_message_node_get_child(m->node, "time");
   if (!ansqry) {
     scr_LogPrint(LPRINT_LOGNORM, "Invalid IQ:time result from <%s>!", bjid);
     return LM_HANDLER_RESULT_REMOVE_MESSAGE;
@@ -312,7 +313,7 @@
                              0, HBB_PREFIX_INFO | HBB_PREFIX_CONT, 0);
     g_free(buf);
   }
-  p = lm_message_node_get_child_value(ansqry, "tz");
+  p = lm_message_node_get_child_value(ansqry, "tzo");
   if (p && *p) {
     buf = g_strdup_printf("TZ:   %s", p);
     scr_WriteIncomingMessage(bjid, buf,