[Pidgin] #4213: Pidgin doesn't synchronize blist.xml completely after moving buddy on AIM protocol

Pidgin trac at pidgin.im
Sun Dec 2 16:00:09 EST 2007


#4213: Pidgin doesn't synchronize blist.xml completely after moving buddy on AIM
protocol
-----------------------+----------------------------------------------------
Reporter:  varchar255  |       Owner:  MarkDoliner
    Type:  defect      |      Status:  new        
Priority:  minor       |   Component:  AIM        
 Version:  2.2.2       |    Keywords:             
 Pending:  0           |  
-----------------------+----------------------------------------------------
 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):[[BR]]
 1) Start with buddy in GroupA on AIM protocol.[[BR]]
 2) Make a copy of blist.xml[[BR]]
 3) Move buddy to GroupB.[[BR]]
 4) Exit Pidgin.[[BR]]
 5) Delete blist.xml and replace it with the copy made in step 2.[[BR]]
 6) Run Pidgin.[[BR]]

 Observed behavior: Buddy now exists in GroupA and GroupB.[[BR]]
 Expected behavior: Buddy should be in GroupB only.[[BR]]
 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.

-- 
Ticket URL: <http://developer.pidgin.im/ticket/4213>
Pidgin <http://pidgin.im>
Pidgin


More information about the Tracker mailing list