--- 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)) {