|
From: Don S. <do...@se...> - 2005-02-03 20:50:56
|
On 19:30 Thu 03 Feb , Zilo wrote:
> Yes, the server reply with an ERROR message and ignore the second =20
> request; as what I see, is gaim who use a strange politic :/
Here is the problem I think. When I use gaim to add a buddy, it first
calls bnet_buddy_add(), which adds the buddy to the local list. It then
requests the remote friends list and compares. However in
bnet_buddy_add() I see this block of code:
if (!g_hash_table_lookup(conn->buddies, norm)) {
b =3D bnet_buddy_new(norm, buddy->name);
if (conn->welcome)
b->new_entry =3D TRUE;
g_hash_table_insert(conn->buddies, b->norm, b);
bnet_conn_request_friends_list(conn);
}
I may be reading this wrong, but this to me seems to be checking for the
existance of the buddy in the list, and only adding if it doesn't exist.
Why would this be failing?
Another issue is perhaps we should do the remote check first, and return
any error that comes from that. Although I can see the merit in doing a
local check first. Either way we are currently ignoring the results of
the /friends add attempt.
--=20
Don Seiler
do...@se...
Public Key: http://pgp.mit.edu:11371/pks/lookup?op=3Dget&search=3D0xFC87F041
Fingerprint: 0B56 50D5 E91E 4D4C 83B7 207C 76AC 5DA2 FC87 F041
|