aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorWilmer van der Gaast <wilmer@gaast.net>2007-12-16 16:35:38 +0000
committerWilmer van der Gaast <wilmer@gaast.net>2007-12-16 16:35:38 +0000
commit529078a3e7f701c7b85201380b2d2097ac676ec6 (patch)
tree4ff2d83cc5221de1ac5878160cbb7941d1395e6a
parent3e79889dceeac1432156dc5fb6ae4a1f20b86d69 (diff)
Implemented XEP-0199 (patch from misc@mandriva.org).
-rw-r--r--protocols/jabber/iq.c12
-rw-r--r--protocols/jabber/jabber.h1
2 files changed, 12 insertions, 1 deletions
diff --git a/protocols/jabber/iq.c b/protocols/jabber/iq.c
index 3dae39f6..069e3af3 100644
--- a/protocols/jabber/iq.c
+++ b/protocols/jabber/iq.c
@@ -49,7 +49,8 @@ xt_status jabber_pkt_iq( struct xt_node *node, gpointer data )
}
else if( strcmp( type, "get" ) == 0 )
{
- if( !( c = xt_find_node( node->children, "query" ) ) ||
+ if( !( ( c = xt_find_node( node->children, "query" ) ) ||
+ ( c = xt_find_node( node->children, "ping" ) ) ) || /* O_o WHAT is wrong with just <query/> ????? */
!( s = xt_find_attr( c, "xmlns" ) ) )
{
imcb_log( ic, "WARNING: Received incomplete IQ-%s packet", type );
@@ -80,12 +81,21 @@ xt_status jabber_pkt_iq( struct xt_node *node, gpointer data )
strftime( buf, sizeof( buf ) - 1, "%Z", localtime( &time_ep ) );
xt_add_child( reply, xt_new_node( "tz", buf, NULL ) );
}
+ else if( strcmp( s, XMLNS_PING ) == 0 )
+ {
+ xt_free_node( reply );
+ reply = jabber_make_packet( "iq", "result", xt_find_attr( node, "from" ), NULL );
+ if( ( s = xt_find_attr( node, "id" ) ) )
+ xt_add_attr( reply, "id", s );
+ pack = 0;
+ }
else if( strcmp( s, XMLNS_DISCOVER ) == 0 )
{
const char *features[] = { XMLNS_VERSION,
XMLNS_TIME,
XMLNS_CHATSTATES,
XMLNS_MUC,
+ XMLNS_PING,
NULL };
const char **f;
diff --git a/protocols/jabber/jabber.h b/protocols/jabber/jabber.h
index 56056534..f673ee0d 100644
--- a/protocols/jabber/jabber.h
+++ b/protocols/jabber/jabber.h
@@ -151,6 +151,7 @@ struct jabber_chat
#define XMLNS_AUTH "jabber:iq:auth" /* XEP-0078 */
#define XMLNS_VERSION "jabber:iq:version" /* XEP-0092 */
#define XMLNS_TIME "jabber:iq:time" /* XEP-0090 */
+#define XMLNS_PING "urn:xmpp:ping" /* XEP-0199 */
#define XMLNS_VCARD "vcard-temp" /* XEP-0054 */
#define XMLNS_DELAY "jabber:x:delay" /* XEP-0091 */
#define XMLNS_CHATSTATES "http://jabber.org/protocol/chatstates" /* 0085 */