I know this isn’‘t really the right forum to be posting too, but no one seems to be able to help me on the others, so I’'m really hoping that someone here can.
I’‘m developing a custom application, using Smack. We’'ve recently changed to using Wildfire as our Jabber server, and now seem to be experiencing a strange problem.
If a user A deletes user B from his roster (either using our application, or Psi), then user A is automatically deleted from user B’'s roster too. I may be wrong, but this is not how I understood the spec. Also, it seems to only happen if both users are on our server, but not if one is on another server (tested with jabber.org). Is there anyway I can stop this from happening?
I haven’‘t been able to sort this problem out, so at the moment I’'m downloading the wildfire source. I was just wondering if any one can point me in the right direction as to where I can modify this behaviour?
I’'ve just been reading the XMPP-IM spec, and the last note in section 8 says:
Note: When the user removes the contact from the user’‘s roster, the end state of the contact’‘s roster is that the user is still in the contact’'s roster with a subscription state of “none”; in order to completely remove the roster item for the user, the contact needs to also send a roster removal request.
This seems to specifically say that the behavior I’‘m experiencing should happen. So either I’‘m doing something terribly wrong, or Wildfire isn’'t handling deletions correctly.
Sorry, I looked through the issue tracker, but I didn’‘t find that. If I’‘d known it’‘s a known bug, I wouldn’'t have bothered you. However, I downloaded the source, can i found by commenting out a few lines, I got it to work the way I wanted. If you want me to post what I changed, I will gladly.
You’‘re right, I didn’‘t take a very good look. It’‘s midnight, and I’'ve been working all day
It seems that “org.jivesoftware.wildfire.handler.IQRosterHandler” is the culprit. In the removeItem method (on line 236), it specially checks if the recipient is on the local server, and if he is, it fetches his roster, and deletes the inverse entry. I just commented out lines 243-246, and it worked for me. I haven’‘t had time to test it too thoroughly yet, so it might have other side effects. I must say, you have documented the code very well, as this is the first time I’'ve looked at the source, and I could really follow it.
Hope this helps someone else, and thanks for doing such a good job on Wildfire in general,