Hi, I have a question about a particular scenario (it's a bit simplified, just for illustration).
This is the initial state: <query ver="300"> <item jid="conta...@jabber.org" subscription="none" /> <item jid="conta...@jabber.org" subscription="none" /> ... </query> Now magine you have four pushes in the following order: <query ver="301"> <item jid="conta...@jabber.org" name="Contact 1" /> </query> <query ver="302"> <item jid="conta...@jabber.org" name="Contact 2" /> </query> <query ver="303"> <item jid="conta...@jabber.org" subscription="both" /> </query> <query ver="304"> <item jid="conta...@jabber.org" subscription="both" /> </query> So, when the client requests a difference from ver="300", it should receive only the final state, but when it receives the final state of contact1: <query ver="303"> <item jid="conta...@jabber.org" subscription="both" name="Contact 1" /> </query> ,the client now thinks it has the full state for ver="303". If for some reason connection fails at the moment, the client would next request state 303, losing information about contact2's new name. Am I right? Any idea how to handle it fool-proof way without actually sending two interim pushes for contact1? Or maybe just specify that the client must not store the new changes until everything is received.