fix(caldav): correct macOS client detection for schedule-outbox suppression#390
Open
clemenstyp wants to merge 1 commit into
Open
fix(caldav): correct macOS client detection for schedule-outbox suppression#390clemenstyp wants to merge 1 commit into
clemenstyp wants to merge 1 commit into
Conversation
Added additional user agent checks for macOS reminder app.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
SOGo suppresses the
schedule-outboxresourcetype on the user's personalcalendar collection for Apple clients, since macOS/iOS clients reject a
collection that advertises itself as both a regular calendar collection and a
schedule-outboxat the same time (this is invalid per RFC 4791 / RFC 6638and causes the collection to be ignored by the client).
The detection relied on the
User-Agentheader containing bothmacOSanddataaccessd. Starting with macOS 26 ("OS X 26"), the Reminders app no longeruses
dataaccessdbut reports a different agent string, e.g.:As a result, the macOS check no longer matches, the
schedule-outboxelementis added to the personal collection, and the affected list (e.g. the user's
default "Privat"/personal reminders list) no longer shows up in the macOS
Reminders app. Only lists without the
schedule-outboxmarker remain visible.Root cause
The User-Agent heuristic only accounted for the legacy
dataaccessdprocessname and did not cover newer Apple client processes such as
remindd.Fix
Broaden the macOS client detection so that requests coming from current Apple
clients are recognized regardless of the specific process name. Instead of
matching on
dataaccessdonly, the check now also matches other known Appleclient agents (e.g.
remindd) / relies on themacOS/token combined with aknown Apple client component.
Steps to reproduce
/SOGo/dav/<user>/Calendar/.<D:resourcetype>contains<schedule-outbox xmlns="urn:ietf:params:xml:ns:caldav"/>in addition to<calendar/>.other lists (without the outbox marker) do.
Before / After
Observed User-Agent from macOS 26 Reminders:
schedule-outboxadded → list hidden.schedule-outboxomitted → list visible.Notes
There is no existing issue for this; I was unable to open one in the Mantis
bug tracker due to lacking permissions. Happy to adjust the detection approach
(e.g. explicit process allow-list vs. broader matching) based on maintainer
preference.