Ticket #4213 (new defect)
Pidgin doesn't synchronize blist.xml completely after moving buddy on AIM protocol
| Reported by: | varchar255 | Owned by: | MarkDoliner |
|---|---|---|---|
| Milestone: | Component: | AIM | |
| Version: | 2.2.2 | Keywords: | |
| Cc: |
Description
There are a lot of tickets on moving buddies, but I searched and couldn't find one with this problem. In particular it is not a dupe of http://developer.pidgin.im/ticket/2921, although they sound similar.
When moving buddies on the AIM protocol, Pidgin correctly updates its local blist.xml and the buddy is moved properly server-side. However, if you log in on a different machine with an old blist.xml, Pidgin checks the server list and adds the new buddy, but fails to remove the old one from the local list. The end result is the old buddy remains on the list in the original group and is viewable in the buddy list, but doesn't exist on the server. This can cause odd problems such as if you move the buddy from the new group back to that original group, it gets deleted (presumably because Pidgin thinks the buddy already exists in the original group, so it sends a delete signal but not an add signal?)
Steps to reproduce (using a single computer):
1) Start with buddy in GroupA on AIM protocol.
2) Make a copy of blist.xml
3) Move buddy to GroupB.
4) Exit Pidgin.
5) Delete blist.xml and replace it with the copy made in step 2.
6) Run Pidgin.
Observed behavior: Buddy now exists in GroupA and GroupB.
Expected behavior: Buddy should be in GroupB only.
Fix: When checking the server list, Pidgin should recognize that the buddy does not exist in GroupA and remove it from the local list (being sure NOT to remove the GroupB buddy as well).
The reason for making a copy of blist.xml is to simulate the behavior when using two machines, where one blist.xml would be updated and another would not. While real users are not likely to follow those steps, I imagine running Pidgin on multiple computers or dual-booting is more common and this bug will appear in those cases.
I first saw this on Pidgin 2.2.2, running on Windows XP and Ubuntu Gutsy. Haven't checked if this happens with other protocols.



