|
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
|