On Mon, 2012-01-30 at 18:04 +0100, Patrick Ohly wrote: > Should it have removed one item while processing the <Map>? > > IMHO it can't, because it doesn't have enough information to determine > which of its two items are up-to-date. It only knows that the client > must have merged two items, but not yet which one won. > > In the second session, the server gets an updated item with client ID > "foo". Now it could update one copy and delete the other, but because it > only kept a link between its item 0 and foo, it only does the update > part. > > Would something break if the server allowed the same client item to map > to multiple items on the server and then did a remove in its database > when receiving an update? > > I suspect that the client is simply doing something not expected by > typical SyncML servers.
I'm currently experimenting with a different approach for handling the 409 in the binfile client: when an Add fails with 409, catch it as it is done at the moment, but then tell the server that it was mapped to a dummy LUID. Mark that LUID as deleted in the change log. Then in the next session, delete the redundant item on the server. I'm combining that with running multiple SyncML sessions in the same context. Will post code soon... -- Best Regards, Patrick Ohly The content of this message is my personal opinion only and although I am an employee of Intel, the statements I make here in no way represent Intel's position on the issue, nor am I authorized to speak on behalf of Intel on this matter. _______________________________________________ os-libsynthesis mailing list os-libsynthesis@synthesis.ch http://lists.synthesis.ch/mailman/listinfo/os-libsynthesis