DAVx5 client shows an additional collection/calendar

DAVx5 client loads Collections/Calendars using these endpoints:

  • https://<host>/dav/projects
  • https://<host>/dav/projects/2
  • https://<host>/dav/projects/3
  • etc

While projects/2 and projects/3 are valid projects, it seems projects path is just a root folder (parent project). Then DAVx5 tries to sync https://<host>/dav/projects and it gets 404 from this path.
Is it a bug in Vikunja that it reports this path as a valid calendar/collection or is it a bug in DAVx5 client?

It’s probably a big in Vikunja. I’ll take a look.

Do you know by chance what the response on /projects should be?

I don’t know go or Caldav protocol yet. But my feeling is that /projects endpoint is returned in the list of calendars when DAVx5 initially tries to get a list of calendars. Then it thinks that a calendar available under this endpoint and tries to load its content. I guess it shouldn’t appear in the original list. But I may say nonsense. It is just my guess.

Below are the logs from DAVx5. Probably they may explain or not if the problem in DAVx5 or Vikunja.

DAVx5 Logs
2024-01-29 22:31:29 37298 [servicedetection.RefreshCollectionsWorker] Refreshing caldav collections of service #Service(id=1, accountName=<account_name>, type=caldav, principal=https://<host>/dav/principals/<account_name>/)
2024-01-29 22:31:29 37298 [settings.AccountSettings] Account <account_name> has version 14, current version: 14
2024-01-29 22:31:29 37298 [settings.SettingsManager] Looking up setting proxy_type
2024-01-29 22:31:29 37298 [settings.SettingsManager] SharedPreferencesProvider: proxy_type = null
2024-01-29 22:31:29 37298 [settings.SettingsManager] DefaultsProvider: proxy_type = -1
2024-01-29 22:31:29 37298 [settings.SettingsManager] Looked up setting proxy_type -> -1
2024-01-29 22:31:29 37298 [settings.SettingsManager] Looking up setting distrust_system_certs
2024-01-29 22:31:29 37298 [settings.SettingsManager] SharedPreferencesProvider: distrust_system_certs = false
2024-01-29 22:31:29 37298 [settings.SettingsManager] Looked up setting distrust_system_certs -> false
2024-01-29 22:31:29 37298 [servicedetection.RefreshCollectionsWorker] Querying principal https://<host>/dav/principals/<account_name>/ for home sets
2024-01-29 22:31:29 37298 [servicedetection.RefreshCollectionsWorker] Discovering homesets of https://<host>/dav/principals/<account_name>/
2024-01-29 22:31:29 37298 [network.HttpClient] --> PROPFIND https://<host>/dav/principals/<account_name>/ http/1.1
2024-01-29 22:31:29 37298 [network.HttpClient] Depth: 0
2024-01-29 22:31:29 37298 [network.HttpClient] User-Agent: DAVx5/4.3.12.1-ose (2023/12/25; dav4jvm; okhttp/4.12.0) Android/11
2024-01-29 22:31:29 37298 [network.HttpClient] Accept-Language: en-IE, en;q=0.7, *;q=0.5
2024-01-29 22:31:29 37298 [network.HttpClient] Content-Type: application/xml; charset=utf-8
2024-01-29 22:31:29 37298 [network.HttpClient] Content-Length: 391
2024-01-29 22:31:29 37298 [network.HttpClient] Host: <host>
2024-01-29 22:31:29 37298 [network.HttpClient] Connection: Keep-Alive
2024-01-29 22:31:29 37298 [network.HttpClient] Accept-Encoding: gzip
2024-01-29 22:31:29 37298 [network.HttpClient] 
2024-01-29 22:31:29 37298 [network.HttpClient] <?xml version='1.0' encoding='UTF-8' ?><propfind xmlns="DAV:" xmlns:CAL="urn:ietf:params:xml:ns:caldav" xmlns:CARD="urn:ietf:params:xml:ns:carddav"><prop><displayname /><CAL:calendar-home-set /><n0:calendar-proxy-read-for xmlns:n0="http://calendarserver.org/ns/" /><n1:calendar-proxy-write-for xmlns:n1="http://calendarserver.org/ns/" /><group-membership /><resourcetype /></prop></propfind>
2024-01-29 22:31:29 37298 [network.HttpClient] --> END PROPFIND (391-byte body)
2024-01-29 22:31:29 37298 [at.bitfire.dav4jvm.BasicDigestAuthHandler] Trying Basic auth preemptively
2024-01-29 22:31:29 37298 [at.bitfire.dav4jvm.BasicDigestAuthHandler] Adding Basic authorization header for https://<host>/dav/principals/<account_name>/
2024-01-29 22:31:30 37298 [network.HttpClient] <-- 207 Multi-Status https://<host>/dav/principals/<account_name>/ (669ms)
2024-01-29 22:31:30 37298 [network.HttpClient] Server: nginx
2024-01-29 22:31:30 37298 [network.HttpClient] Date: Mon, 29 Jan 2024 22:31:30 GMT
2024-01-29 22:31:30 37298 [network.HttpClient] Content-Type: text/xml; charset=utf-8
2024-01-29 22:31:30 37298 [network.HttpClient] Content-Length: 636
2024-01-29 22:31:30 37298 [network.HttpClient] Connection: keep-alive
2024-01-29 22:31:30 37298 [network.HttpClient] 
2024-01-29 22:31:30 37298 [network.HttpClient] <?xml version="1.0" encoding="UTF-8"?><D:multistatus xmlns:D="DAV:" xmlns:C="urn:ietf:params:xml:ns:caldav" xmlns:CS="http://calendarserver.org/ns/"><D:response><D:href>/dav/projects</D:href><D:propstat><D:prop><D:displayname>projects</D:displayname><C:calendar-home-set><D:href>/dav/projects</D:href></C:calendar-home-set><D:resourcetype><D:collection/><C:calendar/></D:resourcetype></D:prop><D:status>HTTP/1.1 200 OK</D:status></D:propstat><D:propstat><D:prop><CS:calendar-proxy-read-for/><CS:calendar-proxy-write-for/><D:group-membership/></D:prop><D:status>HTTP/1.1 404 Not Found</D:status></D:propstat></D:response></D:multistatus>
2024-01-29 22:31:30 37298 [network.HttpClient] <-- END HTTP (636-byte body)
2024-01-29 22:31:30 37298 [servicedetection.RefreshCollectionsWorker] Listing home set https://<host>/dav/projects/
2024-01-29 22:31:30 37298 [network.HttpClient] --> PROPFIND https://<host>/dav/projects/ http/1.1
2024-01-29 22:31:30 37298 [network.HttpClient] Depth: 1
2024-01-29 22:31:30 37298 [network.HttpClient] User-Agent: DAVx5/4.3.12.1-ose (2023/12/25; dav4jvm; okhttp/4.12.0) Android/11
2024-01-29 22:31:30 37298 [network.HttpClient] Accept-Language: en-IE, en;q=0.7, *;q=0.5
2024-01-29 22:31:30 37298 [network.HttpClient] Content-Type: application/xml; charset=utf-8
2024-01-29 22:31:30 37298 [network.HttpClient] Content-Length: 485
2024-01-29 22:31:30 37298 [network.HttpClient] Host: <host>
2024-01-29 22:31:30 37298 [network.HttpClient] Connection: Keep-Alive
2024-01-29 22:31:30 37298 [network.HttpClient] Accept-Encoding: gzip
2024-01-29 22:31:30 37298 [network.HttpClient] 
2024-01-29 22:31:30 37298 [network.HttpClient] <?xml version='1.0' encoding='UTF-8' ?><propfind xmlns="DAV:" xmlns:CAL="urn:ietf:params:xml:ns:caldav" xmlns:CARD="urn:ietf:params:xml:ns:carddav"><prop><resourcetype /><current-user-privilege-set /><displayname /><owner /><CARD:addressbook-description /><CARD:supported-address-data /><CAL:calendar-description /><n0:calendar-color xmlns:n0="http://apple.com/ns/ical/" /><CAL:supported-calendar-component-set /><n1:source xmlns:n1="http://calendarserver.org/ns/" /></prop></propfind>
2024-01-29 22:31:30 37298 [network.HttpClient] --> END PROPFIND (485-byte body)
2024-01-29 22:31:30 37298 [at.bitfire.dav4jvm.BasicDigestAuthHandler] Adding Basic authorization header for https://<host>/dav/projects/
2024-01-29 22:31:30 37298 [network.HttpClient] <-- 207 Multi-Status https://<host>/dav/projects/ (368ms)
2024-01-29 22:31:30 37298 [network.HttpClient] Server: nginx
2024-01-29 22:31:30 37298 [network.HttpClient] Date: Mon, 29 Jan 2024 22:31:31 GMT
2024-01-29 22:31:30 37298 [network.HttpClient] Content-Type: text/xml; charset=utf-8
2024-01-29 22:31:30 37298 [network.HttpClient] Content-Length: 1959
2024-01-29 22:31:30 37298 [network.HttpClient] Connection: keep-alive
2024-01-29 22:31:30 37298 [network.HttpClient] 
2024-01-29 22:31:30 37298 [network.HttpClient] <?xml version="1.0" encoding="UTF-8"?><D:multistatus xmlns:D="DAV:" xmlns:C="urn:ietf:params:xml:ns:caldav" xmlns:CS="http://calendarserver.org/ns/"><D:response><D:href>/dav/projects/2</D:href><D:propstat><D:prop><D:resourcetype><D:collection/><C:calendar/></D:resourcetype><D:displayname>School</D:displayname><D:owner>/dav/</D:owner><C:supported-calendar-component-set><C:comp name="VCALENDAR"/><C:comp name="VTODO"/></C:supported-calendar-component-set></D:prop><D:status>HTTP/1.1 200 OK</D:status></D:propstat><D:propstat><D:prop><D:current-user-privilege-set/><addressbook-description/><supported-address-data/><C:calendar-description/><calendar-color/><CS:source/></D:prop><D:status>HTTP/1.1 404 Not Found</D:status></D:propstat></D:response><D:response><D:href>/dav/projects/3</D:href><D:propstat><D:prop><D:resourcetype><D:collection/><C:calendar/></D:resourcetype><D:displayname>Home</D:displayname><D:owner>/dav/</D:owner><C:supported-calendar-component-set><C:comp name="VCALENDAR"/><C:comp name="VTODO"/></C:supported-calendar-component-set></D:prop><D:status>HTTP/1.1 200 OK</D:status></D:propstat><D:propstat><D:prop><D:current-user-privilege-set/><addressbook-description/><supported-address-data/><C:calendar-description/><calendar-color/><CS:source/></D:prop><D:status>HTTP/1.1 404 Not Found</D:status></D:propstat></D:response><D:response><D:href>/dav/projects/4</D:href><D:propstat><D:prop><D:resourcetype><D:collection/><C:calendar/></D:resourcetype><D:displayname>todoom</D:displayname><D:owner>/dav/</D:owner><C:supported-calendar-component-set><C:comp name="VCALENDAR"/><C:comp name="VTODO"/></C:supported-calendar-component-set></D:prop><D:status>HTTP/1.1 200 OK</D:status></D:propstat><D:propstat><D:prop><D:current-user-privilege-set/><addressbook-description/><supported-address-data/><C:calendar-description/><calendar-color/><CS:source/></D:prop><D:status>HTTP/1.1 404 Not Found</D:status></D:propstat></D:response></D:multistatus>
2024-01-29 22:31:30 37298 [network.HttpClient] <-- END HTTP (1959-byte body)
2024-01-29 22:31:30 37298 [at.bitfire.dav4jvm.Property] Ignoring unknown property :addressbook-description
2024-01-29 22:31:30 37298 [at.bitfire.dav4jvm.Property] Ignoring unknown property :supported-address-data
2024-01-29 22:31:30 37298 [at.bitfire.dav4jvm.Property] Ignoring unknown property :calendar-color
2024-01-29 22:31:30 37298 [settings.SettingsManager] Looking up setting preselect_collections
2024-01-29 22:31:30 37298 [settings.SettingsManager] SharedPreferencesProvider: preselect_collections = null
2024-01-29 22:31:30 37298 [settings.SettingsManager] DefaultsProvider: preselect_collections = 0
2024-01-29 22:31:30 37298 [settings.SettingsManager] Looked up setting preselect_collections -> 0
2024-01-29 22:31:30 37298 [servicedetection.RefreshCollectionsWorker] Found collection
	PARAMETER #0 = Collection(id=0, serviceId=1, homeSetId=1, ownerId=null, type=CALENDAR, url=https://<host>/dav/projects/2/, privWriteContent=true, privUnbind=true, forceReadOnly=false, displayName=School, description=null, color=null, timezone=null, supportsVEVENT=false, supportsVTODO=true, supportsVJOURNAL=false, source=null, sync=false)
2024-01-29 22:31:30 37298 [at.bitfire.dav4jvm.Property] Ignoring unknown property :addressbook-description
2024-01-29 22:31:30 37298 [at.bitfire.dav4jvm.Property] Ignoring unknown property :supported-address-data
2024-01-29 22:31:30 37298 [at.bitfire.dav4jvm.Property] Ignoring unknown property :calendar-color
2024-01-29 22:31:30 2 [ui.account.CollectionsFragment] Creating new pager onlyPersonal=false
2024-01-29 22:31:30 37298 [settings.SettingsManager] Looking up setting preselect_collections
2024-01-29 22:31:30 37298 [settings.SettingsManager] SharedPreferencesProvider: preselect_collections = null
2024-01-29 22:31:30 37298 [settings.SettingsManager] DefaultsProvider: preselect_collections = 0
2024-01-29 22:31:30 37298 [settings.SettingsManager] Looked up setting preselect_collections -> 0
2024-01-29 22:31:30 37298 [servicedetection.RefreshCollectionsWorker] Found collection
	PARAMETER #0 = Collection(id=0, serviceId=1, homeSetId=1, ownerId=null, type=CALENDAR, url=https://<host>/dav/projects/3/, privWriteContent=true, privUnbind=true, forceReadOnly=false, displayName=Home, description=null, color=null, timezone=null, supportsVEVENT=false, supportsVTODO=true, supportsVJOURNAL=false, source=null, sync=false)
2024-01-29 22:31:30 37298 [at.bitfire.dav4jvm.Property] Ignoring unknown property :addressbook-description
2024-01-29 22:31:30 37298 [at.bitfire.dav4jvm.Property] Ignoring unknown property :supported-address-data
2024-01-29 22:31:30 37298 [at.bitfire.dav4jvm.Property] Ignoring unknown property :calendar-color
2024-01-29 22:31:30 37298 [settings.SettingsManager] Looking up setting preselect_collections
2024-01-29 22:31:30 2 [ui.account.CollectionsFragment] Creating new pager onlyPersonal=false
2024-01-29 22:31:30 37298 [settings.SettingsManager] SharedPreferencesProvider: preselect_collections = null
2024-01-29 22:31:30 37298 [settings.SettingsManager] DefaultsProvider: preselect_collections = 0
2024-01-29 22:31:30 37298 [settings.SettingsManager] Looked up setting preselect_collections -> 0
2024-01-29 22:31:30 37298 [servicedetection.RefreshCollectionsWorker] Found collection
	PARAMETER #0 = Collection(id=0, serviceId=1, homeSetId=1, ownerId=null, type=CALENDAR, url=https://<host>/dav/projects/4/, privWriteContent=true, privUnbind=true, forceReadOnly=false, displayName=todoom, description=null, color=null, timezone=null, supportsVEVENT=false, supportsVTODO=true, supportsVJOURNAL=false, source=null, sync=false)
2024-01-29 22:31:30 37298 [network.HttpClient] --> PROPFIND https://<host>/dav/projects/ http/1.1
2024-01-29 22:31:30 37298 [network.HttpClient] Depth: 0
2024-01-29 22:31:30 37298 [network.HttpClient] User-Agent: DAVx5/4.3.12.1-ose (2023/12/25; dav4jvm; okhttp/4.12.0) Android/11
2024-01-29 22:31:30 2 [ui.account.CollectionsFragment] Creating new pager onlyPersonal=false
2024-01-29 22:31:30 37298 [network.HttpClient] Accept-Language: en-IE, en;q=0.7, *;q=0.5
2024-01-29 22:31:30 37298 [network.HttpClient] Content-Type: application/xml; charset=utf-8
2024-01-29 22:31:30 37298 [network.HttpClient] Content-Length: 485
2024-01-29 22:31:30 37298 [network.HttpClient] Host: <host>
2024-01-29 22:31:30 37298 [network.HttpClient] Connection: Keep-Alive
2024-01-29 22:31:30 37298 [network.HttpClient] Accept-Encoding: gzip
2024-01-29 22:31:31 37298 [network.HttpClient] 
2024-01-29 22:31:31 37298 [network.HttpClient] <?xml version='1.0' encoding='UTF-8' ?><propfind xmlns="DAV:" xmlns:CAL="urn:ietf:params:xml:ns:caldav" xmlns:CARD="urn:ietf:params:xml:ns:carddav"><prop><resourcetype /><current-user-privilege-set /><displayname /><owner /><CARD:addressbook-description /><CARD:supported-address-data /><CAL:calendar-description /><n0:calendar-color xmlns:n0="http://apple.com/ns/ical/" /><CAL:supported-calendar-component-set /><n1:source xmlns:n1="http://calendarserver.org/ns/" /></prop></propfind>
2024-01-29 22:31:31 37298 [network.HttpClient] --> END PROPFIND (485-byte body)
2024-01-29 22:31:31 37298 [at.bitfire.dav4jvm.BasicDigestAuthHandler] Adding Basic authorization header for https://<host>/dav/projects/
2024-01-29 22:31:31 37298 [network.HttpClient] <-- 207 Multi-Status https://<host>/dav/projects/ (415ms)
2024-01-29 22:31:31 37298 [network.HttpClient] Server: nginx
2024-01-29 22:31:31 37298 [network.HttpClient] Date: Mon, 29 Jan 2024 22:31:31 GMT
2024-01-29 22:31:31 37298 [network.HttpClient] Content-Type: text/xml; charset=utf-8
2024-01-29 22:31:31 37298 [network.HttpClient] Content-Length: 1959
2024-01-29 22:31:31 37298 [network.HttpClient] Connection: keep-alive
2024-01-29 22:31:31 37298 [network.HttpClient] 
2024-01-29 22:31:31 37298 [network.HttpClient] <?xml version="1.0" encoding="UTF-8"?><D:multistatus xmlns:D="DAV:" xmlns:C="urn:ietf:params:xml:ns:caldav" xmlns:CS="http://calendarserver.org/ns/"><D:response><D:href>/dav/projects/2</D:href><D:propstat><D:prop><D:resourcetype><D:collection/><C:calendar/></D:resourcetype><D:displayname>School</D:displayname><D:owner>/dav/</D:owner><C:supported-calendar-component-set><C:comp name="VCALENDAR"/><C:comp name="VTODO"/></C:supported-calendar-component-set></D:prop><D:status>HTTP/1.1 200 OK</D:status></D:propstat><D:propstat><D:prop><D:current-user-privilege-set/><addressbook-description/><supported-address-data/><C:calendar-description/><calendar-color/><CS:source/></D:prop><D:status>HTTP/1.1 404 Not Found</D:status></D:propstat></D:response><D:response><D:href>/dav/projects/3</D:href><D:propstat><D:prop><D:resourcetype><D:collection/><C:calendar/></D:resourcetype><D:displayname>Home</D:displayname><D:owner>/dav/</D:owner><C:supported-calendar-component-set><C:comp name="VCALENDAR"/><C:comp name="VTODO"/></C:supported-calendar-component-set></D:prop><D:status>HTTP/1.1 200 OK</D:status></D:propstat><D:propstat><D:prop><D:current-user-privilege-set/><addressbook-description/><supported-address-data/><C:calendar-description/><calendar-color/><CS:source/></D:prop><D:status>HTTP/1.1 404 Not Found</D:status></D:propstat></D:response><D:response><D:href>/dav/projects/4</D:href><D:propstat><D:prop><D:resourcetype><D:collection/><C:calendar/></D:resourcetype><D:displayname>todoom</D:displayname><D:owner>/dav/</D:owner><C:supported-calendar-component-set><C:comp name="VCALENDAR"/><C:comp name="VTODO"/></C:supported-calendar-component-set></D:prop><D:status>HTTP/1.1 200 OK</D:status></D:propstat><D:propstat><D:prop><D:current-user-privilege-set/><addressbook-description/><supported-address-data/><C:calendar-description/><calendar-color/><CS:source/></D:prop><D:status>HTTP/1.1 404 Not Found</D:status></D:propstat></D:response></D:multistatus>
2024-01-29 22:31:31 37298 [network.HttpClient] <-- END HTTP (1959-byte body)
1 Like