On 09/15/2011 05:16 PM, Lukas Zeller wrote:
Hello Andris,

On Sep 12, 2011, at 11:59 , Andris Pavenis wrote:

There are following problems synchronizing contacts between libsynthesis
based server (our own implementation) and S60 3rd edition mobile phones
(I used Nokia E65 and E50 for testing). I'm giving an example to illustrate
the problem:

- let us assume that contact on both server and in mobile phone address book
   contain one or several phone numbers of the same type (for example
   TEL_FLAGS[xx]:8):
        TEL[0]:11111111
        TEL_FLAGS[0]:8
        TEL[1]:22222222
        TEL_FLAGS[1]:8
        TEL[2]:33333333
        TEL_FLAGS[2]:8
        TEL[3]:44444444
        TEL_FLAGS[3]:8

- a part of phone numbers are deleted on server side (not from the end):
        TEL[0]:33333333
        TEL_FLAGS[0]:8
        TEL[1]:44444444
        TEL_FLAGS[1]:8

- An attempt to synchronize device causes SyncML Replace command
   to be generated for updating contact on client side. First 2 numbers
   on client device are replaced with 2 numbers send from server
   but 3rd and 4th number remains unchanged
        TEL[0]:33333333
        TEL_FLAGS[0]:8
        TEL[1]:44444444
        TEL_FLAGS[1]:8
        TEL[2]:33333333
        TEL_FLAGS[2]:8
        TEL[3]:44444444
        TEL_FLAGS[3]:8

The same problem appears also when there is only one number of each type
present and some of them are deleted on server side. After synchronization
it is still present on client side (none replaced, so the first remains where 
it was)

As far as I checked Funambol server tries to workaround this problem by sending
empty phone number after I remove phone number using Funambol WebGui demo
version (it supports however only one number of each type so test possibilities 
are
rather limited)
There is a config option for libsynthesis for repeating properties. You can set the 
"minshow" attribute on<position>  (see SySync_config_reference 10.3.7, approx 
page 84) to force the engine to produce empty fields in excess of the number of stored values.

The problem is that the handling of empty properties is highly client specific 
(from crashing, to ignoring them, to interpreting them to actually wipe 
existing fields).

Note that the "suppressempty" attribute of<property>  as well as the<noemptyproperties>  
in<remoterule>  can both overrule a "minshow" specification.

Attempted to use attribute minshow but it did not help even if empty phone number of the same type (TEL_FLAGS:8) was present. Funambol server is somehow able to remove the phone number from contact on device only when contact is edited from Web Demo UI. All happened in the same way as described above when I used 2 phones in the tests (SyncML replace from server only replace provided number of phones and do not touch any others when present).

It seems to happen so with S60 3rd edition phones (http://en.wikipedia.org/wiki/S60_%28software_platform%29).

Tried also Nokia E90 Communicator (S60 3rd Edition, Feature Pack 1): it behave even worse as replace removes all phone numbers of the same type from contact and put the last one from the replacement in place of old ones. It should not however cause problems when user has no more than one phone number of each type in contact.

Andris


_______________________________________________
os-libsynthesis mailing list
[email protected]
http://lists.synthesis.ch/mailman/listinfo/os-libsynthesis

Reply via email to