Sep 18, 2011 8:57 PM
Openfire doesn't remove roster items if subscriptions been rejected
-
Like (0)
In Openfire 3.7.x, if a subscription request has been rejected a the contact, the Openfire server doesn't remove the roster item records from the ofRoster table. This results in many useless (sub == none, ask == none and recv == none) records in the DB, which is really annoying.
According to the XMPP Presence specification 8.2.1 Contact Declines Subscription Request (http://xmpp.org/rfcs/rfc3921.html), the user's roster items for tracking purposes should be removed when the subscription request has been rejected.
So I wonder if you guys forgot to add the code to remove the (sub == none, ask == none and recv == none) records when the subscption records have been rejected.
I think Openfire's behavior here is correct.
See here:
http://xmpp.org/rfcs/rfc6121.html#sub-cancel-outbound
(the updated rfc. 3921 is obsolete)
Nothing about removing records from the roster, although from a user's perspective it doesn't make sense to keep those denied entries.
Actually this issue is confusing and misleading.
http://xmpp.org/rfcs/rfc3921.html#int states the following (8.2.1):
"If the contact's server previously added the user to the contact's roster for tracking purposes, it MUST remove the relevant item at this time."
While the updated spec http://xmpp.org/rfcs/rfc6121.html#sub-cancel-outbound doesn't included such a sentence.
What is right?
Openfire 3.7.0 does not remove it.
ya, OpenFire don't delete that rosters, but u can do it urself, just check - if user don't apply u friendship - set iq, like this:
var iq = $iq({type: "set"}).c("query", {xmlns: "jabber:iq:roster"}).c("item", {jid: data.jid, subscription: "remove"});
connection.sendIQ(iq);
(in JavaScript)
this help u remove unsubscribed roster from both lists =)