Synthesis SyncML Server History =============================== 3.4.1.7 2017-08-10 - syncserv_odbc_new.xml: configuration extended for VCARD 3.0 / VCALENDAR 2.0 - mysql_add.sql: additional db tables added - admin.php: switches for debug level and db version added - index.php: flags selectors added for new events - sysync2.conf fix 3.4.1.5 2017-04-19 - "WET" timezone problem fixed for VCALENDAR 1.0, UTC preferred - tz_table.h adaptions, tz_system ordering - FoundTZ() <-> TimeZoneNameToContext() ordering changed - some logging added, "native" TAG introduced - "IST" timezone fix 3.4.0.97 2016-08-29 admin.php adaptions - several text changes - smaller SySync Server title text - admin password: show ok/error directly - Secure Shell (ssh) password block added - "sshpass" introduced - default ssh password changed - Internet block: IP line heights increased - Server Connection block added (for showing/removing unused pipes) 3.4.0.96 2016-08-15 index.php UTF-8 adaptions 3.4.0.92 2016-06-10 support for WLAN USB adapter EDIMAX EW-7811-Un - can be used as WLAN hotspot - IP forwarding to cable internet - admin.php extension for SSID, password and IP addresses 3.4.0.91 2016-04-20 MD5 masquerade adaptions 3.4.0.88 2016-03-29 support of extended admin.php for server name, licensetext/licensecode and admin pwd 3.4.0.85 2016-02-22 config file with external file suppport for licensetext/licensecode - Syntax "file=" can be used 3.4.0.83 2016-01-11 Port for Raspberry Pi - ARM V7 platform support - adaptions for PHP5 3.4.0.15 2010-08-29 Feature and Bugfix Release of Synthesis SyncML Server 3.4 New features: - enhanced remote rule handling: All remote rules that match are now considered "active" and can be tested using ISACTIVERULE(). Using in a remote rule, one rule can activate others. Using , rules can be specified that never match directly, but can be included by . This allows for partitioning behaviour into a hierachy of functionality-specific subrules. - Added configurable device ID and other devInf information via config variables: customdeviceid, customdevicetype, customfirmwareversion, customhardwareversion, custommodel, custommanufacturer. - Added , which does not encode or decode payload but simply maps it into the "ITEMDATA" field of the fieldlist (a string or BLOB field with this name must be configured in the ). - Refined folding for old vCard 2.1 and vCalendar 1.0 formats to make it more compatible with some implementations. New "foldbetween" attribute for can allow folding multi-value properties like EXDATE by inserting a space between values. - Support for filtered sync set deleting (such that only the part of the datastore gets deleted in a refresh from remote sync which matches the filters). Bug fixes: - fixed bug in parsing CGI filters with paranthesized subexpressions - Status 418 is no longer treated as error, as some servers and clients send this instead of 200 sometimes. - is now correctly applied to items read via XXXAsKey from a plugin. - Fixed bug in config parsing that sometimes ignored elements following a element excluded with ifdef/ifndef. 3.4.0.0 2009-11-30 Synthesis SyncML Server 3.4 Release Enhancements/Bug fixes: - compatibility with new SDK 1.6.1 (and later) features. - added support for property grouping in vCard/vCalendar type formats (new attribute "groupfield" in ). - added and remoterule flags to enable workarounds for ill-behaving peers. - fixed bug with session not timing out correctly when apache based server was run in single-thread mode. - better parsing of VTIMEZONE records. - VTIMEZONEs can now be generated at the beginning of a vCalendar (rather than at the end) by simply moving the for VTIMEZONE within the . Doing so did not work as expected before - now it does. - Added TIMEONLY() function. - fixed many small bugs related to time zone handling in certain special cases or special system time zones. - fixed vXXX format parser bug which caused that unknown properties ending with '=' suppressed parsing of the subsequent property. - improved compatibility for B64 encoded PHOTO fields, now works even with various slightly ill-formed variants. - added "legacy" keyword for "preferred" attribute in . If preferred=legacy, this means that the type is used instead of the normally preferred type when the engine runs in "legacy mode", which for example happens when the engine detects that the remote party is an ill-behaving implementation. - Many internal improvements to allow combined client/server engine libraries. - Many bugfixes and compatibility enhancements. 3.2.0.11 2008-11-20 Synthesis SyncML Server 3.2 Release Candidate 2 Enhancements/Bug fixes: - Compatibility workaround for some low-end Nokia phones (like 2630). - Many refinements to work with iCalendar 2.0 data. - Added script functions CONTAINS(), APPEND(), ITEMDATATYPE(), ITEMTYPENAME(), ITEMTYPEVERS(). - Improved automatic devInf generation (avoids listing duplicate fields in combined types like vCalendar with vEvent/vTodo profiles). - Sample config updated to better handle some subtleties in vCalendar/vCard support (separator character for CATEGORIES, etc.). - Added support for ISO8601 duration values, added new script functions ISDURATION(), DURATION(), POINTINTIME() to handle duration. - Added session and remote rule options. "no" means end dates in vCalendar 1.0 (Mime-Mode old) are rendered as 0:00 of the first not included day. "yes" means that end dates are rendered as 23:59:59 of the last day. 3.2.0.0 2008-08-28 Synthesis SyncML Server 3.2 Release Candidate 1 New features: - Completely revised (but mostly transparent for current configs) time zone handling, adding many features such as per-user or per-database-field custom time zones. Existing configs need to be slightly adapted only if using one of the following (uncommon) script functions: LOCALIZEDASUTC, RELATIVEASUTC, UTCASRELATIVE, LOCALZONEOFFSET, SETZONEOFFSET, ISRELATIVE and SETRELATIVE. Our sample config for the PRO servers until 3.1 used RELATIVEASUTC two times – configurations based on this sample should simply eliminate these calls – these are no longer needed in 3.1 onwards. - Support for unicode ODBC (using UTF-16). - PRO: Regular expression support in scripts (REGEX_FIND, REGEX_MATCH, REGEX_SPLIT, REGEX_REPLACE). - PRO: ISAVAILABLE() script function which allows generating/tuning content depending on what fields are supported by the remote party. - PRO: Support for relational links between items of a sync set by allowing post-processing in . - PRO: Scripts now support WHILE() statement. - PRO: Many new script functions such as SYNCMLVERS(), EXPLODE(), ABS(), SIGN(), NUMFORMAT(), DAYUNITS(), MONTHDAYS(), PARSEEMAILSPEC(), MAKEEMAILSPEC(), SLEEPMS(), TIMESTAMPTODBINT(), DBINTTOTIMESTAMP(), CONVERTTODATAZONE() and many more. - PRO: Enhanced support for calendar content formats – new conversion modes "valuetype", "tzid", "tz", "daylight", "autodate", "autoenddate", new script functions to detect/generate all-day events: ALLDAYCOUNT(), MAKEALLDAY() and to generate and expand recurring events: RECURRENCE_DATE(), RECURRENCE_COUNT(). - PRO: Scripts now can use 0x1224 style hex literals. - SyncML max message and object size limits are now configurable using . - Enhanced debug logging: colored script source, timestamps with millisecond resolution, additional block navigation links. - Config variables that can be passed via command line to parametrize configuration. - Conditional config parsing allowing version/platform/configvar dependent behaviour without modifying config file. - remote rule option for clients with completely broken CTCap in their device information which would cause the server to suppress sending data. - / remote rule options for clients (in particular newer Nokia devices) which need the exact datastore path configured in the client (including path and CGI) to be echoed in the device Information. Note that these options are on by default, no extra remote rules are needed except in case another client should have problems with this behaviour (none known so far). - PRO ODBC: SETSETDBCONNECTSTRING() and SETDBPASSWORD() functions now allow per login database selection. - PRO: New recurrence rule handline functions: MAKE_RRULE() and PARSE_RRULE(). - /REQUESTMINTIME() now allows to artificially slow down server response for testing purposes. - MIME-DIR types: Added advanced conversion mode "multimix" and enum mode "prefix" to handle TYPE parameters consisting of a mix of flag-type and value-type components. Enhancements/Bug fixes: - Fixed compatibility problem with some very old SyncML 1.0 clients which crash when seeing devInf with and . Now suppressing these for SyncML 1.0 by default ( not set). - More tolerance with status 418 received from remote. - PRO: Integer field now properly differentiates between value 0 and "empty". - now has it's own private script context, as it can implicitly be called from other scripts - in case of login context script this caused unpredictable behaviour. - Many general bug fixes and stability enhancements. - Many workarounds and improvements added to make server more tolerant to implementation flaws in foreign clients. 3.0.3.6 2008-04-10 Maintainance Release of Synthesis SyncML Server 3.0 - Corrected problem that caused Status 415 when client sent Soft-Delete and Archive-Delete commands (as some LG handsets do). - Corrected problem with Mexican time zone which was falsely recognized as CDT/CST. - Fixed memory leak caused by timed-out sessions in multithreaded server environments. - Added support for Apache 2.0 on Mac OS X Leopard 3.0.3.4 2007-11-07 Hotfix Release of Synthesis SyncML Server 3.0 - Corrected bug that could cause sessions to abort with Error 403 under some circumstances, especially with slow sync set loading. - System time zone detection improved (failed sometimes in certain Australian and Brazil zones). - Device full status received from client (420) is now considered a non-fatal error and counted as such in the session statistic. Before that, device full just caused no more data to be sent, but had no visible indication in the sync statistics. - Fixed problem with scripts when first element in was an (and not a as usually the case). 3.0.3.2 2007-08-16 Feature and Bugfix Release of Synthesis SyncML Server 3.0 New features: - Adjustments for Nokia E90 Communicator to correctly transfer contacts tel numbers, postal addresses and contact photo. Remote rule for E90 added to sample config. - Support for SQLite as alternative to ODBC datastore added (not available in all server products at this time). Bugfixes: - When fetching BLOB or string columns with exact size of 512+n*65536, sometimes a DB error occurred. - Apache based servers licensed with only one concurrent connection always reported Server Busy status. 3.0.2.2 2007-06-14 Feature and Bugfix Release of Synthesis SyncML Server 3.0 New features: - Sample configuration updated to support P990/M600i email format (message/rfc822) and updated remote rules. - Added datastore-wide config option. - Added datastore option: With this option set, and a conflict between a server delete and client update happening, the server will try to update the item (even though it is not visible in the syncset any more). This can be useful to prevent duplicates in filtered (e.g. date range) sync sets. - ODBC: now using SQLRowCount() ODBC function when doing modifications to the DB to detect when record for UPDATE or DELETE was not found. Added to disable this check (for example in case statement is a stored procedure call which does not update the row count). Change in behaviour: - Database errors (e.g. Status 510) when storing items no longer abort the datastore sync, but are simply reported as status for the item to the remote party. To still force aborting sync in such cases, use s in datastore or session. Bugfixes: - Fixed (another) map handling problem that could cause invalid (but harmless) delete commands to be sent to clients. This happened only for clients with small MaxGUID size (<9). - Linux install2.sh script fixed to work with Debian Etch. 3.0.2.0 2007-05-11 Feature and Bugfix Release of Synthesis SyncML Server 3.0 New features: - Added possibility to define device-specific data types, using the new "rulematch" attribute in the config. This allows for manufacturer or model specific mapping of content fields. - Apache versions (Linux, Mac OS X) can now run multiple sessions as threads within one single process. This mode is more efficient for server installations using Java plugins or other technology which has a large per-process memory footprint or initialisation overhead. Without additional configuration, the server runs in one-process-per-session mode as before. To configure threaded modes, use the new and config options in the new section. Note that mod_sysync/mod_sysync2 must be updated as well to take advantage of threaded modes. However, pre-3.0.2 mod_sysync works in non-threaded mode with >=3.0.2 server and vice versa. - Support for unicode content in datatypes (like Nokia's VMSG) with new and config options. Bugfixes: - When using filters on syncset, sometimes the server could create invalid (but harmless) delete commands. - Fixed problems with clients that send garbage after the SyncML message itself (now ignored). - Fixed map handling problem that could cause invalid (but harmless) delete commands to be sent to clients. - script debug logging is now collapsed by default. 3.0.0.17 2007-02-28 Minor Bugfix Release of Synthesis SyncML Server 3.0 - Fixed problems with map in Linux versions. - Fixed problem reading data from map having a keyfield attribute. - Fixed problem with %V substitution in SQL updating all fields instead of only assigned ones. 3.0.0.14 2007-02-28 Minor Bugfix Release of Synthesis SyncML Server 3.0 - Fixed problems with detecting correct timezone on some Linux systems, added new 2007 DST timezone info. - Fixed problems in scripting with variables defined multiple times in different scripts (but same script context). 3.0.0.8 2007-02-13 Minor Bugfix Release of Synthesis SyncML Server 3.0 - DBApi - improved threading management. In some occasions, problems could occur with on, especially with JAVA plugins. - DBApi JAVA module class may now be placed within a package (before, it had to be at the classpath root level). - Fixed bug that caused SEGV with the DEMO server on some Linux systems. - Minor improvements in debug logging. 3.0.0.2 2006-12-14 Official Release of Synthesis SyncML Server 3.0 Most important new Features: - SyncML DS 1.2 / OMA DS 1.2 support in addition to 1.1.2, 1.1.1 and 1.0! Existing config of 2.1.x version servers can be used without changes - and only minimal changes are required to enable suspend/resume. - Full Suspend/Resume support including resuming partially transmitted large objects. - New Hierarchically structured, dynamically foldable, nicely colored HTML logs by default, text or xml format selectable. - Log output from subthreads can now be either suppressed or logged into a separate log file configurable via . - PRO server includes plugin API for custom database adaptor plugins written in C/C++ or Java using the Synthesis Database Plugin SDK. - Demo Server now based on new Database Plugin technology. - Support for B64 encoded binary data, e.g. PHOTO in vCard. New config sample includes support for contact photos. - ODBC now supports on-demand reading of large fields (such as the PHOTO in contacts, or attachment CONTENTS in emails, see sample config) which is a major efficiency improvement. - Support for DS 1.2 , including automatic indication in . Full record level filtering is supported (inclusive and exclusive mode), but no field level filtering yet. Support must be switched on with and config tags on a per datastore level. - DS 1.1 style CGI filters (/fi() and /tf()) now also support the complete DS 1.2 filter syntax, with enhanced case insensitive comparison and access to individual elements of multivalues (like N[1]=last name, N[2]=first name in vCard). - Added full support for DS 1.2 MaxOccur/MaxSize/NoTruncate mechanisms (fully automatically generated devInf). - Support for ISO8601 extended format added - needed to parse vCard BDAY and REV from some clients. - All config tags now support "platform=xxx" attribute (xxx can be "win32", "linux" or "macosx" at this time). This allows to have variants for different platforms (e.g. log paths) in a single config file. - New for SQL databases that need a per-connection login statement (like SyBase). - Enhanced content type detection in cases where HTTP Content-Type header was wrong or missing in incoming SyncML traffic. Important Changes: - Adds, Replaces and Deletes that receive a non-ok status from the client no longer abort the session by default, but are simply flagged for resend in the next session. can be used to get the old behaviour back, SETRESEND() allows dynamic decision if resend or session abort is needed on a per item basis. - Global log now off by default - Each Chunk of Large Objects ( mechanism) now contains a datapos=x element to indicate the beginning byte position of the chunk. This is required (but missing in the SyncML DS 1.2 standard so far) for proper resume after implicit suspends (connection break). - WBXML generation: SyncML 1.1 and 1.2 now use space-saving numeric FPI (Formal Public Identifier) in WBXML instead of textual DTD string. - in is now executed before detail records are deleted, so returning false will now prevent any change in the detail records. 2.1.1.28 2006-03-31 Minor bugfix release of Synthesis SyncML Server: Enhancements: - New "show" attribute for allows showing parameters (and their values, if any) in devInf. This e.g. solves problems with some phones that would only send a single TEL number if they do not get the list of possible TEL number types (CELL, HOME, WORK...), such as Nokia 7610. Bugfixes: - Corrected some problems with writing and reading BLOBs and parametrized INSERT or UPDATE values. - All %xx substitutions now use , and settings to correctly format and quote strings - Servers set up storing MD5 hashes for user auth sometimes did not allow clients to use basic-auth any more, which is usually needed for old SyncML 1.0 clients only. All MD5 auth was ok, so SyncML 1.1 clients were not affected. Servers storing passwords (not MD5 hashes), like the sample config delivered with the server, were not affected. This is now fixed. - Yearly re-release of DEMO servers to extend demo period until end of 2006 Changes: - in is now executed before detail records are deleted, so returning false will now prevent any change in the detail records. 2.1.1.19 2006-01-18 Minor bugfix release of Synthesis SyncML Server: 2.1.1.18 2005-09-13 Minor bugfix release of Synthesis SyncML Server: Bugfixes: - Windows: Fixed bugs that could cause an AV in the server when a session terminated unsuccessfully or needed to be aborted due to a session timeout. - Linux: Better cleanup - failing sessions sometimes left unused pipes and files in the pipe directory which could cause false "server busy" conditions. 2.1.1.12 2005-07-19 Minor enhancement and bugfix release of Synthesis SyncML Server: Enhancements: - Added SIZE() script function to measure size of an array (LENGTH is not suitable for arrays). Bugfixes: - Fixed bug in typecasting in scripts - did not work when directly casting a variable or field reference (it worked with expressions). - Fixed bug with session timeout introduced with 2.1.1.9 - depending on time zone, sessions could immediately time out after start. 2.1.1.9 2005-07-07 Minor enhancement and bugfix release of Synthesis SyncML Server: Enhancements: - xpt (standalone) server now supports HTTP 1.1 keep-alive, it is configurable with . - PRO only: in ODBC datastore now allows using a script for generating local IDs (rather than using an SQL statement). - High-efficiency data format option (, ) with built-in gzip compression added. This can be used in situations where both client and server can be configured to understand this format or with certain PDA clients from Synthesis AG which have built-in support for it for large emails (application/x-zipbin-message). - Added to ODBC and to control how string literals are quoted. Needed for MySQL which treats backslash as escape char (C-style). - Added sync start time, end time and duration information for use in logs (%ssT, %seT, %sdT). Bugfixes: - RRULE enddates were not always parsed and displayed correctly (sometimes a time shift related to the time zone was added). - Corrected docs: attribute is called "set_no", not "setno". - "%av" sequence in SQL statements had to be written as "%av(" due to a bug in the definition table (the extra paranthesis). - Under some circumstances, server returned status for chunked items with wrong CmdRef (CmdID of the first rather than the last chunk). 2.1.1.2 2005-04-13 Minor bugfix release of Synthesis SyncML Server: Bugfixes: - Fixed bug that could cause (apparently only with Win 2003 server) sessions to abort with "receiving error" for no apparent reason. 2.1.1.0 2005-03-07 Maintainance Release of Synthesis SyncML Server: New Features: - Added option for and TREATASUTC() script function to allow handling a bug in Nokia S80 (9500/9300) devices which send time values in UTC, but format them as if it was localtime, which shifts time in calendar when syncing from a device to a server. - Added new remoterules to the standard remote rule set for Nokia 9500 and 9300. Bugfixes: - Fixed bug in content-type detection in case HTTP headers do not contain correct content type. - Fixed performance eating problem in text-based datatypes with really large objects (such as multi-Meg email attachments). - Fixed bug in LargeObject generation: Sometimes, a new command was issued while the previous command's data was not completely sent; this caused Error 223 at the receiving end. - Fixed bug that did not show ODBC error when inserted into log table failed (only showed "exception"). - Fixed bug that could cause Add/Replace/Delete being sent in the wrong command context in some (very rare) cases. - Fixed bug that could abort the session when decoding WBXML documents that contained content consisting of more than one single WBXML string (or string table reference). 2.1.0.1 2005-01-06 Feature Upgrade and Maintainance Release of Synthesis SyncML Server: New features: - Enhanced Filter Architecture, now supporting SyncML-Standard TAF-Style filters in addition to our own dynamic and static SyncSet limiting filters, even in combination. Added support for TAF generic field names in vCard like "GIVEN" and "FAMILY", and for vCalendar "START" and "END". Allowed using property names in filters for MimeDIR and tagged header names for TextItems. Filters can also refer to "LUID" and "REMOTEID". New and SETSQLFILTER() to allow an ODBC datastore to create a custom SQL filter expression from STARTDATE() and ENDDATE(). Also added DBLITERAL() function to create DB literals when assembling SQL statements in scripts. - Added support for issuing SQL statements programmatically in scripts (SQLEXECUTE() etc.). - SHELLEXECUTE() script function now allows calling external programs from within a sync session. - Remoterules can now cause execution of a . - Remoterules now use wildcard matching for checking manufacturer, model and oem (so one rule can match multiple similar devices for example). - MIME-DIR definitions can now made dependent on the currently active remote rule. This allows device-dependent interpretation of vCards/vCals which can be useful for difficult devices. - Support for ODBC parameters, allows for calling stored procedures with in/out/inout params for example for Oracle. - Added RFC2047 generator/parser to correctly handle non ASCII special chars in email header fields. - Added support for vCalendar 2.0-style RRULE syntax. - scripting: Added SETxxxxx functions for DB options like date range, item max count, limit, noattachments. - scripting: now can return NOTHING (meaning no auth decision made), TRUE (auth ok, no further checking needed) or FALSE (auth not ok, no further checking needed) - Added SETCONFLICTSTRATEGY to set conflict strategy in datastoreinitscript according to user settings or other run-time conditions. - Datastore initialisation and loading of the sync set can now take place in a background thread while communication with the client is kept active. This is useful with clients that have a short timeout (e.g. 30 seconds) and slow databases or very large sync sets that take more time than the client's timeout. Added and to control threading behaviour and timing. - One-way-from-client sync mode now supported in ODBC datastores. Requires updated SYNC_TARGETS table as we need to store the date of last sync when data was transmitted to the remote in addition to the last sync date (). - Better handling of SyncML messages without correct transport layer content data type (now detects WBXML coded SyncML reliably) - Support for simplified chinese charset (GB2312/CP936) - Debug logs now show all SyncML Command references in a unified format such that e.g. searching a command's status response is easy (copy command ref into edito's search command). - Added per-datastore and per-session data byte counting, can be saved in log file / table with new %diB/%doB/%tiB/%toB sequences. - Elements of array fields are now shown in logfiles when internal fields are dumped. - added config flag to session to allow the 206..210 alert codes (but with no functional difference to 200..205) - Added - Added to ODBC datastores (here we can execute SQL if needed) - Added to all datastores - Added on session level - Unified naming of products in DevInf: will now shows the Servers type/variant, without version No like: SySync server For example: "SySync Server Win32 ISAPI ODBC PRO", - Unified and updated remoterules in all sample server configs to contain the currently known (big) list of device exceptions. Updates to the remoterules list can be obtained from our website at www.synthesis.ch. - Added support for processing and generating custome GET and PUT SyncML commands (, ISSUEPUT() and ISSUEGET()). - Licensing: For OEMs, it is now possible to lock sections of the config and bind it to a certain license. This prevents unauthorized modifications of critical config sections by the end user. Bugfixes: - Fixed bug in script engine, it was not possible to declare arrays as local variables. - Default charset is now UTF-8 when parsing MIME-DIR formats (e.g. vCard 3.0, but not vCard 2.1, where default is still ANSI) - Improved algorithm to find Tx type such that it will now use remote's preferred Rx (first priority) or local's preferred Tx (second priority) or just a match (third priority) - Fixed some potential dead-lock problems with ISAPI server and clients that do retry sending a message. - Fixed bug in "valueseparator" feature (did not work if separator was not a semicolon). - Fixed small bug in vcalendaritemtype parser which would have caused problems with rarely used RRULEs like "MD1 1- #10". - Fixed bug in SESSIONVAR() script function: did abort the script when variable did not exist, now returns UNASSIGNED. - Fixed bug that could cause SyncML 1.0 sessions to terminate when a data item was bigger than what could fit into a message. This could happen especially with clients with very small message sizes (<3k) like SonyEricsson T610 and large vCard NOTES for example. - Fixed bug that caused trailing non-ASCII-chars to disappear from multiline fields. - Fixed bug in email body processing which could cause body to be parsed as empty. - Fixed SyncML 1.1 problem when client does not send MaxObjSize. In this case, the server assumed maxobjsize=0 which prevented any big object to be sent at all. 2.0.5.1 2004-01-28 Maintainance Release of SyncML Server 2.0: - Some Script functions where not available from ODBC-datastore scripts. - Possible crash at startup on machines that do not have a TCP/IP host name (gethostent() returns nothing) fixed. - Enhanced datastore name matching for cases where remote datastores have names that only differ in path elements. - Enhanced MIME-DIR parser with "delayedparsing" attribute in to allow parsing vCals that have RRULE before DTSTART (but DTSTART is required for parsing RRULE). - added "delayedparsing=1" to RRULE in all sample config files - sample config: replaced "JOIN x ON y" syntax in with more compatible implicit join (link expressions in WHERE) as for example MySQL 3.23 does not support "JOIN x ON y". - Fixed bugs that could cause exceptions when was used with repeat="array". - Fixed various small bugs with processing of ODBC mappings - improved ODBC mappings to allow a "sizefrom" field to determine the number of detail records to write. - First Linux version (preview) 2.0.4.4 2003-12-11 Maintainance Release of SyncML Server 2.0: - Fixed bug in comparison of "multiline" fields in scripts (compare now works with > and < (string ordering)). - Added to allow more parameter to be passed for ODBC connection (e.g needed for MySQL) - Fixed bug in parsing of RFC822 dates (emails) - Added "default" and chained remoterule checking with new "finalrule" tag. - Fixed bug that prevented filtering (/fi()) for the KIND field to differentiate vEvent/vTodo. - Fixed bug in filter processing: SyncML TAF-style (∧...) now works correctly. - added and new functions to add filter expressions to targetfilter and localdbfilter in runtime (ADDFILTER, ADDSTATICFILTER, GETFILTER, SETFILTER). - added /o() CGI option and DBOPTIONS() function for - added /slow CGI option to force slowsync from clients that have no GUI for that. - improved logging of session-related problems like WBXML/XML parsing errors (now appear in session log and not only in global log) - fixed bug in ISO8601 parsing that could cause mis-interpretation of non-UTC time in rare cases. - Added server config to add an implicit GUID limit to prevent troubles with dumb clients that do not specify a limit but seem to crash on very long IDs. - Added to help identifying config used for each session in session logs. - Added display of request processing time to debug logs. - Added last-answer-buffer mechanism and resend-answer-if-request-repeated. ISAPI server has now a in to disable buffering. - Fixed bug for "text" item type that could cause email bodies in MIME/multipart messages not to be recognized by the parser. - Fixed bug for "text" item type that could cause emails with attachments, but no body text to omit the attachments on sending. - NORMALIZED() script function returned EMPTY for UNASSIGNED input; Now it returns UNASSIGNED in this case. 2.0.1.5 2003-08-12 Release of SyncML Server 2.0. Demos for Windows, Linux, MacOS X. 1.0.8.55 2003-07-28 Public release, now included complete feature set for 2.0, including SyncML 1.1.1 and email. 1.0.8 2002-12-11 Pre-Release of some of the new features for 2.0 version: Filters, scripting, etc. 1.0.5 2002-07-09 First public release of Synthesis SyncML Server