Roster state and stored presence after Stream Resumption


After connection termination all roster entries turned offline and roster state set to uninitialized. And if connection was resumed, roster is not loaded again.

I think that roster with saved presences should be restored in some way, but I didn’t find how to do that. Am I wrong or is it not implemented yet?


Using Smack 4.2 beta 1

Ahh, yes, after a quick look at the code, this could be very possible.

The Roster’s connection listener resets the roster state on connectionTerminated(), which is called in both cases, i.e. a clean termination and an unclean one. But in case of an unclean one, SM may be used. In which case the roster state should be kept.

I’ve uploaded Smack 4.2.0-beta2-SNAPSHOT with Only reset Roster on clean termination · Flowdalic/Smack@fc3f5ef · GitHub . Could you try and report back if it fixes the issue for you?

Thanks a lot! Seems to be working now.


Reminder to self: Eventually write an integration test case for this.