Hello,

Since SAN does not have 'slow sync' option, SyncEvolution decided to implement
this feature via 'force slow' in server side, eg:
Client init sync with 'Alert 200', SyncEvolution rejects with status code '508'
and a new Alert item 'Alert 201'.

This caused a problem in superds implementation:
in superdatastore.cpp:engProcessSyncAlert:

for each sub datastore {
 call subds->engProcessSyncAlert;

  if (substatus.getStatusCode()!=0) {
   // basic problem with one of the subdatastores
   // - propagate error code
   aStatusCommand.setStatusCode(substatus.getStatusCode());
   // - no alert to send
 ----->  return NULL;
 }
 }

This means if any subdatastore returned a failed status code for
engProcessSyncAlert, the superdatastore will return immediately without 
calling other subdatastores and itself. This caused the status for other
datastores are still in idle state.
A later 'sync' cmd with an 'alert' for a datastore in 'idle' state caused
the engine return 'SYNC received too early". The client (Nokia 7210c) then
continues sends its changes to server and the server this time has nothing
to say but returns 'Alert 222', then the client also has nothing to say and 
responds 'Alert 222', this loops forever.

Comment the returen statement, let the alert process proceeds which looks works
for me. Do you have other suggestions for this?
-- 
Regards,

Chen Congwu
Moblin China Development


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

Reply via email to