Hello everyone!

We recently discovered 2 pesky bugs affecting the latest Marshmallow update for Samsung devices:

1 - Unsupported command on EAS2.5
The device sends a command which is not supported by version 2.5 of the protocol even when synchronizing through such version. This causes a "java.lang.UnsupportedOperationException" exception.
If a device is affected by the bug, you'll be able to find the following lines in a debug-level account logger:

<n1:Settings xmlns:n1="Settings">
<n1:DevicePassword>
<n1:Set>
<n1:Password>*****</n1:Password>
</n1:Set>
</n1:DevicePassword>
</n1:Settings>
2016-04-05 09:19:15,278 [tid=012345;account=user@domain.com;id=SEC1234567890123;model=SAMSUNGSMG925F;oip=255. 255.255.255;eas=2.5;rid=12345] err Exception: java.lang.UnsupportedOperationException


2 - Bad "/Calendar" collection code
The device asks for the synchronization of collection 10 (the /Calendar folder) but sends the synckey for collection 15 (the /Tasks folder) to the server instead. This causes the default calendar not to syncrhronize properly.

Spotting this bug is a bit trickier than the previous one, and you will need a debug-level account logger as well.

First of all, search for all lines containing <n1:CollectionId>10</n1:CollectionId> - sync command for the /Calendar folder - running

Code:
grep -B1 "<n1:CollectionId>10</n1:CollectionId>" /opt/zimbra/log/yourfile.log
Sample output:
Code:
  <n1:SyncKey>8955c3fa95fd4878a76741eebe9d0e30/10/18/2</n1:SyncKey>
      <n1:CollectionId>10</n1:CollectionId>
      <n1:DeletesAsMoves>0</n1:DeletesAsMoves>
--
      <n1:SyncKey>8955c3fa95fd4878a76741eebe9d0e30/10/18/2</n1:SyncKey>
      <n1:CollectionId>10</n1:CollectionId>
      <n1:Status>1</n1:Status>
--
      <n1:SyncKey>8955c3fa95fd4878a76741eebe9d0e30/10/18/2</n1:SyncKey>
      <n1:CollectionId>10</n1:CollectionId>
      <n1:DeletesAsMoves>0</n1:DeletesAsMoves>
--
      <n1:SyncKey>8955c3fa95fd4878a76741eebe9d0e30/10/18/2</n1:SyncKey>
      <n1:CollectionId>10</n1:CollectionId>
      <n1:Status>1</n1:Status>
--
      <n1:SyncKey>8955c3fa95fd4878a76741eebe9d0e30/10/18/2</n1:SyncKey>
      <n1:CollectionId>10</n1:CollectionId>
      <n1:DeletesAsMoves>0</n1:DeletesAsMoves>
Now, check the valule after the first slash character in the synckey value: if it's different than the CollectionId value then the client is affected by the bug:

Code:
--
      <n1:SyncKey>8955c3fa95fd4878a76741eebe9d0e30/10/18/2</n1:SyncKey>
      <n1:CollectionId>10</n1:CollectionId>
      <n1:DeletesAsMoves>0</n1:DeletesAsMoves>
This is OK.

Code:
--
      <n1:SyncKey>8955c3fa95fd4878a76741eebe9d0e30/15/18/2</n1:SyncKey>
      <n1:CollectionId>10</n1:CollectionId>
      <n1:DeletesAsMoves>0</n1:DeletesAsMoves>
This is NOT OK.

We are currently testing a server-side workaround lovingly crafted by our Dev Team, and we plan to release it within just a few days along with other fixes in ZeXtras Suite 2.2.4.


Have a nice day,
Cine
the ZeXtras Team