From: Zilo <ko...@gm...> - 2005-02-03 21:31:29
|
On 02/03/05 21:50:33, Don Seiler wrote: > Here is the problem I think. When I use gaim to add a buddy, it =20 > first calls bnet_buddy_add(), which adds the buddy to the local list. =20 > It then requests the remote friends list and compares. However in > bnet_buddy_add() I see this block of code: >=20 >=20 > 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); > } >=20 > 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? This code checks the existance of the buddy in our conn->buddies list, =20 not in the Gaim one. The problem is that inside bnet_buddy_add we have =20 no way to block gaim to add the buddy to its list and so show it twice. =20 At least, I don't know how we can inform gaim that we want refuse to =20 add the buddy. I see now that the MSN plugin, for an invalid buddy, let gaim add it, =20 and then remove it after it checked it doesn't exist: maybe we can do =20 the same thing with duplicated ones. I think it's the only way... cya |