In case someone will stuck on this issue, I decided to post it here.
Recently I was upgrading the openfire from 3.6.4 to 3.7.1 and discovered one nasty bug.
Seems like 3.6.4 was more tolerant with buggy records in the database. May be 3.7.1 will behave differently, and simply wouldn’t let create such records, but anyway. I’m talnking about jids that lacks the ‘@’ sign. I found like 3 dozens of those in my database.
If a client that tries to connect has such record in it’s roster, it won’t be able bo connect. Some clients show empty roster and some show 501 error.
I was able to fix it quickly by deleting such records (they are invalid anyway):
delete from ofRoster where jid not like ‘%@%’ and jid not like ‘%jabber.norma.perm.ru’;