The project "Citadel server, clients, utilities":
The branch, master has been updated
via 3ab8957204da0d432956a1883c8c1fb36a4826e0 (commit)
from 08e3a557b7d7ca87d420abd9768e391f108e8344 (commit)
- Log -----------------------------------------------------------------
commit 3ab8957204da0d432956a1883c8c1fb36a4826e0
Author: Art Cancro <[email protected]>
Date: Sat Jan 3 23:12:39 2026 -0500
Subject: Standardize URL encoding to RFC 3986 and fix CalDAV collection
discovery
Description: This change hardens the URL encoding logic in libcitadel and
applies it
to the WebDAV/CalDAV PROPFIND handlers to ensure interoperability with strict
clients
(e.g., cadaver, Thunderbird, macOS).
libcitadel: Refactored StrBufUrlescAppend to strictly follow RFC 3986.
Previously, the function allowed unsafe characters like : and @ to remain
unescaped.
The new logic utilizes isalnum() and strictly limits unreserved characters to
ALPHA, DIGIT, -, ., _, and ~.
All other characters, including spaces, colons, and at-symbols, are now
percent-encoded.
webcit-ng: Corrected D:href generation in propfind_collection_metadata.
Switched from StrBufXMLEscAppend to StrBufUrlescAppend for resource paths. This
ensures that
room names containing spaces or special characters are represented as valid
URIs.
Maintained XML escaping for D:displayname to ensure human-readable labels
remain intact in client UI.
Cleaned up unused site_prefix parameters in collection metadata functions.
webcit: Minor code cleanup and typo correction in the template engine's string
appending logic.
Impact: Fixes issues where CalDAV clients could not access or navigate into
rooms with spaces
in their names (e.g., "Sent Items"). Improves the robustness of nested URL
redirects within the
WebCit template engine.
-----------------------------------------------------------------------
Summary of changes:
libcitadel/lib/stringbuf.c | 34 ++++++++++++++++++----------------
webcit-ng/server/room_functions.c | 2 +-
webcit-ng/server/room_propfind.c | 9 ++++-----
webcit-ng/server/webcit.h | 2 +-
webcit/subst.c | 7 ++-----
5 files changed, 26 insertions(+), 28 deletions(-)
--
Citadel server, clients, utilities