Release 43 uploaded to SourceForge
I have just uploaded Release 43 to sourceforge (https://sourceforge.net/projects/zimbrabackend/)
There are numerous bug fixes in this release as well as a very significant enhancement to the method used for "Ping"ing folders.
It is highly recommended that this version of the backend is used with z-push 1.4 or later to get the best out of it. There is new functionality in z-push 1.4 that allows the use of an alternative mechanism for "Ping"ing folders for changes. I have implemented this functionality in the backend - and it will be used by z-push 1.4. The existing ping method should continue to work with z-push 1.3 though this is highly inefficient. If for some reason it does not work with z-push 1.3 it would be good to know that.
It is always important to initiate a full-resync after a z-push or backend update - but in this case it is even more important as the device state data stored has been changed because of this Ping update.
If you have any non-English language users you should download the z_rtf.php file from the 1.5 beta of z-push too, as this will allow decoding of RTF encoded notes fields that will otherwise get dropped from appointments/tasks/contacts. Again - in the absence of this include being available - the backend should continue to work, though in this case it should now insert warning text where it would previously have just discarded the contents entirely.
Changes Made To Revision 43:
- Implemented the new AlterPing/AlterPingChanges method from 1.4 to reduce the number of hits on the backend for monitored folders. Operates on the basis of monitoring the i4ms flag on folders for changes
- Added handling of RTF field in appointment/task/contact where no Body/Notes field received. Requires z_RTF.php include file from as12 branch of z-push SVN to decode the Compressed RTF stream. Issue reported by Danish language user
- Removed multiple classes/functions that were duplicates of those in diffbackend to simplify the updating of the code to match future z-push releases. We should only declare "standard" classes/functions where we have a need to override.
- Changed debug logging of Soap Request/Response to follow WBXML.PHP debug flag so that basic application flow debugging will not flood logs
- Changed date selection criteria for Appointments/Tasks to use the attributes calExpandInstStart and calExpandInstEnd where Start is determined by cutoffdate or defaulted to 366 days in the past and End is arbitrarily set to 366 days in the future
- Fixed some issues with recurring appointments on last day or named day of month. Outgoing appointments would set WeekOfMonth to -1 when ActiveSync wants a value 5. Incoming appointments would set bysetpos to 5 where zimbra wants a value -1.
- Changed default for all folder types to recursive=true - XML will still override
In addition, I added a warning related to on-the-fly changes to user XML files.
WARNING: Before changing the content of a User's XML file, set the sync schedule to manual on the device, or remove the profile entirely. And when finished, if the profile was not first removed then request a full-resync of the client before changing back to an automatic sync schedule.
Explanation: User files effectively fool the device into thinking that some folders on the server that the device would normally see do not exist - AND/OR - that some folders that the device would not normally see are actually available to it. As a result, changing the contents of the XML file should not be done without doing a full resync of the device. In the absence of doing this problems can occur that could lead to the loss of data on the server.
For example - removing an include for a folder will make the device think the folder has been deleted, and will trigger a delete for the client. This delete will cause a change-in-state on the client that will trigger a parallel delete on the server on the next sync. This will then delete the real server copy of that folder which would result in the loss of data.
Making the changes offline, followed by a full-resync eliminates this risk.