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.

Reply via email to