# HG changeset patch # User Nathan Walp # Date 1181963833 0 # Node ID 3d7129ac1de97c592ff3cc9c084741f9b6e64b23 # Parent c0cd4d84ba520a0de18c9b3224edb29504bf9e1b respond to XEP-0199 queries (XMPP ping) diff -r c0cd4d84ba52 -r 3d7129ac1de9 libpurple/protocols/jabber/disco.c --- a/libpurple/protocols/jabber/disco.c Sat Jun 16 02:21:13 2007 +0000 +++ b/libpurple/protocols/jabber/disco.c Sat Jun 16 03:17:13 2007 +0000 @@ -96,6 +96,7 @@ SUPPORT_FEATURE("http://jabber.org/protocol/si") SUPPORT_FEATURE("http://jabber.org/protocol/si/profile/file-transfer") SUPPORT_FEATURE("http://jabber.org/protocol/xhtml-im") + SUPPORT_FEATURE("urn:xmpp:ping") } else { xmlnode *error, *inf; diff -r c0cd4d84ba52 -r 3d7129ac1de9 libpurple/protocols/jabber/iq.c --- a/libpurple/protocols/jabber/iq.c Sat Jun 16 02:21:13 2007 +0000 +++ b/libpurple/protocols/jabber/iq.c Sat Jun 16 03:17:13 2007 +0000 @@ -201,6 +201,25 @@ xmlnode_insert_data(xmlnode_new_child(query, "display"), date, -1); jabber_iq_send(iq); + } else { + /* XXX: error */ + } +} + +static void urn_xmpp_ping_parse(JabberStream *js, xmlnode *packet) +{ + const char *type, *from, *id; + JabberIq *iq; + xmlnode *query; + + if(type && !strcmp(type, "get")) { + iq = jabber_iq_new_query(js, JABBER_IQ_RESULT, "urn:xmpp:ping"); + + jabber_iq_set_id(iq, id); + + jabber_iq_send(iq); + } else { + /* XXX: error */ } } @@ -328,6 +347,7 @@ jabber_iq_register_handler("http://jabber.org/protocol/disco#info", jabber_disco_info_parse); jabber_iq_register_handler("http://jabber.org/protocol/disco#items", jabber_disco_items_parse); jabber_iq_register_handler("jabber:iq:register", jabber_register_parse); + jabber_iq_register_handler("urn:xmpp:ping", urn_xmpp_ping_parse); } void jabber_iq_uninit(void)