Ticket #7171 (closed defect: fixed)
Duplicated buddies on authorization
| Reported by: | random | Owned by: | nobody |
|---|---|---|---|
| Milestone: | Adium 1.3.3 | Component: | Service/Jabber (XMPP) |
| Version: | 1.0.4 | Severity: | normal |
| Keywords: | jabber authorization buddy pidgin | Cc: | random@… |
| Patch Status: |
Description
So far, a friend of mine (Pidgin 2.0.1) and me were unable to authorize each other properly, we both ended up with duplicated buddies but without mutual authorization of buddy pairs. Here's the request flow triggered by a request from me:
me --authorization request--> friend
friend
me -- friend accepts -- friend
friend me
me <--authorization request-- friend
friend me
(me?)
me -- me accepts -- friend
friend me
friend me
Also, Adium ignores an unchecked "add buddy to my list" checkbox. Both sides have OTR enabled.
Interestingly, the duplicated buddies on my part differed in Jabber ID when those were not lowercase letters only:
correct foo;bar@jabbernet.eu VS duplicate foobar@jabbernet.eu coorect Baz@jabbernet.eu VS duplicate baz@jabbernet.eu
I don't remember correctly, but I think that the stripped IDs were introduced with the answer authorization request from Pidgin.
The issue is likely related to http://developer.pidgin.im/ticket/1089 but I can't know which application to blame.
Change History
comment:5 Changed 3 years ago by Robby
- pending changed from 0 to 1
- Milestone changed from Waiting on libpurple to Needs feedback from users
comment:1 Changed 3 years ago by trac-robot
- Status changed from new to closed
- pending changed from 1 to 0
This ticket was closed automatically by the system. It was previously set to a Pending status and hasn't been updated within 14 days.
comment:3 Changed 3 years ago by Robby
- Status changed from reopened to closed
- Resolution set to fixed
- Milestone changed from Needs feedback from users to Adium 1.3.3
comment:4 Changed 3 years ago by darkrain42
I'm not sure how relevant it is to Adium, but anyway.
Beyond the change that went into libpurple 2.5.3 (which affects the major cause of duplicates in the XMPP prpl), I have a patch that changes Pidgin and Finch's UI and hopefully completely eliminates dupes.
In short, the UI for adding a buddy to a group was always calling purple_buddy_new() followed by purple_blist_add_buddy() without checking if the buddy was already in the specified group, thus ending up with two PurpleBuddies in the group.
The solution is to call purple_find_buddy_in_group() first and, if that fails, create the buddy. See Pidgin #479 and, in particular, the duplicates-adding.2.patch. (It hasn't been applied because I forgot about it and haven't pestered people enough to review it, but it definitely fixes all the duplicate problems I was able to come up with)
I don't know if Adium handles that situation properly wrt libpurple, but rob-to86 pointed me at this ticket.


If this is a problem with Pidgin, then it's likely in libpurple, in which case when it's fixed there, it can be fixed here.