CalDAV/CardDAV + local storage: avoid empty properties

The main motivation for this change is that a recent Apple Calendar
server rejects vCards with empty BDAY property. Another reason is that
keeping the data as small as possible is desirable by itself.

Sending an empty property serves as a hint for the peer that the
property is supported. This is not necessary when storing an item in a
backend. Therefore this commit disables empty properties for all
backends which do not themselves set the m_backendRule Synthesis info
value.

The Evolution backend is not affected by this because it has its own
backend rule. That will be updated separately.
This commit is contained in:
Patrick Ohly 2011-08-26 09:45:04 +02:00
parent da26f29e83
commit c293f51bba
2 changed files with 8 additions and 0 deletions

View File

@ -541,6 +541,9 @@ void SyncSourceSerialize::getSynthesisInfo(SynthesisInfo &info,
{
string type = getMimeType();
// default remote rule (local-storage.xml): suppresses empty properties
info.m_backendRule = "LOCALSTORAGE";
if (type == "text/x-vcard") {
info.m_native = "vCard21";
info.m_fieldlist = "contacts";

View File

@ -0,0 +1,5 @@
<remoterule name="LOCALSTORAGE">
<deviceid>none - this rule is activated by default via its name in MAKE/PARSETEXTWITHPROFILE() macro calls</deviceid>
<!-- storing empty properties only wastes space and causes overhead, suppress them -->
<noemptyproperties>yes</noemptyproperties>
</remoterule>