diff options
| author | Wilmer van der Gaast <wilmer@gaast.net> | 2007-12-16 16:35:38 +0000 | 
|---|---|---|
| committer | Wilmer van der Gaast <wilmer@gaast.net> | 2007-12-16 16:35:38 +0000 | 
| commit | 529078a3e7f701c7b85201380b2d2097ac676ec6 (patch) | |
| tree | 4ff2d83cc5221de1ac5878160cbb7941d1395e6a /protocols | |
| parent | 3e79889dceeac1432156dc5fb6ae4a1f20b86d69 (diff) | |
Implemented XEP-0199 (patch from misc@mandriva.org).
Diffstat (limited to 'protocols')
| -rw-r--r-- | protocols/jabber/iq.c | 12 | ||||
| -rw-r--r-- | protocols/jabber/jabber.h | 1 | 
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 */ | 
