Hi Patrick,
Not able to understand this clearly:
"A better test looks at how the server reacts when receiving an update
where a property is missing that the server currently has: if the
client
supports the property, the server should remove its copy of the
property. If the client doesn't, the server should keep its copy."
If for e.g. TEL property is supported by server but not client, then
server should remove these fields from its copy? This doesnt look
right to me. What of the other client does support this? In this case
the TEL information will be lost.
I ran some test cases:
1. Client DevInf does not support the TEL Property where as the Server
does. TEL entries from vcard also removed. Did a sync.
[INFO] addressbook: starting normal sync, two-way (peer is server)
[INFO] creating complete data backup of source addressbook before sync (enabled
Local data changes to be applied during synchronization:
*** addressbook ***
after last sync | current data
removed since last sync <
added since last sync
-------------------------------------------------------------------------------
BEGIN:VCARD BEGIN:VCARD
N:aab1;sa1 N:aab1;sa1
FN:aa\, sa FN:aa\, sa
TEL;TYPE=CELL:8 <
TEL;TYPE=FAX;TYPE=HOME:7 <
TEL;TYPE=HOME:9899 <
TEL;TYPE=WORK:9 <
VERSION:3.0 VERSION:3.0
END:VCARD END:VCARD
-------------------------------------------------------------------------------
[INFO] addressbook: sent 1/1
[INFO] addressbook: started
[INFO] addressbook: normal sync done successfully
[INFO] creating complete data backup after sync (enabled with dumpData and neede
Synchronization successful.
Changes applied during synchronization:
+---------------|-----------------------|-----------------------|-CON-+
| | LOCAL | REMOTE | FLI |
| Source | NEW | MOD | DEL | ERR | NEW | MOD | DEL | ERR | CTS |
+---------------+-----+-----+-----+-----+-----+-----+-----+-----+-----+
| addressbook | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 |
| two-way, 0 KB sent by client, 0 KB received |
| item(s) in database backup: 2 before sync, 2 after it |
+---------------+-----+-----+-----+-----+-----+-----+-----+-----+-----+
| start Thu Nov 28 04:24:45 2013, duration 0:02min |
| synchronization completed successfully |
+---------------+-----+-----+-----+-----+-----+-----+-----+-----+-----+
2. Just after that i did a refresh from server.
Local data changes to be applied during synchronization:
*** addressbook ***
no changes
[INFO] addressbook: deleting 0
[INFO] addressbook: deleting 1/2
[INFO] addressbook: deleting 2/2
[INFO] addressbook: started
[INFO] addressbook: received 1/2
[INFO] addressbook: added 1, updated 0, removed 0
[INFO] addressbook: received 2/2
[INFO] addressbook: added 2, updated 0, removed 0
[INFO] addressbook: first time sync done successfully
[INFO] creating complete data backup after sync (enabled with dumpData and neede
Synchronization successful.
Changes applied during synchronization:
+---------------|-----------------------|-----------------------|-CON-+
| | LOCAL | REMOTE | FLI |
| Source | NEW | MOD | DEL | ERR | NEW | MOD | DEL | ERR | CTS |
+---------------+-----+-----+-----+-----+-----+-----+-----+-----+-----+
| addressbook | 2 | 0 | 2 | 0 | 0 | 0 | 0 | 0 | 0 |
| refresh-from-remote, 0 KB sent by client, 0 KB received |
| item(s) in database backup: 2 before sync, 2 after it |
+---------------+-----+-----+-----+-----+-----+-----+-----+-----+-----+
| start Thu Nov 28 04:29:10 2013, duration 0:04min |
| synchronization completed successfully |
+---------------+-----+-----+-----+-----+-----+-----+-----+-----+-----+
Data modified locally during synchronization:
*** addressbook ***
before sync | after sync
removed during sync <
added during sync
-------------------------------------------------------------------------------
BEGIN:VCARD BEGIN:VCARD
N:aab1;sa1 N:aab1;sa1
FN:aa\, sa FN:aa\, sa
TEL;TYPE=CELL:8
TEL;TYPE=FAX;TYPE=HOME:7
TEL;TYPE=HOME:9899
TEL;TYPE=WORK:9
VERSION:3.0 VERSION:3.0
END:VCARD END:VCARD
-------------------------------------------------------------------------------
===============================================================
The TEL property fields are back. I checked the server, the fields
were present. Not removed from the server.
It seems that the Funambol does not take client capabilities into consideration.
Regards
On Thu, Nov 28, 2013 at 2:31 PM, Patrick Ohly <patrick.ohly(a)intel.com> wrote:
On Thu, 2013-11-28 at 14:23 +0530, Sachin Gupta wrote:
> Thanks Patrick.
>
> "It depends on whether the server uses the sent DevInf at all". This
> statement helped a lot :)
>
> You were right!. Funambol is not considering the device capabilities.
> I tested by removing the TEL property from client devinf, but still
> Funambol did not take this into consideration and as part of the
> refresh-from-server, Funambol sent the complete TEL information.
That alone might not be enough to determine whether the info is used.
Even if the client does not support a property, the server might still
send it, just to be sure, at least when the property is small.
A better test looks at how the server reacts when receiving an update
where a property is missing that the server currently has: if the client
supports the property, the server should remove its copy of the
property. If the client doesn't, the server should keep its copy.
> I will now try deploying syncevo as a server and try synncing with this.
https://syncevolution.org/wiki/http-server-howto
--
Best Regards, Patrick Ohly
The content of this message is my personal opinion only and although
I am an employee of Intel, the statements I make here in no way
represent Intel's position on the issue, nor am I authorized to speak
on behalf of Intel on this matter.