Fast and extensible multi-platform HTTP/1-2-3 web server with automatic HTTPS
Mirrored from https://github.com/Slazee/caddy.git
Synced Nov 10, 23:45 UTC
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