diff options
| author | Wilmer van der Gaast <wilmer@gaast.net> | 2007-04-22 22:18:47 -0700 | 
|---|---|---|
| committer | Wilmer van der Gaast <wilmer@gaast.net> | 2007-04-22 22:18:47 -0700 | 
| commit | 2d317bbe8def887fb796b2daaa958c59d8f4c070 (patch) | |
| tree | 6047b3717b16a84788066ce2f2fa9f880810b304 /protocols/jabber/presence.c | |
| parent | 0e7ab64dfb66192a875c37322ca6f8a364ec5bc8 (diff) | |
Fixes: handling of being kicked, now sending <presence/> tags to all
conferences the user's in.
Diffstat (limited to 'protocols/jabber/presence.c')
| -rw-r--r-- | protocols/jabber/presence.c | 11 | 
1 files changed, 11 insertions, 0 deletions
| diff --git a/protocols/jabber/presence.c b/protocols/jabber/presence.c index 096b4fd5..1310fce3 100644 --- a/protocols/jabber/presence.c +++ b/protocols/jabber/presence.c @@ -167,6 +167,7 @@ int presence_send_update( struct im_connection *ic )  	struct xt_node *node;  	char *show = jd->away_state->code;  	char *status = jd->away_message; +	struct groupchat *c;  	int st;  	node = jabber_make_packet( "presence", NULL, NULL, NULL ); @@ -178,6 +179,16 @@ int presence_send_update( struct im_connection *ic )  	st = jabber_write_packet( ic, node ); +	/* Have to send this update to all groupchats too, the server won't +	   do this automatically. */ +	for( c = ic->groupchats; c && st; c = c->next ) +	{ +		struct jabber_chat *jc = c->data; +		 +		xt_add_attr( node, "to", jc->me->full_jid ); +		st = jabber_write_packet( ic, node ); +	} +	  	xt_free_node( node );  	return st;  } | 
