6.0.0-beta1
7/16/25

[#10942] Horde_SyncMl_Device_Synthesis corrupts sync data
Summary Horde_SyncMl_Device_Synthesis corrupts sync data
Queue Synchronization
Queue Version Git master
Type Bug
State Resolved
Priority 2. Medium
Owners jan (at) horde (dot) org
Requester fabio.bas (at) officineinformatiche (dot) net
Created 01/26/2012 (4920 days ago)
Due
Updated 01/27/2016 (3458 days ago)
Assigned 01/27/2012 (4919 days ago)
Resolved 01/27/2016 (3458 days ago)
Github Issue Link
Github Pull Request
Milestone
Patch No

History
01/27/2016 05:31:41 PM fabio (dot) bas (at) officineinformatiche (dot) net Comment #8 Reply to this comment
I'm the original reported of the bug, and i can only LOL to this bug 
being fixed after 4 years.
Unfortunately i can't test the fix, since i don't use SyncML anymore, 
but the less-insane Dav protocol for syncing.
01/27/2016 05:08:58 PM Jan Schneider State ⇒ Resolved
 
01/27/2016 05:08:33 PM Git Commit Comment #7 Reply to this comment
Changes have been made in Git (master):

commit b12e66b66b4b0380091f56f5f55e2d020f1e74e5
Author: Jan Schneider <jan@horde.org>
Date:   Wed Jan 27 18:07:55 2016 +0100

     [jan] Remove workarounds for ancient Synthesis clients (Bug #10942).

  framework/SyncMl/lib/Horde/SyncMl/State.php |    3 ---
  framework/SyncMl/package.xml                |    2 ++
  2 files changed, 2 insertions(+), 3 deletions(-)

http://github.com/horde/horde/commit/b12e66b66b4b0380091f56f5f55e2d020f1e74e5
01/30/2012 02:27:01 PM fabio (dot) bas (at) officineinformatiche (dot) net Comment #6 Reply to this comment
Here's the DeviceInfo header for android/SyncML Pro, that fails hard 
identifying itself as a pocket pc..

Horde_SyncMl_DeviceInfo::__set_state(array(
    'VerDTD' => '1.2',
    'Man' => 'Synthesis AG',
    'Mod' => 'SySync Client PocketPC PRO',
    'OEM' => 'Synthesis AG',
    'FwV' => 'Android/2.2.1',
    'SwV' => '3.4.0.33',
    'HwV' => 'Android GT-S5570',
    'DevID' => 'xxxxxxxxxxxx-xxxxxxxxxxxxxxx',
    'DevTyp' => 'pda',
       ))
01/30/2012 01:54:09 PM fabio (dot) bas (at) officineinformatiche (dot) net Comment #5 Reply to this comment
Here's the DeviceInfo header for iphone/Synthesis Todo+Cal+Sync:

Horde_SyncMl_DeviceInfo::__set_state(array(
    'VerDTD' => '1.2',
    'Man' => 'Synthesis AG',
    'Mod' => 'SySync Client iPhone Contacts+TodoZ',
    'OEM' => 'Synthesis AG',
    'FwV' => 'iPhone OS/5.0.1',
    'SwV' => '3.4.0.38',
    'HwV' => 'iPhone',
    'DevID' => 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx',
    'DevTyp' => 'pda',
       ))

Here's the DeviceInfo for ipad/Synthesis SyncML Pro:
Horde_SyncMl_DeviceInfo::__set_state(array(
    'VerDTD' => '1.2',
    'Man' => 'Synthesis AG',
    'Mod' => 'SySync Client iPhone Contacts+Calendar',
    'OEM' => 'Synthesis AG',
    'FwV' => 'iPhone OS/5.0.1',
    'SwV' => '3.4.0.38',
    'HwV' => 'iPad',
    'DevID' => 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx',
    'DevTyp' => 'pda',
       ))

I'll be testing android as soon as i can get my hands on it.

01/30/2012 12:34:49 PM Jan Schneider Comment #4
Assigned to Jan Schneider
Reply to this comment
I'm waiting for feedback from Synthesis to get some definite answer 
about the affected versions and platforms.
01/28/2012 09:53:21 AM fabio (dot) bas (at) officineinformatiche (dot) net Comment #3 Reply to this comment
While i generally agree with your objection, i'd like to note that:
- the code actually assumes that every synthesis client is window 
mobile, with a single exception (when 
$GLOBALS['backend']->state->deviceInfo->Mod contains 'palm'); the same 
workaround could be applied to other devices, or the check could be 
inverted: apply the workarounds only if the device model is "windows 
mobile".
- keeping the code untouched we'll probably avoid a regression on 
7-years old devices running an obsolete version of window 
mobile+synthesis (who's still using these?), but actually break 
syncronization on all existing ios and android devices (hundreds of 
millions devices in use).

I'll try to retrieve the $GLOBALS['backend']->state->deviceInfo for 
ios and android devices so that the check can be improved.

01/27/2012 11:57:48 AM Jan Schneider Comment #2
State ⇒ Feedback
Patch ⇒ No
Reply to this comment
Without some way to determine broken from fixed versions, we cannot 
simply remove those workarounds.
01/26/2012 01:55:17 PM fabio (dot) bas (at) officineinformatiche (dot) net Comment #1
Priority ⇒ 2. Medium
Type ⇒ Bug
Summary ⇒ Horde_SyncMl_Device_Synthesis corrupts sync data
Queue ⇒ Synchronization
Milestone ⇒
Patch ⇒ Yes
State ⇒ Unconfirmed
Reply to this comment
Horde_SyncMl_Device_Synthesis is a class that provides functionality 
that is specific to the Synthesis.ch SyncML clients. The original 
class seems to have been writter just to workaround some old 
limitations for the windows mobile client:
- the inability to use DateTime in vTodo's DUE attribute, stripping 
off the Time part;
- the use of custom values in the PRIORITY attribute (1,2,3 instead of 0-9);

Using any recent synthesis syncml client (i tested the iphone and the 
android ones), these limitations doesn't exists anymore; but since 
they are forced anyway, the resulting vTodo gets corrupted:
- every vTodo's due date is changed to time 00:00;
- every vTodo's priority is changed to either 1,2,3;

I tried to comment out all of the class's methods, and syncs started 
working flawless.
Unfortunately i had no WindowsMobile or Palm devices to test this 
change with, but is suppose that since all the synthesis's products 
are based on the same library, the limitation is gone for all of these 
devices.


Saved Queries