Comment 9 for bug 512596

Revision history for this message
In , Jonny-lamb (jonny-lamb) wrote :

Okay what's happening here is Empathy is calling RequestHandles for the contact you are trying to add, and then the contact list channel waits for the mutex to become unlocked before progressing.

In the mean time, Empathy calls ReleaseHandles on the handle which was just requested. This means that the contact handle object gets disposed and gets lost from the Connection._handles dict. When the mutex unlocked callback gets called, it can't find the object, hence the traceback.

However, if you try to add a contact which actually exists (i.e. not <email address hidden>), then it kind of works, which is odd. It requests the handle of the contact, does something, then the callback gets called and the ReleaseHandles has already been called so it can't find the handle. However, papyon calls a callback with this new contact and a brand new handle appears out of the blue.

I've not got time to look into this more right now, but I thought I'd write down what I know for now. We could use this as an excuse to push butterfly into the future of having connection-persistent handles?