aboutsummaryrefslogtreecommitdiffstats
path: root/protocols/jabber/jabber_util.c
diff options
context:
space:
mode:
authorWilmer van der Gaast <wilmer@gaast.net>2009-11-19 18:50:53 +0000
committerWilmer van der Gaast <wilmer@gaast.net>2009-11-19 18:50:53 +0000
commit08e5bb2bb2fcc7125f837be4f225d3a9ebf320ed (patch)
tree5fd1e10b069b6515365ed08042f9ed4b9c419327 /protocols/jabber/jabber_util.c
parent20e830b641638bc580e1a58b68fc3c5837e76807 (diff)
Restoring some logic that seemed broken but was important with handling
of chatrooms (and likely more things). The restored version is somewhat less confusing.
Diffstat (limited to 'protocols/jabber/jabber_util.c')
-rw-r--r--protocols/jabber/jabber_util.c7
1 files changed, 6 insertions, 1 deletions
diff --git a/protocols/jabber/jabber_util.c b/protocols/jabber/jabber_util.c
index ec23919e..120a56b6 100644
--- a/protocols/jabber/jabber_util.c
+++ b/protocols/jabber/jabber_util.c
@@ -419,9 +419,13 @@ struct jabber_buddy *jabber_buddy_by_jid( struct im_connection *ic, char *jid_,
if( ( s = strchr( jid, '/' ) ) )
{
+ int bare_exists = 0;
+
*s = 0;
if( ( bud = g_hash_table_lookup( jd->buddies, jid ) ) )
{
+ bare_exists = 1;
+
if( bud->next )
bud = bud->next;
@@ -447,7 +451,8 @@ struct jabber_buddy *jabber_buddy_by_jid( struct im_connection *ic, char *jid_,
break;
}
- if( bud == NULL && ( flags & GET_BUDDY_CREAT ) && imcb_find_buddy( ic, jid ) )
+ if( bud == NULL && ( flags & GET_BUDDY_CREAT ) &&
+ ( imcb_find_buddy( ic, jid ) || bare_exists ) )
{
*s = '/';
bud = jabber_buddy_add( ic, jid );