I have run into some issues on the develop branch where the XMPP server (ejabberd) gets restarted and my clients will refuse to rejoin the chatroom that they used to be in.
The bug was in xep_0045:
1 def handle_groupchat_invite(self, inv):
2 """ Handle an invite into a muc.
4 logging.debug("MUC invite to %s from %s: %s" % (inv['from'], inv["from"], inv))
5 if inv['from'] not in self.rooms.keys():
6 self.xmpp.event("groupchat_invite", inv)
If a client does not cleanly leave a chat room the self.rooms dict is not cleaned up. I believe the solution is to simply remove the conditional, line 5.
Does anyone see an issue with removing this check? I can't imagine a problem joining a chat room that you are already a member of. It would simply cause a gratuitous status message sent.
And, thank you to everyone who has put work into SleekXMPP! Arista Networks is using this project to develop an XMPP client that runs on our products to add some ease to managing a network. :D