From: Michael B. <mic...@cm...> - 2009-05-15 14:10:04
|
-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 libsyncml 0.5.3 release notes Download: https://sourceforge.net/project/showfiles.php?group_id=25311 Major Changes ============= - Added a first implementation of the function smlDataSyncAbort. This function can be called if the synchronization must be abortedi (e.g. because of another external error like a full disk). - HTTP transport is now supported for old Solaris libsoup 2.2 packages Minor Changes ============= - Added a missing SmlDevInf reference which causes a segmentation fault if a cached SmlDevInf object is used by OpenSync's SyncML plugin - Added support for the case that a client sends alert 200 and receives alert 200 but needs to update to a SLOW-SYNC alert 201 because of an internal problem like wrong anchors (NOTE: This code is untested because I failed to simulate this until now.) - Fixed bugs related to Funambol/ScheduleWorld: - Fixed wrong vCal 1.0 device information. If the default format of a datastore is iCal 2.0 then the content type for vCal 1.0 was wrong. Old (buggy): text/calendar 1.0 New (correct): text/x-vcalendar 1.0 - The Funambol server on scheduleworld.com returned error code 511. So the error code is supported now too. - The requested remote alert type is unknown and so let's signal this to the library user. - The getAlertTypeCallback should only be called once per data store. - Fixed return value of smlDataSyncClientSendAlert. If a slow-sync alert is initiated and the remote peer did not request it then the function must return false to trigger a status 508 (REFRESH_REQUIRED). If the requested alert type is not known then there is no need for a status and the function returns true. This can happen if the remote peer did not trigger the client via a SAN (e.g. OMA DS client over HTTP). - Added support for a separate mapping callback Internal Changes ================ - Added better cleanup code for the transport layer in smlDataSyncObjectUnref - Fixed several comments - Added some trace statements - Several fixes for libsoup - Added tests to validate libsoup - Several fixes for the asynchronous http client - Added timeout to asynchronous http client session - Fixed client callback for libsoup 2.2 - Own thread and ctx for HTTP client - Added workaround for libsoup 2.2 http clients under Solaris (asynchronous http client support does not work under Solaris) - some cosmetical changes for http server code (traces, comments, assertions) - Added an internal function to run a function in a special thread. This feature is necessary because some libaries like libsoup are only designed for single-threaded applications. This means that every function must be called from the same thread. Otherwise there is no guarantee about the behaviour of the library. - libsoup_async respects now that SoupSessionAsync was designed for single-threaded applications. - Multi session fixes - Added multi session safe SAN callback - Fixed device information agent to be multi session safe. The old code only works if the manager manages exactly one session. If there is more than one session then the agent must take care about the different remote device capabilities. - Fixed remote device handling to be multi session safe. This is important if you ever implement long living processes or if you implement a client which wants to use its own session ID. - use new SAN callback which provides the session too which avoids race conditions (alternatively you can block the thread until the event SESSION_NEW will be dispatched) - Transport layer fixes: - Added code to test the transport layer context management - If a transport implementation has no public connect function then it cannot send a connect event. - smlTransportFinalize calls the finalize function of the transport implementations directly. The HTTP implementations depend on the correct thread because libsoup is single-threaded. This means that the worker thread must be available until all connections are closed (disconnected or finalized). Therefore the finalize function of a transport implementation must be called within the worker thread and the thread must be shut down after the finalize function was called. - Device Information fixes: - Added automatic localtime enforcement if the remote device sends a device information without UTC support - Ensure that the device information is always at the end of the message - If the alerts and the device information are in the same SyncML message then the alerts are dispatched faster. So it is necessary to check manually for an available remote device information. - Made smlQueueDetach of sml_queue.c thread safe - Made pendingMaps of objects/sml_ds_server.c thread safe - Added support for coverage analysis - Introduced internal mapping function. A change can now be freed after the status was received. Fixed Tickets ============= - Fixed incorrect use of pthread_self (ticket #222). The patch was supplied by Henrik Kaare Poulsen. - Added missing @ONLY which reduces the memory usage from cmake (ticket #223). - Fixed wrong g_error usage (ticket #224). The patch was supplied by Henrik Kaare Poulsen. - Added default XML encoding explicitly because Sync4j requires it (ticket #225). - Abort more carefully (ticket #226 - does not affect 0.5.2 or earlier). - Added missing OBEX_TransportDisconnect in transport/obex_client.c (ticket #227). The original patch was supplied by Patrick Pfeifer. - Fixed some Windows/MinGW issues (ticket #228). The patch was supplied by Henrik Kaare Poulsen. - Fixed the target and source setting in change commands (ticket #229). - Google related fixes (ticket #230): - The HTTP client of DS API must support WBXML too. Google only supports WBXML today. (https://m.google.com/syncml is still a beta.) - Google has a wrong implementation of Alert Status. The Item Data is the Next Anchor. <Status> <CmdID>5</CmdID> <MsgRef>2</MsgRef> <CmdRef>3</CmdRef> <Cmd>Alert</Cmd> <SourceRef>contacts</SourceRef> <TargetRef>contacts</TargetRef> <Data>200</Data> <Item> <Data><![CDATA[20090417T112101Z]]></Data> </Item> </Status> - If an Item is deleted then it is not necessary to add a Data tag (ticket #232). The patch was supplied by Kwan hong Lee. - Sanitized UIDs (ticket #233). - Fixed DS API HTTP client inital allert which always sent a SLOW-SYNC alert (ticket #234). - Fixed skipping of Ext element (#235). The original patch was modified because the end of the new function could be reached without a return statement. The original patch was supplied by Kwan hong Lee. - Ticket #236 is a duplicate of ticket #232. - Fixed the handling of empty Data elements (ticket #237). The original patch was supplied by Kwan hong Lee. A special thanks goes to: - Christian Hilgers (Solaris testing) - John Carr from Codethink Ltd. (SchedueWorld.com testing) - Kwang hong Lee from Windriver (fixed Sync4j bugs and Google testing) Best regards Michael -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.9 (GNU/Linux) Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org iEYEARECAAYFAkoNd7oACgkQ2L0ZGCAwWqs/AACgyy8ZoQMJCNTElYhpQ8OJi7lx 6NYAoMsrgxD/G7WzD/6DIRL3gQUkPBWG =piaP -----END PGP SIGNATURE----- |