profanity-im / profanity

Ncurses based XMPP client
https://profanity-im.github.io/
Other
1.33k stars 187 forks source link

pseudo-joined conferences #731

Open kousu opened 8 years ago

kousu commented 8 years ago

Profanity (in contrast to all the other clients I've tried) responds to a MUC presence stanza telling it that it has joined a room, like

<!-- In Mon 08 Feb 2016 10:21:23 PM EST
  From Slack XMPP Gateway
 -->
<presence xmlns="jabber:client" from="budgeting@conference.sheeptraininc.xmpp.slack.com/kousu" to="kousu@sheeptraininc.xmpp.slack.com/Gajim">
<x xmlns="http://jabber.org/protocol/muc#user">
<status code="100"/>
<status code="110"/>
<status code="200"/>
<item affiliation="member" role="participant" jid="kousu@sheeptraininc.xmpp.slack.com" name="kousu" nick="kousu"/>
</x>
<show>chat</show>
<x xmlns="vcard-temp:x:update">
<photo>sha1-hash-of-image_202081</photo>
<FN>kousu</FN>
</x>
</presence>

Gajim and Pidgin and Xabber ignore these unless they were the ones that initiated the join. So does Conversations, but it will pick up a following <message type="groupchat" from="budgeting@conference.sheeptraininc.xmpp.slack.com/someone" to="kousu@sheeptraininc.xmpp.slack.com">, turn it into a window, complain that the conference doesn't exist, and not pick up the roster: https://github.com/siacs/Conversations/issues/1687.

Profanity has similar issues. It does this:

budgeting@conference.sheeptraininc.xmpp.slack.com                                                            [ ...online ]
09-02-16 09:55 ! -> You have joined the room as (null), role: none, affiliation: none

and shows no room roster.

I don't think the spec specifically outlaws what Slack is doing, but it's certainly non-standard. Yet if Slack can cause you to set nulls in your code and then use them you probably have gaps floating around those code branches.

jubalh commented 2 years ago

@kousu is this still the case?

How do I get such a stanza to test?

kousu commented 2 years ago

I'm sorry, I'm not sure how to test this now. Slack turned off their XMPP gateways years ago. I assume it is still an issue if no one has looked into it.

Without Slack's gateways handy, the only way I could think to test this now is to write a gateway (in slixmpp or aioxmpp or whatever) that sends these un-requested joins and see how Profanity handles them. I don't have one ready for you.

konomikitten commented 3 months ago

I just want to add to this issue that when I use profanity with a terminal multiplexer, in this case tmux I have this bug occur 99% of the time I start profanity. This bug is really effecting my use of profanity as every time this happens I have to do /close /join nameofchannel. If I had more than one channel to join I would've gave up on profanity already.

In short I'd really like to see this bug addressed as it's driving me nuts and soon I'm going to abandon profanity because of it.

jubalh commented 3 months ago

when I use profanity with a terminal multiplexer, in this case tmux

I use tmux myself and it doesn't seem to affect this bug at all, since I never have it.

Is it possible that you are scripting tmux to send commands to profanity? Then this bug is quite expected since it will try to join before the connection and everything is set up properly. You should add delays.

konomikitten commented 3 months ago

Is it possible that you are scripting tmux to send commands to profanity?

I'm not at all just to start it, maybe it's possible that server software has something to do with it instead of it just being about tmux, either way I get this so frequently that I'm about ready to give up.

jubalh commented 3 months ago

I'm about ready to give up

You might want to try poezio, aparte or mcabber.

konomikitten commented 3 months ago

If it helps any I went to close the null room with .close by accident today and when I did /close and /join the room the text of my typo was there. So I guess I'm still in the room but at the same time I am not.