From e8ae80adca5db7102e646954fcc53827732ceb83 Mon Sep 17 00:00:00 2001 From: Matthew Holt Date: Wed, 16 Jun 2021 14:28:34 -0600 Subject: fileserver: Don't persist parsed template (fix #4202) Templates are parsed at request-time (like they are in the templates middleware) to allow live changes to the template while the server is running. Fixes race condition. Also refactored use of a buffer so a buffer put back in the pool will not continue to be used (written to client) in the meantime. A couple of benchmarks removed due to refactor, which is fine, since we know pooling helps here. --- modules/caddyhttp/fileserver/browse_test.go | 68 ----------------------------- 1 file changed, 68 deletions(-) delete mode 100644 modules/caddyhttp/fileserver/browse_test.go (limited to 'modules/caddyhttp/fileserver/browse_test.go') diff --git a/modules/caddyhttp/fileserver/browse_test.go b/modules/caddyhttp/fileserver/browse_test.go deleted file mode 100644 index 30862fa..0000000 --- a/modules/caddyhttp/fileserver/browse_test.go +++ /dev/null @@ -1,68 +0,0 @@ -// Copyright 2015 Matthew Holt and The Caddy Authors -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package fileserver - -import ( - "testing" - "text/template" -) - -func BenchmarkBrowseWriteJSON(b *testing.B) { - fsrv := new(FileServer) - listing := browseTemplateContext{ - Name: "test", - Path: "test", - CanGoUp: false, - Items: make([]fileInfo, 100), - NumDirs: 42, - NumFiles: 420, - Sort: "", - Order: "", - Limit: 42, - } - b.ResetTimer() - - for n := 0; n < b.N; n++ { - fsrv.browseWriteJSON(listing) - } -} - -func BenchmarkBrowseWriteHTML(b *testing.B) { - fsrv := new(FileServer) - fsrv.Browse = &Browse{ - TemplateFile: "", - template: template.New("test"), - } - listing := browseTemplateContext{ - Name: "test", - Path: "test", - CanGoUp: false, - Items: make([]fileInfo, 100), - NumDirs: 42, - NumFiles: 420, - Sort: "", - Order: "", - Limit: 42, - } - tplCtx := &templateContext{ - browseTemplateContext: listing, - } - fsrv.makeBrowseTemplate(tplCtx) - b.ResetTimer() - - for n := 0; n < b.N; n++ { - fsrv.browseWriteHTML(tplCtx) - } -} -- cgit v1.2.3