Patrick Ohly wrote:
So switching between home and office triggers a slow sync? I wonder
whether the phone sees different deviceIds for the SyncEvolution side in
that case.
There are two settings in SyncEvolution for this. From a config for the
Nokia N97:
# the identifier sent to the remote peer for a server initiated sync.
# if not set, deviceId will be used instead
remoteIdentifier = PC Suite
Yes this is true. I use actually the Nokia_N900 template
# The SyncML server gets this string and will use it to keep track
of
# changes that still need to be synchronized with this particular
# client; it must be set to something unique (like the pseudo-random
# string created automatically for new configurations) among all clients
# accessing the same server.
# myFUNAMBOL also requires that the string starts with sc-pim-
# deviceId =
We do server initiated syncs with phones, so "PC Suite" is sent to the
phone in the initial message. If I remember correctly, that had to be
that fixed string, at least with some Nokia phones.
Note that there's no unique deviceId here, which means that different
computers will all look alike to the phone, which then notices a
mismatch of sync anchors when moving between computers and thus forces a
slow sync.
Hrm, there's a nice fat TODO in src/syncevo/SyncContext.cpp about this:
if (m_serverMode) {
// TODO: set the device ID for an OBEX server
} else {
substTag(xml, "fakedeviceid", getDevID());
}
I don't remember why that if() check is there, and why
SyncConfig::createPeerTemplate()'s
config->setDevID(string("syncevolution-") + UUID()) is not used to set a
unique deviceId when configuring phones.
Answering that would require some further code archeology and
experimenting; not sure when I will have time for that. Perhaps you can
check?
Here's an example of a sync with a SyncML server:
http://downloads.syncevolution.org/syncevolution/archive/test-results/syn...
<Source><LocURI>syncevolution-4b578bb6-c5ce-41ff-be35-651e9b77ac65</LocURI><LocName>syncevolution(a)lists.intel.com</LocName></Source
>
> The server then replies with:
http://downloads.syncevolution.org/syncevolution/archive/test-results/syn...
<Target><LocURI>syncevolution-4b578bb6-c5ce-41ff-be35-651e9b77ac65</LocURI><LocName>syncevolution(a)lists.intel.com</LocName></Target
>
<Source><LocURI>http://www.plan44.ch/fsync_nightly</LocURI></Source
>
> Perhaps that's the reason for the if() check: a HTTP server might
> require a different LocURI (?) than an OBEX server, and the code does
> not immediately know what it is (depends on the transport).
I don't see it in the sync via bluetooth. I see in the html log
device ID: syncevolution-33702b00-09b0-4a05-8eb0-4057b41667a6
device ID: syncevolution-5c646a89-d7bb-4338-b5b5-3e6f4eb6e1f9
In the xml I see only the Nokia/Phone ID
<Source
<LocURI>IMEI:xxxxxxxxxxxxxxxx/LocURI
</Source
....
<Source
<LocURI>./devinf12</LocURI
</Source
....
<Source
<LocURI>./contacts</LocURI
</Source
I was also thinking that based on the device ID it might be deciding to
compare all items, which perhaps makes also sense. I'm not sure.
regards