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

Reply via email to