[Pidgin] #9034: Pidgin won't let me block people

Pidgin trac at pidgin.im
Wed Jun 8 22:33:53 EDT 2011


#9034: Pidgin won't let me block people
----------------------+-----------------------------------------------------
 Reporter:  jewel460  |        Owner:  MarkDoliner
     Type:  defect    |       Status:  new        
Milestone:            |    Component:  AIM        
  Version:  2.5.5     |   Resolution:             
 Keywords:            |  
----------------------+-----------------------------------------------------

Comment(by dustin):

 Now I've also done the above tests with an AIM account (instead of ICQ),
 with the same results.


 After the tests it seems to me this bug is rather the rule than the
 exception (it appeared on most accounts sooner or later).
 The testing scenario (switching between Pidgin, other clients and the web
 interface; using new accounts with an almost empty item list => all buddy
 IDs in a small range of numbers) may provoke this behaviour.


 I don't see a way this bug could be "repaired" in the sense of making the
 hidden entries appear on the server or of Pidgin being aware of them
 beforehand (especially when there is no other client that can deal with
 the issue, using randomization instead...).
 The patch I attached tries to avoid those entries instead.


 1. The variable {{{static guint16 aim_ssi_nextbid}}}
  stores the starting point from which {{{aim_ssi_itemlist_add()}}} will
 try to find the next free buddy ID (only for items in group 0x0000).

 2. The function {{{parseack_filter_errors()}}}
  an "item already exists" error (0x0003) will be filtered by this
 function.
  The filter will update {{{aim_ssi_nextbid}}} to a higher bid and then try
 once more to add the item
  by calling {{{aim_ssi_itemlist_add()}}}, up to five times.
  The error notification is suppressed by setting cur->ack to 0x0000.

 For someone with a broken account, Pidgin should hit the hidden entries
 only once and then continue with higher buddy IDs (until Pidgin is started
 the next time).
 Normally, this should no longer cause an error notification (error only
 appears in the debug log).


 Note that choosing random buddy IDs would make collisions with hidden
 entries at least very unlikely. This would be a somewhat simpler
 alternative to this patch.

-- 
Ticket URL: <http://developer.pidgin.im/ticket/9034#comment:36>
Pidgin <http://pidgin.im>
Pidgin


More information about the Tracker mailing list