Skip to content

fix: native ids are emulated on SOGo - #51

Merged
tobixen merged 2 commits into
mainfrom
fix/native-id-emulated
Nov 6, 2026
Merged

tobixen merged 2 commits into
mainfrom
fix/native-id-emulated

Conversation

@tobixen

@tobixen tobixen commented Nov 6, 2026

Copy link
Copy Markdown
Member

Commit message:

fix: native ids are emulated on SOGo

When the client picks an object's name, creating it must not overwrite
another object already stored under that name.  The PUT carries
If-None-Match: * for that, but SOGo and Zimbra ignore the header, and
identity.client-native-id was still declared full there.

On SOGo it is now emulated: caldav 3.7 checks the name with a GET
before the PUT, which leaves a short window for a race.  caldav only
does that where the server refuses a second object with the same UID
and keeps the names it is given; on other servers ignoring the header
the feature is unsupported.  Zimbra was unsupported already, since it
renames every object to its UID.

Prompt: Continue working on tmp-handover-sogo-fixes-2026-10-23.md [a handover document: make the conformance suite pass on SOGo, by fixing calendaring rather than filing issues]
Followup-Prompt: (answer to a clarifying question) caldav [the check for an object already at the URL goes into caldav, not calendaring]
Followup-Prompt: investigate the local branches that contains (sic) orphaned work.
Followup-Prompt: (...) native-id-emulated sounds like it deserves a PR.  So make one PR combining those two, perhaps?

Assisted-By: Claude Opus 5.5 <noreply@anthropic.com>
Reviewed-by: Tobias Brox <tobias@redpill-linpro.com>

Also piggy-backing: docs(roadmap): tick the shared config file in 1.4

When the client picks an object's name, creating it must not overwrite
another object already stored under that name.  The PUT carries
If-None-Match: * for that, but SOGo and Zimbra ignore the header, and
identity.client-native-id was still declared full there.

On SOGo it is now emulated: caldav 3.7 checks the name with a GET
before the PUT, which leaves a short window for a race.  caldav only
does that where the server refuses a second object with the same UID
and keeps the names it is given; on other servers ignoring the header
the feature is unsupported.  Zimbra was unsupported already, since it
renames every object to its UID.

Prompt: Continue working on tmp-handover-sogo-fixes-2026-10-23.md [a handover document: make the conformance suite pass on SOGo, by fixing calendaring rather than filing issues]
Followup-Prompt: (answer to a clarifying question) caldav [the check for an object already at the URL goes into caldav, not calendaring]
Followup-Prompt: investigate the local branches that contains (sic) orphaned work.
Followup-Prompt: (...) native-id-emulated sounds like it deserves a PR.  So make one PR combining those two, perhaps?

Assisted-By: Claude Opus 5.5 <noreply@anthropic.com>
Reviewed-by: Tobias Brox <tobias@redpill-linpro.com>
caldav reads its configuration through calendaring-config since
3.6.0, which closed caldav issue 786, and the file name follows the
proposal: $XDG_CONFIG_HOME/pycal/calendar.yaml first, caldav's old
paths as fallbacks.  The box still said caldav had yet to adopt it.

python-caldav/caldav#804

Prompt: Please check all the checkboxes that should be checked [in the NLnet-funded roadmaps, while drafting payment requests]

Assisted-By: Claude Opus 5.5 (Claude Code)
Reviewed-by: Tobias Brox <tobias@redpill-linpro.com>
@tobixen
tobixen merged commit 4b30e00 into main Nov 6, 2026
8 checks passed
@tobixen
tobixen deleted the fix/native-id-emulated branch November 6, 2026 19:21
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant