<Robot101> empathy unsubscribes people wrongly on XMPP
<Robot101> when you reject a subscription request
<Robot101> it just subscription='remove' it from the roster
<Robot101> that doesn't actually respond to the presence type='subscribe' stanza
<Robot101> so when you log out and in, you get it back, again.
<cassidy> it calls tp_contact_remove_async()
<cassidy> it calls http://telepathy.freedesktop.org/spec/Connection_Interface_Contact_List.html#Method:RemoveContacts
<sjoerd> yeah, that should set subscribe and publish to no
To my untrained eyes, it looks like this code in gabble_roster_handle_remove is responsible:
/* If the contact is really stored on the server, deleting their roster item
* is sufficient. If they're not, we might have some state resulting from
* a publish request or remote removal or something. */
if (item->subscription == GABBLE_ROSTER_SUBSCRIPTION_REMOVE)
/* These will clear a status of REMOVED_REMOTELY or ASK */
roster_item_set_publish (item, TP_SUBSCRIPTION_STATE_NO, NULL);
I think this _set_publish needs to be outside of the _REMOVE case - a contact who is _NONE or _TO on the roster could still be asking us for publishing permission.
(In reply to comment #1)
> I think this _set_publish needs to be outside of the _REMOVE case - a contact
> who is _NONE or _TO on the roster could still be asking us for publishing
Actually a lie - this doesn't cause an unsubscribe to be sent... hrm.