Hi Patrick, On Mar 4, 2010, at 18:49 , Patrick Ohly wrote:
> On Fri, 2010-02-26 at 15:05 +0000, Patrick Ohly wrote: > [...] >> So it seems that the engine does check for the remote ID, but only after >> having already added the item again. > > I think this was due to not enabling <resumesupport>. After setting > that, the same test passes. Sorry for the confusion - I hadn't quite > realized that suspend/resume was optional. As said in the previous message, yes, for the server it is optional. However, while tracking through the code I found that indeed in the server, the case of a client sending duplicate <Add>s was not handled at all. So even with <resumesupport> a repeated add from the client IMHO would have created a duplicate in the server DB. As most clients always send <Replace> (including libsynthesis not so long ago), this case did not surface. I now added a check for that in 3e687ddfca (server engine: added missing check for re-sent <Add> during resume.) > Shouldn't the server have refused to resume with <resumesupport> off? Yes. However, when you use a admin data plugin, dsResumeSupportedInDB() is checking the API version of the plugin: pluginapids.cpp:941: > /// returns true if DB implementation supports resume (saving of resume > marks, alert code, pending maps, tempGUIDs) > bool TPluginApiDS::dsResumeSupportedInDB(void) > { > if (fPluginDSConfigP->fDBApiConfig_Admin.Connected()) { > // we can do resume if plugin supports it > return > fPluginDSConfigP->fDBApiConfig_Admin.Version()>=sInt32(VE_InsertMapItem); > } > return inherited::dsResumeSupportedInDB(); > } // TPluginApiDS::dsResumeSupportedInDB > ...and <resumesupport> is irrelevant (so what I said in the previous message is not entirely correct - old plugins will AUTOMATICALLY disable resume; <resumesupport> is only relevant for SQL backends). So it's even stranger that enabling <resumesupport> should have made the tests to pass now. ??? Lukas Zeller (l...@synthesis.ch) - Synthesis AG, SyncML Solutions & Sustainable Software Concepts i...@synthesis.ch, http://www.synthesis.ch _______________________________________________ os-libsynthesis mailing list os-libsynthesis@synthesis.ch http://lists.synthesis.ch/mailman/listinfo/os-libsynthesis