diff options
| author | Wilmer van der Gaast <wilmer@gaast.net> | 2006-09-21 11:37:03 +0200 | 
|---|---|---|
| committer | Wilmer van der Gaast <wilmer@gaast.net> | 2006-09-21 11:37:03 +0200 | 
| commit | 4a0614e65b45364d4d1f631aeaae047a92c752c5 (patch) | |
| tree | 5c40d52c08eaba7b26c2d9567babf4ea45770190 /protocols/jabber/presence.c | |
| parent | dd788bb0b18684be993cc7edf1f0da6f8e36449d (diff) | |
Added simple parsing of incoming <presence> tags, a nice </stream:stream>
at the end of sessions, support for sending messages, and restored the old
(and leaking) xt_print(), which I'll only use for debugging.
Diffstat (limited to 'protocols/jabber/presence.c')
| -rw-r--r-- | protocols/jabber/presence.c | 24 | 
1 files changed, 22 insertions, 2 deletions
| diff --git a/protocols/jabber/presence.c b/protocols/jabber/presence.c index 46e2b3b2..8004ed40 100644 --- a/protocols/jabber/presence.c +++ b/protocols/jabber/presence.c @@ -25,10 +25,30 @@  xt_status jabber_pkt_presence( struct xt_node *node, gpointer data )  { +	struct gaim_connection *gc = data;  	char *from = xt_find_attr( node, "from" ); +	char *type = xt_find_attr( node, "type" );	/* NULL should mean the person is online. */ +	char *s; -	printf( "Received PRES from %s:\n", from ); -	xt_print( node ); +	if( !from ) +		return XT_HANDLED; +	 +	s = strchr( from, '/' ); +	if( s ) +		*s = 0; +	 +	if( type == NULL ) +		serv_got_update( gc, from, 1, 0, 0, 0, 0, 0 ); +	else if( strcmp( type, "unavailable" ) == 0 ) +		serv_got_update( gc, from, 0, 0, 0, 0, 0, 0 ); +	else +	{ +		printf( "Received PRES from %s:\n", from ); +		xt_print( node ); +	} +	 +	if( s ) +		*s = '/';  	return XT_HANDLED;  } | 
