[caldeveloper-l] iOS 11.03.3 Calendar problem

Cristian Draghici cristian.draghici at gmail.com
Wed Nov 8 22:30:56 PST 2017


I don't pretend to understand how discovery works as it seems to depend
heavily on client and even protocol (I've seen macOS Calendar.app behaving
differently when discovery is performed over HTTPS vs HTTP) but we have had
no issues with iOS 11.x.

The discovery with our server (Axigen) makes use of PROPFIND only (it seems
to find calendar collections by PROPFIND-ing with Depth 1 on the calendar
home set).
I am pasting a trace below. The last PROPFIND in the trace is just a re-run
of the one preceding it with added credentials (triggered by the 401
response) and it's the one that leads to our server listing all the
calendar collections.

What broke for us with iOS 11 is Reminders.app synchronization -> the
client receives a different sync token and ctag but does not perform the
sync for some reason.

--
Cristian Draghici
axigen.com



INPUT >> PROPFIND Calendar/
Accept-Language: en-us
Connection: keep-alive
Content-Length: 181
Content-Type: application/soap+xml; text/xml
Depth: 0
Host: xyz
User-Agent: iOS/11.1 (15B93) accountsd/1.0
<?xml version="1.0" encoding="UTF-8"?>
<A:propfind xmlns:A="DAV:">
  <A:prop>
    <A:current-user-principal/>
    <A:principal-URL/>
    <A:resourcetype/>
  </A:prop>
</A:propfind>

OUTPUT <<
Code: 207
Content-Type: text/xml
<?xml version="1.0" encoding="utf-8" standalone="no" ?>
<A:multistatus xmlns:A="DAV:">
  <A:response>
    <A:href>/Calendar/</A:href>
    <A:propstat>
      <A:prop>
        <A:current-user-principal>
          <A:href>/principals/user/q2 at q1w2z3.ro/</A:href>
        </A:current-user-principal>
        <A:principal-URL>
          <A:href>/principals/user/q2 at q1w2z3.ro/</A:href>
        </A:principal-URL>
        <A:resourcetype>
          <A:collection/>
        </A:resourcetype>
      </A:prop>
      <A:status>HTTP/1.1 200 OK</A:status>
    </A:propstat>
  </A:response>
</A:multistatus>


INPUT >> PROPFIND principals/user/q2 at q1w2z3.ro/
Accept-Language: en-us
Connection: keep-alive
Content-Length: 743
Content-Type: application/soap+xml; text/xml
Depth: 0
Host: xyz
User-Agent: iOS/11.1 (15B93) dataaccessd/1.0
<?xml version="1.0" encoding="UTF-8"?>
<B:propfind xmlns:B="DAV:">
  <B:prop>
    <C:calendar-home-set xmlns:C="urn:ietf:params:xml:ns:caldav"/>
    <C:calendar-user-address-set xmlns:C="urn:ietf:params:xml:ns:caldav"/>
    <B:current-user-principal/>
    <B:displayname/>
    <A:dropbox-home-URL xmlns:A="http://calendarserver.org/ns/"/>
    <A:email-address-set xmlns:A="http://calendarserver.org/ns/"/>
    <A:notification-URL xmlns:A="http://calendarserver.org/ns/"/>
    <B:principal-collection-set/>
    <B:principal-URL/>
    <B:resource-id/>
    <C:schedule-inbox-URL xmlns:C="urn:ietf:params:xml:ns:caldav"/>
    <C:schedule-outbox-URL xmlns:C="urn:ietf:params:xml:ns:caldav"/>
    <B:supported-report-set/>
  </B:prop>
</B:propfind>

OUTPUT <<
Code: 207
Content-Type: text/xml
<?xml version="1.0" encoding="utf-8" standalone="no" ?>
<A:multistatus xmlns:A="DAV:">
  <A:response>
    <A:href>/principals/user/q2 at q1w2z3.ro/</A:href>
    <A:propstat>
      <A:prop>
        <B:calendar-home-set xmlns:B="urn:ietf:params:xml:ns:caldav">
          <A:href>/Calendar/</A:href>
        </B:calendar-home-set>
        <B:calendar-user-address-set
xmlns:B="urn:ietf:params:xml:ns:caldav">
          <A:href>mailto:q2 at q1w2z3.ro</A:href>
        </B:calendar-user-address-set>
        <A:current-user-principal>
          <A:href>/principals/user/q2 at q1w2z3.ro/</A:href>
        </A:current-user-principal>
        <A:displayname>q2 at q1w2z3.ro</A:displayname>
        <C:email-address-set xmlns:C="http://calendarserver.org/ns/">
          <C:email-address>q2 at q1w2z3.ro</C:email-address>
        </C:email-address-set>
        <C:notification-URL xmlns:C="http://calendarserver.org/ns/
">/Calendar/Pisici</C:notification-URL>
        <A:principal-collection-set>
          <A:href>/principals/</A:href>
        </A:principal-collection-set>
        <A:principal-URL>
          <A:href>/principals/user/q2 at q1w2z3.ro/</A:href>
        </A:principal-URL>
        <B:schedule-inbox-URL xmlns:B="urn:ietf:params:xml:ns:caldav">
          <A:href>/Calendar/inbox/</A:href>
        </B:schedule-inbox-URL>
        <B:schedule-outbox-URL xmlns:B="urn:ietf:params:xml:ns:caldav">
          <A:href>/Calendar/outbox/</A:href>
        </B:schedule-outbox-URL>
        <A:supported-report-set>
          <A:supported-report>
            <A:report>
              <C:calendarserver-principal-search xmlns:C="
http://calendarserver.org/ns/"/>
            </A:report>
          </A:supported-report>
          <A:supported-report>
            <A:report>
              <B:calendar-query xmlns:B="urn:ietf:params:xml:ns:caldav"/>
            </A:report>
            <A:report>
              <D:addressbook-query
xmlns:D="urn:ietf:params:xml:ns:carddav"/>
            </A:report>
          </A:supported-report>
          <A:supported-report>
            <A:report>
              <B:calendar-multiget xmlns:B="urn:ietf:params:xml:ns:caldav"/>
            </A:report>
          </A:supported-report>
          <A:supported-report>
            <A:report>
              <B:free-busy-query xmlns:B="urn:ietf:params:xml:ns:caldav"/>
            </A:report>
          </A:supported-report>
          <A:supported-report>
            <A:report>
              <D:addressbook-multiget
xmlns:D="urn:ietf:params:xml:ns:carddav"/>
            </A:report>
          </A:supported-report>
        </A:supported-report-set>
      </A:prop>
      <A:status>HTTP/1.1 200 OK</A:status>
    </A:propstat>
    <A:propstat>
      <A:prop>
        <C:dropbox-home-URL xmlns:C="http://calendarserver.org/ns/"/>
        <A:resource-id/>
      </A:prop>
      <A:status>HTTP/1.1 404 Not Found</A:status>
    </A:propstat>
  </A:response>
</A:multistatus>


INPUT >> PROPFIND Calendar/
Accept-Language: en-us
Connection: keep-alive
Content-Length: 2217
Content-Type: application/soap+xml; text/xml
Depth: 1
Host: xyz
User-Agent: iOS/11.1 (15B93) dataaccessd/1.0

<?xml version="1.0" encoding="UTF-8"?>
<B:propfind xmlns:B="DAV:">
  <B:prop>
    <B:add-member/>
    <A:allowed-sharing-modes xmlns:A="http://calendarserver.org/ns/"/>
    <D:autoprovisioned xmlns:D="http://apple.com/ns/ical/"/>
    <E:bulk-requests xmlns:E="http://me.com/_namespace/"/>
    <C:calendar-alarm xmlns:C="urn:ietf:params:xml:ns:caldav"/>
    <D:calendar-color xmlns:D="http://apple.com/ns/ical/"/>
    <C:calendar-description xmlns:C="urn:ietf:params:xml:ns:caldav"/>
    <C:calendar-free-busy-set xmlns:C="urn:ietf:params:xml:ns:caldav"/>
    <D:calendar-order xmlns:D="http://apple.com/ns/ical/"/>
    <C:calendar-timezone xmlns:C="urn:ietf:params:xml:ns:caldav"/>
    <B:current-user-privilege-set/>
    <C:default-alarm-vevent-date xmlns:C="urn:ietf:params:xml:ns:caldav"/>
    <C:default-alarm-vevent-datetime
xmlns:C="urn:ietf:params:xml:ns:caldav"/>
    <B:displayname/>
    <A:getctag xmlns:A="http://calendarserver.org/ns/"/>
    <A:invite xmlns:A="http://calendarserver.org/ns/"/>
    <D:language-code xmlns:D="http://apple.com/ns/ical/"/>
    <D:location-code xmlns:D="http://apple.com/ns/ical/"/>
    <B:owner/>
    <A:pre-publish-url xmlns:A="http://calendarserver.org/ns/"/>
    <A:publish-url xmlns:A="http://calendarserver.org/ns/"/>
    <A:push-transports xmlns:A="http://calendarserver.org/ns/"/>
    <A:pushkey xmlns:A="http://calendarserver.org/ns/"/>
    <B:quota-available-bytes/>
    <B:quota-used-bytes/>
    <D:refreshrate xmlns:D="http://apple.com/ns/ical/"/>
    <B:resource-id/>
    <B:resourcetype/>
    <C:schedule-calendar-transp xmlns:C="urn:ietf:params:xml:ns:caldav"/>
    <C:schedule-default-calendar-URL
xmlns:C="urn:ietf:params:xml:ns:caldav"/>
    <A:source xmlns:A="http://calendarserver.org/ns/"/>
    <A:subscribed-strip-alarms xmlns:A="http://calendarserver.org/ns/"/>
    <A:subscribed-strip-attachments xmlns:A="http://calendarserver.org/ns/
"/>
    <A:subscribed-strip-todos xmlns:A="http://calendarserver.org/ns/"/>
    <C:supported-calendar-component-set
xmlns:C="urn:ietf:params:xml:ns:caldav"/>
    <C:supported-calendar-component-sets
xmlns:C="urn:ietf:params:xml:ns:caldav"/>
    <B:supported-report-set/>
    <B:sync-token/>
  </B:prop>
</B:propfind>

OUTPUT <<
Code: 401
Content-Type: (null)
<?xml version="1.0" encoding="utf-8" standalone="no" ?>
<A:multistatus xmlns:A="DAV:"/>


INPUT >> PROPFIND Calendar/
Accept-Language: en-us
Connection: keep-alive
Content-Length: 2217
Content-Type: application/soap+xml; text/xml
Depth: 1
Host: xyz
User-Agent: iOS/11.1 (15B93) dataaccessd/1.0
<?xml version="1.0" encoding="UTF-8"?>
<B:propfind xmlns:B="DAV:">


On Wed, Nov 8, 2017 at 10:42 PM, Ken Murchison <murch at fastmailteam.com>
wrote:

> Has anyone had issues adding a new CalDAV account on iOS 11.0.3?
>
> Looking at telemetry on my Cyrus server, it only does a PROPFIND on
> .well-known/caldav to find the current-user-principal and then does an
> OPTIONS on that URL.  That's it.  It never does any other PROPFIND/REPORT
> to discover calendars.
>
> Here is the last request/response that I get:
>
>
> OPTIONS /dav/principals/user/user01/ HTTP/1.1
> Host: 192.168.1.209
> Content-length: 0
> Connection: keep-alive
> Accept: */*
> User-agent: iOS/11.0.3 (15A432) accountsd/1.0
> Accept-language: en-us
> Authorization: Basic ...
> Accept-encoding: gzip, deflate
>
> HTTP/1.1 200 OK
> Date: Thu, 02 Nov 2017 00:06:56 GMT
> Connection: Upgrade
> Upgrade: h2c
> Cache-Control: no-cache
> Server: Cyrus-HTTP/3.1.2-155-ga56b840c7-dirty Cyrus-SASL/2.1.26
> LibXML2.9.4 Nghttp2/1.21.1 OpenSSL/1.1 Zlib/1.2.11 SQLite/3.20.1
> LibiCal/2.99 ICU4C/57.1 Jansson/2.10
> DAV: 1, 2, 3, access-control, extended-mkcol, resource-sharing
> DAV: calendar-access, calendar-auto-schedule
> DAV: calendar-query-extended, calendar-availability,
> calendar-managed-attachments
> DAV: calendarserver-sharing, inbox-availability
> DAV: addressbook
> Allow: OPTIONS, GET, HEAD
> Allow: PROPFIND, REPORT, COPY
> Content-Length: 0
>
>
> I've made all kind of code tweaks on my server in an effort to trigger
> some different behavior with no joy.  I've removed the Server and Upgrade
> headers.  I've merged the multiple DAV and Allow headers into single
> headers.
>
> Any ideas?  Is there some token that iOS is now looking for in the OPTIONS
> response?  Is there some weird switch on iOS that disables calendar
> discovery?
>
>
>
> --
> Ken Murchison
> Cyrus Development Team
> FastMail Pty Ltd
>
> _______________________________________________
> caldeveloper-l mailing list
> caldeveloper-l at lists.calconnect.org
> http://lists.calconnect.org/listinfo.cgi/caldeveloper-l-calconnect.org
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.calconnect.org/pipermail/caldeveloper-l-calconnect.org/attachments/20171109/14769a7e/attachment-0001.html>


More information about the caldeveloper-l mailing list