From 33f60da9f2d6edc5de550275f043c4262d23f6ca Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Abdussamet=20Ko=C3=A7ak?= Date: Sat, 8 Oct 2022 21:56:35 +0300 Subject: fileserver: stop listing dir when request context is cancelled (#5131) Prevents caddy from performing disk IO needlessly when the request is cancelled before the listing is finished. Closes #5129 --- modules/caddyhttp/fileserver/browsetplcontext.go | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) (limited to 'modules/caddyhttp/fileserver/browsetplcontext.go') diff --git a/modules/caddyhttp/fileserver/browsetplcontext.go b/modules/caddyhttp/fileserver/browsetplcontext.go index cd24fc2..172fa50 100644 --- a/modules/caddyhttp/fileserver/browsetplcontext.go +++ b/modules/caddyhttp/fileserver/browsetplcontext.go @@ -15,6 +15,7 @@ package fileserver import ( + "context" "io/fs" "net/url" "os" @@ -30,13 +31,17 @@ import ( "go.uber.org/zap" ) -func (fsrv *FileServer) directoryListing(entries []fs.DirEntry, canGoUp bool, root, urlPath string, repl *caddy.Replacer) browseTemplateContext { +func (fsrv *FileServer) directoryListing(ctx context.Context, entries []fs.DirEntry, canGoUp bool, root, urlPath string, repl *caddy.Replacer) browseTemplateContext { filesToHide := fsrv.transformHidePaths(repl) var dirCount, fileCount int fileInfos := []fileInfo{} for _, entry := range entries { + if err := ctx.Err(); err != nil { + break + } + name := entry.Name() if fileHidden(name, filesToHide) { -- cgit v1.2.3