From bf9ca54b8e1e9583c26e0185ec80f1c1b54f29ff Mon Sep 17 00:00:00 2001 From: Gregory Kurtzer Date: Wed, 25 May 2022 23:11:26 -0700 Subject: [PATCH] Don't read in binary data blobs to memory before sending to HTTP writer --- internal/pkg/warewulfd/util.go | 13 +++++-------- 1 file changed, 5 insertions(+), 8 deletions(-) diff --git a/internal/pkg/warewulfd/util.go b/internal/pkg/warewulfd/util.go index 63e89718..2cc609df 100644 --- a/internal/pkg/warewulfd/util.go +++ b/internal/pkg/warewulfd/util.go @@ -2,7 +2,6 @@ package warewulfd import ( "io" - "bytes" "net/http" "os" "strconv" @@ -36,18 +35,16 @@ func sendFile(w http.ResponseWriter, filename string, sendto string) error { return errors.Wrap(err, "failed to seek") } - var buf bytes.Buffer - _, err = io.Copy(&buf, fd) + w.Header().Set("Content-Disposition", "attachment; filename=kernel") + w.Header().Set("Content-Type", FileContentType) + w.Header().Set("Content-Length", FileSize) + + _, err = io.Copy(w, fd) if err != nil { w.WriteHeader(http.StatusInternalServerError) return errors.Wrap(err, "failed to copy") } - w.Header().Set("Content-Disposition", "attachment; filename=kernel") - w.Header().Set("Content-Type", FileContentType) - w.Header().Set("Content-Length", FileSize) - _, err = buf.WriteTo(w) - wwlog.Send("%15s: %s", sendto, filename) return err