Presence Update On Dynamic Roster

Submitted by Anonymous on Thu, 2008-08-14 15:05.

I have implemented a Dynamic Roster using the DynamicRosterIfc interface, but am having a problem with presence updates for users using the Dynamic Roster.

For example, I created 3 users. User1 and user2 are on each others dynamic rosters, and user2 and user3 are the same. However, user1 and user2 have also added each other using the standard roster.

If user1 and user3 are online, and then user2 logs on, all presence updates are send out correctly. The same thing happens if only user1 is online when user2 logs on. But if user1 is not online and user3 is online, when user2 logs on, no presence packets will be sent.

It seems like presence packets are not being sent out for the dynamic roster unless a presence packet would also be sent for the standard roster.

I have traced through the code but cannot find what would cause this problem.

I am running the latest version from SVN.

Thank you for any help you can provide and if you need any more information let me know.

Also, the 4.0.0 Live CD was just released but a 4.0.0 release has not been made. What revision number is the Live CD based on?

Trackback URL for this post:

http://www.tigase.org/en/trackback/1438
Submitted by Anonymous (not verified) on Mon, 2008-08-18 15:53.

Thank you for your response.

It turns out that it was a problem with my implementation of DynamicRosterIfc that was causing the problems. The function getBuddies expects all responses to be lower case JIDs and since I was pulling straight from our database, some users had capital letters.

It may be good to put a note in the documentation for DynamicRosterIfc that all JIDs should be returned lower case since the RFC states that JIDs are case insensitive.

Thanks again for your help and for making a great server.

kobit's picture
Submitted by kobit on Fri, 2008-08-15 14:39.

Hi,

> It seems like presence packets are not being sent out
> for the dynamic roster unless a presence packet would
> also be sent for the standard roster.

This is not true. We use dynamic rosters in many places and it works fine. In fact in some installation there is no static roster at all. Only dynamic roster and presences are sent correctly.

On the other hand there might be a bug somewhere showing in very special case. However without running the code myself and properly debugging it step by step I can not say anything more.

What I would suggest is to switch debugging on for all plugins - package: tigase.xmpp.impl for the server code: tigase.server and your code. Detailed instructions how to switch debugging mode for selected package are available in this guide. Then look in the logs/tigase.log.0 file where you can track all the processing and what is sent.

> Also, the 4.0.0 Live CD was just released but a 4.0.0
> release has not been made. What revision number is
> the Live CD based on?

Live CD is based on Tigase from SVN. Version 4.0.0 is not considered stable yet, therefore there is no public release yet. We still do lots of testing and fixing bugs. Especially the new implementation of the cluster mode needs to be checked carefuly before it is released.

In meantime I recommend to use version from SVN or if anybody has problems with compiling the version i can offer building binary package from the SVN.


Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.