First of all, kudos on an excellent API – I’'ve worked with some other XMPP libraries, and Smack is by far the best.
I am, however, seeing some unexpected behavior (I’‘m using the latest version, Smack 1.4.1) when adding buddies to the Roster – here’'s the situation:
I’‘m writing a client app with Smack. I’'m testing my client app by using it to log into to my local jabber server as “User_A”.
Using a release-quality Jabber client (I’'ve used both Gaim and WinJab with the same results), I log into the same local jabber server as “User_B”.
Initially, User_A is not in User_B’'s roster and vice versa.
I have my client app call Roster.createEntry() to invite User_B to join User_A’'s Roster.
User_B does get an invitation from User_A, as expected.
When User_B accepts User_A’‘s invitation, my client app (the one I’‘m writing with Smack) shows that User_B has accepted, that User_B is now in User_A’'s roster, and that User_B is now ‘‘available’’.
All of that is as as expected.
The unexpected part is this: after User_B accepts, User_B’'s client (Gaim or WinJab) shows User_A as offline, and that the roster request is still pending.
But, User_A is still online, and my client shows User_B in the roster correctly.
So my question is: after I send Roster.createEntry(), do I have to do anything else, to act upon the other user’'s acceptance?