From 49108f35b8ca7974820b9d29e31965e5f0264270 Mon Sep 17 00:00:00 2001 From: dequis Date: Sun, 19 Nov 2017 21:51:16 -0300 Subject: jabber: Fix chat joins when ext_jid is provided for your own user This is the presence needed to finalize a join to the channel, the 'from' field is our own user in the context of that channel: Bitlbee takes the stuff to as the "real" jid, as it does for non-anonymous MUCs. It sets that to ext_jid, and uses it as the handle internally. In this particular case, that real jid is nonsense for us, so imcb_chat_add_buddy() interprets that as yet another person joining the channel, instead of the expected self-join. This fixes it by checking if the buddy is our own user, and ignoring the provided ext_jid in those cases. Thanks to ivucica for reporting this, who was using Biboumi (a gateway from XMPP to IRC) --- protocols/jabber/conference.c | 3 +++ 1 file changed, 3 insertions(+) (limited to 'protocols') diff --git a/protocols/jabber/conference.c b/protocols/jabber/conference.c index b3d3f95e..6af7688d 100644 --- a/protocols/jabber/conference.c +++ b/protocols/jabber/conference.c @@ -328,6 +328,9 @@ void jabber_chat_pkt_presence(struct im_connection *ic, struct jabber_buddy *bud } } bud->flags |= JBFLAG_IS_ANONYMOUS; + } else if (bud == jc->me) { + g_free(bud->ext_jid); + bud->ext_jid = g_strdup(jd->me); } if (bud != jc->me && bud->flags & JBFLAG_IS_ANONYMOUS) { -- cgit v1.2.3