<div dir="ltr">I'm involved with CalDAV rather than CardDAV, which is a different team and a different technology stack, but I'm well aware that this is not really an important difference from the outside... that definitely looks like a bug; I will escalate it to the appropriate people.<div><br></div><div>(Incidentally, if anyone observes any other similar oddities, please get in touch.)</div><div><br></div></div><br><div class="gmail_quote"><div dir="ltr">On Mon, 13 Nov 2017 at 09:10 Bron Gondwana <<a href="mailto:brong@fastmailteam.com">brong@fastmailteam.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><u></u>




<div><div style="font-family:Arial">Hi David,<br></div>
<div style="font-family:Arial"><br></div>
<div style="font-family:Arial">I know this is contacts rather than calendars, but here's a perspective from the other side about why people don't support optional/extended standards in their clients:<br></div>
<div style="font-family:Arial"><br></div>
<div style="font-family:Arial"><<<<<<<< REPORT <a href="https://www.googleapis.com:443/carddav/v1/principals/brongondwana%40gmail.com/lists/default/" target="_blank">https://www.googleapis.com:443/carddav/v1/principals/brongondwana%40gmail.com/lists/default/</a> HTTP/1.1<br></div>
<div style="font-family:Arial"><D:sync-collection xmlns:C='urn:ietf:params:xml:ns:carddav' xmlns:CY='<a href="http://cyrusimap.org/ns/" target="_blank">http://cyrusimap.org/ns/</a>' xmlns:D='DAV:'><D:sync-token/><D:sync-level>1</D:sync-level><D:prop><D:getetag/></D:prop></D:sync-collection><br></div>
<div style="font-family:Arial">>>>>>>>> HTTP/1.1 400 Bad Request<br></div></div><div>
<div style="font-family:Arial"><?xml version="1.0" encoding="UTF-8"?><br></div>
</div><div><div style="font-family:Arial"><d:error xmlns:d="DAV:"/><br></div>
<div style="font-family:Arial"><br></div>
<div style="font-family:Arial">Of course this is carddav rather than caldav, but if you're building a general client library, you quickly wind up chasing the lowest common denominator rather than writing two different codepaths, one for modern/correct servers and one for old servers that only support the base standard or have buggy newer behaviour.<br></div>
<div style="font-family:Arial"><br></div>
<div style="font-family:Arial"><div style="font-family:Arial">Particularly when docs lie:<br></div>
<div style="font-family:Arial"><br></div>
</div>
<div style="font-family:Arial"><a href="https://developers.google.com/google-apps/carddav/" target="_blank">https://developers.google.com/google-apps/carddav/</a><br></div>
<div style="font-family:Arial"><br></div>
<div style="font-family:Arial">Here's what I got back from a PROPFIND:<br></div>
<div style="font-family:Arial"><br></div>
<div style="font-family:Arial"><d:response><br></div>
<div style="font-family:Arial">  <d:href>/carddav/v1/principals/<a href="mailto:brongondwana@gmail.com" target="_blank">brongondwana@gmail.com</a>/lists/default/</d:href><br></div>
<div style="font-family:Arial">  <d:propstat><br></div>
<div style="font-family:Arial">   <d:status>HTTP/1.1 200 OK</d:status><br></div>
<div style="font-family:Arial">   <d:prop><br></div>
<div style="font-family:Arial">    <d:displayname>Address Book</d:displayname><br></div>
<div style="font-family:Arial">    <d:current-user-privilege-set><br></div>
<div style="font-family:Arial">     <d:privilege><br></div>
<div style="font-family:Arial">      <d:read/><br></div>
<div style="font-family:Arial">     </d:privilege><br></div>
<div style="font-family:Arial">     <d:privilege><br></div>
<div style="font-family:Arial">      <d:read-acl/><br></div>
<div style="font-family:Arial">     </d:privilege><br></div>
<div style="font-family:Arial">     <d:privilege><br></div>
<div style="font-family:Arial">      <d:read-current-user-privilege-set/><br></div>
<div style="font-family:Arial">     </d:privilege><br></div>
<div style="font-family:Arial">     <d:privilege><br></div>
<div style="font-family:Arial">      <d:unlock/><br></div>
<div style="font-family:Arial">     </d:privilege><br></div>
<div style="font-family:Arial">     <d:privilege><br></div>
<div style="font-family:Arial">      <d:write/><br></div>
<div style="font-family:Arial">     </d:privilege><br></div>
<div style="font-family:Arial">     <d:privilege><br></div>
<div style="font-family:Arial">      <d:write-acl/><br></div>
<div style="font-family:Arial">     </d:privilege><br></div>
<div style="font-family:Arial">    </d:current-user-privilege-set><br></div>
<div style="font-family:Arial">    <d:supported-report-set><br></div>
<div style="font-family:Arial">     <d:supported-report><br></div>
<div style="font-family:Arial">      <d:report><br></div>
<div style="font-family:Arial">       <d:principal-search-property-set/><br></div>
<div style="font-family:Arial">      </d:report><br></div>
<div style="font-family:Arial">     </d:supported-report><br></div>
<div style="font-family:Arial">     <d:supported-report><br></div>
<div style="font-family:Arial">      <d:report><br></div>
<div style="font-family:Arial">       <card:addressbook-query/><br></div>
<div style="font-family:Arial">      </d:report><br></div>
<div style="font-family:Arial">     </d:supported-report><br></div>
<div style="font-family:Arial">     <d:supported-report><br></div>
<div style="font-family:Arial">      <d:report><br></div>
<div style="font-family:Arial">       <d:expand-property/><br></div>
<div style="font-family:Arial">      </d:report><br></div>
<div style="font-family:Arial">     </d:supported-report><br></div>
<div style="font-family:Arial">     <d:supported-report><br></div>
<div style="font-family:Arial">      <d:report><br></div>
<div style="font-family:Arial">       <d:principal-property-search/><br></div>
<div style="font-family:Arial">      </d:report><br></div>
<div style="font-family:Arial">     </d:supported-report><br></div>
<div style="font-family:Arial">     <d:supported-report><br></div>
<div style="font-family:Arial">      <d:report><br></div>
<div style="font-family:Arial">       <d:acl-principal-prop-set/><br></div>
<div style="font-family:Arial">      </d:report><br></div>
<div style="font-family:Arial">     </d:supported-report><br></div>
<div style="font-family:Arial">     <d:supported-report><br></div>
<div style="font-family:Arial">      <d:report><br></div>
<div style="font-family:Arial">       <card:addressbook-multiget/><br></div>
<div style="font-family:Arial">      </d:report><br></div>
<div style="font-family:Arial">     </d:supported-report><br></div>
<div style="font-family:Arial">     <d:supported-report><br></div>
<div style="font-family:Arial">      <d:report><br></div>
<div style="font-family:Arial">       <d:principal-match/><br></div>
<div style="font-family:Arial">      </d:report><br></div>
<div style="font-family:Arial">     </d:supported-report><br></div>
<div style="font-family:Arial">     <d:supported-report><br></div>
<div style="font-family:Arial">      <d:report><br></div>
<div style="font-family:Arial">       <d:sync-collection/><br></div>
<div style="font-family:Arial">      </d:report><br></div>
<div style="font-family:Arial">     </d:supported-report><br></div>
<div style="font-family:Arial">    </d:supported-report-set><br></div>
<div style="font-family:Arial">    <d:resourcetype><br></div>
<div style="font-family:Arial">     <d:collection/><br></div>
<div style="font-family:Arial">     <card:addressbook/><br></div>
<div style="font-family:Arial">    </d:resourcetype><br></div>
<div style="font-family:Arial">   </d:prop><br></div>
<div style="font-family:Arial">  </d:propstat><br></div>
<div style="font-family:Arial">  <d:propstat><br></div>
<div style="font-family:Arial">   <d:status>HTTP/1.1 404 Not Found</d:status><br></div>
<div style="font-family:Arial">   <d:prop><br></div>
<div style="font-family:Arial">    <d:acl/><br></div>
<div style="font-family:Arial">    <d:sync-token/><br></div>
<div style="font-family:Arial">   </d:prop><br></div>
<div style="font-family:Arial">  </d:propstat><br></div>
<div style="font-family:Arial"></d:response><br></div>
<div style="font-family:Arial"></d:multistatus><br></div>
<div style="font-family:Arial"><br></div>
<div style="font-family:Arial">RFC6578 is pretty clear:<br></div>
<div style="font-family:Arial"><br></div>
<div style="font-family:Arial"><span class="m_-8576467439360220986font" style="font-family:menlo,consolas,monospace,sans-serif">3.2.  DAV:sync-collection Report<br></span></div>
<div style="font-family:Arial"><br></div>
<pre class="m_-8576467439360220986newpage">   If the DAV:sync-collection report is implemented by a WebDAV server,
   then the server MUST list the report in the
   "DAV:supported-report-set" property on any collection that supports
   synchronization.<br></pre><pre class="m_-8576467439360220986newpage"><br></pre>The server claims to support sync-collection, but it actually doesn't.<br><br>It doesn't take dealing with many bogus servers like this and you just give up on the more efficient method.<br><br>Do you have any contacts in the contacts team you could pass this on to?  I guess I'll make my code check for sync-token existing as well as for the standard supported-report-set.<br><br>Cheers,<br><br><div style="font-family:Arial">Bron.<br></div></div><div>
<div><br></div>
<div>On Wed, 8 Nov 2017, at 03:38, David Given wrote:<br></div>
</div><div><blockquote type="cite"><div dir="ltr"><div style="font-family:Arial">Hello everybody,<br></div>
<div><br></div>
<div>I have an RFC question I'd appreciate some feedback on...<br></div>
<div><br></div>
<div>We have a situation where a Calendar client is trying to get the etags of every event in an enormous calendar in a single query. Naturally, this isn't working.<br></div>
<div><br></div>
<div>They're doing this:<br></div>
<div><br></div>
<div>PROPFIND /caldav/v2/$USERNAME/events<br></div>
<div><div><?xml version="1.0" encoding="UTF-8"?><br></div>
<div><A:propfind xmlns:A="DAV:"><br></div>
<div>  <A:prop><br></div>
<div>    <A:getcontenttype/><br></div>
<div>    <A:getetag/><br></div>
<div>  </A:prop><br></div>
<div></A:propfind><br></div>
</div>
<div><br></div>
<div>As you can see, they're not asking for a sync token.<br></div>
<div><br></div>
<div>RFC6578 section 3.6 provides a mechanism where clients can ask for paginated responses, where the server returns partial data with a 507 status code, and a new sync token so they can continue the query. It is a, however, a bit ambiguous as to whether this is supported for methods other than REPORT. The interwebs suggest it is (but I'd appreciate a clarification here).<br></div>
<div><br></div>
<div>My question is. however:<br></div>
<div><br></div>
<div>Is it permissable to return a sync-token (and expect the client to honour it) <i>even if the client's original query didn't ask for it</i>?<br></div>
<div><br></div>
<div>I'm hoping the answer is going to be yes, but if it's no --- any suggestions?<br></div>
<div><br></div>
<div>Thanks!<br></div>
<div><br></div>
<div>David Given<br></div>
<div><a href="mailto:dtrg@google.com" target="_blank">dtrg@google.com</a><br></div>
<div><br></div>
</div>
</blockquote></div><div><blockquote type="cite"><div><u>_______________________________________________</u><br></div>
<div>caldeveloper-l mailing list<br></div>
<div><a href="mailto:caldeveloper-l@lists.calconnect.org" target="_blank">caldeveloper-l@lists.calconnect.org</a><br></div>
<div><a href="http://lists.calconnect.org/listinfo.cgi/caldeveloper-l-calconnect.org" target="_blank">http://lists.calconnect.org/listinfo.cgi/caldeveloper-l-calconnect.org</a><br></div>
</blockquote></div><div><blockquote type="cite"></blockquote><div style="font-family:Arial"><br></div>
<div id="m_-8576467439360220986sig56629417"><div class="m_-8576467439360220986signature">--<br></div>
<div class="m_-8576467439360220986signature">  Bron Gondwana, CEO, FastMail Pty Ltd<br></div>
<div class="m_-8576467439360220986signature">  <a href="mailto:brong@fastmailteam.com" target="_blank">brong@fastmailteam.com</a><br></div>
<div class="m_-8576467439360220986signature"><br></div>
</div>
<div style="font-family:Arial"><br></div>
</div>

_______________________________________________<br>
caldeveloper-l mailing list<br>
<a href="mailto:caldeveloper-l@lists.calconnect.org" target="_blank">caldeveloper-l@lists.calconnect.org</a><br>
<a href="http://lists.calconnect.org/listinfo.cgi/caldeveloper-l-calconnect.org" rel="noreferrer" target="_blank">http://lists.calconnect.org/listinfo.cgi/caldeveloper-l-calconnect.org</a><br>
</blockquote></div>