From 3a80471931642374f323e284ce3a5a04b5635a96 Mon Sep 17 00:00:00 2001 From: Wilmer van der Gaast Date: Sat, 24 Nov 2007 01:13:15 +0000 Subject: (Hopefully) fixing one case where the Jabber module doesn't understand a tag properly and keeps showing the buddy as on-line. (When the tag comes from a bare JID.) --- protocols/jabber/presence.c | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) (limited to 'protocols') diff --git a/protocols/jabber/presence.c b/protocols/jabber/presence.c index 71a044b5..5abdc449 100644 --- a/protocols/jabber/presence.c +++ b/protocols/jabber/presence.c @@ -87,7 +87,7 @@ xt_status jabber_pkt_presence( struct xt_node *node, gpointer data ) } else if( strcmp( type, "unavailable" ) == 0 ) { - if( ( bud = jabber_buddy_by_jid( ic, from, GET_BUDDY_EXACT ) ) == NULL ) + if( ( bud = jabber_buddy_by_jid( ic, from, 0 ) ) == NULL ) { if( set_getbool( &ic->irc->set, "debug" ) ) imcb_log( ic, "WARNING: Received presence information from unknown JID: %s", from ); @@ -100,7 +100,13 @@ xt_status jabber_pkt_presence( struct xt_node *node, gpointer data ) jabber_chat_pkt_presence( ic, bud, node ); } - jabber_buddy_remove( ic, from ); + if( strchr( from, '/' ) == NULL ) + /* Sometimes servers send a type="unavailable" from a + bare JID, which should mean that suddenly all + resources for this JID disappeared. */ + jabber_buddy_remove_bare( ic, from ); + else + jabber_buddy_remove( ic, from ); if( is_chat ) { -- cgit v1.2.3