From 570d2eccec32d3ec9dfc63ec1688bff27eb7d9e1 Mon Sep 17 00:00:00 2001
From: Chris Lu <chris.lu@gmail.com>
Date: Wed, 18 Aug 2021 00:56:35 -0700
Subject: [PATCH] skip body if not allowed by http status

---
 weed/server/common.go | 15 ++++++++++++++-
 1 file changed, 14 insertions(+), 1 deletion(-)

diff --git a/weed/server/common.go b/weed/server/common.go
index 13d20d879..ad3842190 100644
--- a/weed/server/common.go
+++ b/weed/server/common.go
@@ -33,8 +33,21 @@ func init() {
 	go serverStats.Start()
 }
 
+// bodyAllowedForStatus is a copy of http.bodyAllowedForStatus non-exported function.
+func bodyAllowedForStatus(status int) bool {
+	switch {
+	case status >= 100 && status <= 199:
+		return false
+	case status == http.StatusNoContent:
+		return false
+	case status == http.StatusNotModified:
+		return false
+	}
+	return true
+}
+
 func writeJson(w http.ResponseWriter, r *http.Request, httpStatus int, obj interface{}) (err error) {
-	if httpStatus == http.StatusNoContent {
+	if !bodyAllowedForStatus(httpStatus) {
 		return
 	}