changeset 1134:995dde656033

Response to XMPP Ping (XEP-0199)
author misc@mandriva.org
date Sat, 03 Feb 2007 18:31:55 +0100
parents 9dd28a56128f
children 5d7c05932b13
files mcabber/libjabber/jabber.h mcabber/src/jab_iq.c
diffstat 2 files changed, 19 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- a/mcabber/libjabber/jabber.h	Sat Feb 03 18:06:34 2007 +0100
+++ b/mcabber/libjabber/jabber.h	Sat Feb 03 18:31:55 2007 +0100
@@ -291,6 +291,8 @@
 #define NS_XMPP_TLS  "urn:ietf:params:xml:ns:xmpp-tls"
 #define NS_XMPP_STREAMS "urn:ietf:params:xml:ns:xmpp-streams"
 
+#define NS_PING      "urn:xmpp:ping"
+
 #define NS_JABBERD_STOREDPRESENCE "http://jabberd.org/ns/storedpresence"
 #define NS_JABBERD_HISTORY "http://jabberd.org/ns/history"
 
--- a/mcabber/src/jab_iq.c	Sat Feb 03 18:06:34 2007 +0100
+++ b/mcabber/src/jab_iq.c	Sat Feb 03 18:31:55 2007 +0100
@@ -820,7 +820,17 @@
                      "var", NS_TIME);
   xmlnode_put_attrib(xmlnode_insert_tag(myquery, "feature"),
                      "var", NS_VERSION);
+  xmlnode_put_attrib(xmlnode_insert_tag(myquery, "feature"),
+                     "var", NS_PING);
+  jab_send(jc, x);
+  xmlnode_free(x);
+}
 
+static void handle_iq_ping(jconn conn, char *from, const char *id,
+                           xmlnode xmldata)
+{
+  xmlnode x;
+  x = jutil_iqresult(xmldata);
   jab_send(jc, x);
   xmlnode_free(x);
 }
@@ -918,6 +928,13 @@
     return;
   }
 
+  x = xmlnode_get_tag(xmldata, "ping");
+  ns = xmlnode_get_attrib(x, "xmlns");
+  if (ns && !strcmp(ns, NS_PING)) {
+    handle_iq_ping(conn, from, id, xmldata);
+    return;
+  }
+
   x = xmlnode_get_tag(xmldata, "query");
   ns = xmlnode_get_attrib(x, "xmlns");
   if (ns && !strcmp(ns, NS_DISCO_INFO)) {