Created attachment 14137 [details]
Testcase showing messages from 'ghost' participants.
In some cases, an object implementing the ConversationEventInterface can lose track of participants, because no notifications are sent. For example:
- Someone opens a chat with the PyMSN application.
- The PyMSN client gets a call to on_invite_conversation, the client knows about initial participants.
- The PyMSN client gets a message from the other participant.
- The other participant leaves the conversation, and PyMSN registers this by calling on_conversation_user_left.
- The same person opens a chat again, no notification of this is received by the PyMSN client.
- The PyMSN client gets a message from this 'ghost' participant (on the same ConversationEventInterface object as before).
A testcase for the above situation is attached.
Alongside this, my PyMSN application actively starts conversations with buddies. It creates a new Conversation and ConversationEventInterface object only if it cannot find an existing conversation for a particular buddy.
After a while it loses track, and simply recreates these objects. The problem here is that every message starts arriving on all ConversationEventInterface objects.