Hello,

The following issue has been updated:

5 - configdate issue: configdate of InitEngineXML does not trigger the Put cmd
Project: libsynthesis
Status: New
Reported by: Yong Wu
URL: http://www.synthesis.ch/indefero/index.php/p/libsynthesis/issues/5/
Labels:
 Type:Defect
 Priority:Medium

Comments (last first):

# By Lukas Zeller, Jun 22, 2009:

Thanks for the patch!

Indeed, that check was missing. I applied it now (commit 
3f52d2faffd4f9d57693c1879ea6261af582346e).

While reviewing I found that the entire mechanism needed some cleanup. 
mustSendDevInf() and fRemoteMustSeeDevinf were here for nearly the same 
purpose, so unified them (commit 5328a5807c5ac67f7f541391ad57d3fa376316b2). 

This again affected the code lines you patched, because checking 
mustSendDevInf() is now sufficient - it now already does the check for 
fRemoteMustSeeDevinf.

 Status: Fixed

# By Yong Wu, Jun 22, 2009:

To reproduce this issue using syncEvolution + Google sync: 

1, send a newer valid configdate always (via syncEvolution)
2, change the contact type of Google sync as text/x-vcard or text/vcard to 
check whether it take effect immediately
3, suppose other configs are correct, the expected behavior is, Google sync 
will fail w/ 404 error with the text/vcard contact type, but will success with 
text/x-vcard. 

According to the observations, the engine has two chances to send the devinfo.

1, when the session to produce the next message. 
--- a/src/sysync/syncclient.cpp
+++ b/src/sysync/syncclient.cpp
@@ -906,7 +906,7 @@ localstatus TSyncClient::NextMessage(bool &aDone)
       if (localDS->fSlowSync) anyslowsyncs=true;
     }
     // create Put command if any datastore is doing first time sync / slow 
sync or devinf Put is externally requested
-    if (mustSendDevInf() || anyfirstsyncs || (anyslowsyncs && 
static_cast<TClientConfig 
*>(getRootConfig()->fAgentConfigP)->fPutDevInfAtSlowSync)) {
+    if (fRemoteMustSeeDevinf || mustSendDevInf() || anyfirstsyncs || 
(anyslowsyncs && static_cast<TClientConfig 
*>(getRootConfig()->fAgentConfigP)->fPutDevI
       TDevInfPutCommand *putcmdP = new TDevInfPutCommand(this);
       issueRootPtr(putcmdP);
     }

2, the end message processing.
  if (!fRemoteGotDevinf && fRemoteMustSeeDevinf) {
      ...
      issueRootPtr(putcmdP);
    }

The change of configdate never trigger the 1st Put ommand, but does has impact 
on the 2nd Put (thr the fRemoteMustSeeDevinf). While it seems the later Put 
does not work as the first one. 

But if the fRemoteMustSeeDevinf condition is added to
the first Put(as it shown in the diff above), it will work perfectly as 
expected.



--
Issue: http://www.synthesis.ch/indefero/index.php/p/libsynthesis/issues/5/


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

Reply via email to