caddy/internal
Kévin Dunglas b426776cc7
filesystems: forward optional fs interfaces (#8388)
wrapperFs embeds fs.FS, which hides the StatFS, ReadDirFS and
ReadFileFS methods of the wrapped filesystem. fs.Stat on
DefaultFileSystem did open, fstat and close instead of one stat,
for every fs.Stat in the file matcher and file_server, including the
literal-path case of fs.Glob.

GlobFS is not forwarded: OsFS.Glob uses filepath.Glob, which differs
from fs.Glob (Lstat for literal patterns, OS path separators).

Stat now succeeds on files and directories that cannot be opened, and
no longer blocks on FIFOs. The file matcher matches unreadable files
instead of skipping them, file_server picks an unreadable index file
(403) instead of trying the next one, and browse lists symlinks to
unreadable directories as directories.

BenchmarkFileMatcher, Apple M5 Pro, macOS, count=10:

                  before    after     delta
existing file     18.90µs   1.570µs   -91.70%
front controller  20.85µs   3.040µs   -85.42%

existing file     936 B     728 B     22 -> 18 allocs
front controller  1312 B    1520 B    35 -> 33 allocs
2026-11-09 07:45:31 +10:00
..
filesystems filesystems: forward optional fs interfaces (#8388) 2026-11-09 07:45:31 +10:00
headercheck caddyhttp: optimise header access and fix encoding negotiation (#8025) 2026-10-29 23:19:50 +10:00
metrics
systemd core: resolve systemd socket descriptors by name (#8123) 2026-11-03 08:16:26 +00:00
testmocks
bindcap_linux.go core: Retry privileged binds on EACCES instead of checking port < 1024 (#8253) 2026-10-19 19:19:28 +10:00
bindcap_linux_test.go core: Retry privileged binds on EACCES instead of checking port < 1024 (#8253) 2026-10-19 19:19:28 +10:00
bindcap_other.go core: Raise CAP_NET_BIND_SERVICE when binding privileged ports (#8102) 2026-10-03 19:10:02 +10:00
logbuffer.go logging: Adjustments to BufferedLog to keep logs in the correct order (#7257) 2025-09-15 09:29:50 -06:00
logmarshalers.go admin: Redact sensitive request headers in API logs (#7578) 2026-04-17 14:56:42 -06:00
logs.go internal: fix MaxSizeSubjectsListForLog off-by-one when maxToDisplay is 0 (#7970) 2026-09-26 18:51:36 +10:00
logs_test.go internal: fix MaxSizeSubjectsListForLog off-by-one when maxToDisplay is 0 (#7970) 2026-09-26 18:51:36 +10:00
ranges.go
sockets.go