aboutsummaryrefslogtreecommitdiff
path: root/pkg/api/handlers/utils
diff options
context:
space:
mode:
authorEd Santiago <santiago@redhat.com>2020-02-11 09:13:53 -0700
committerEd Santiago <santiago@redhat.com>2020-02-11 10:50:23 -0700
commitbdccdd2265340d48a0ba868d8c312fdd3172f1c3 (patch)
tree631919c602a8df61b1f53ba6844095d683d6268c /pkg/api/handlers/utils
parent86b5a89d1afb641196214ed9c57e83e617776c5f (diff)
downloadpodman-bdccdd2265340d48a0ba868d8c312fdd3172f1c3.tar.gz
podman-bdccdd2265340d48a0ba868d8c312fdd3172f1c3.tar.bz2
podman-bdccdd2265340d48a0ba868d8c312fdd3172f1c3.zip
API v2: pods: fix two incorrect return codes
1) /pods/<X>/exists - is documented to return 204, and that's the correct value, but until now it has been returning 200. 2) /pods/create - return 409 (conflict), not 500, when pod already exists Also: in WriteResponse(), if code is 204 (No Content) or 304 (Not Modified), emit the status code only but no content-type headers nor content. Signed-off-by: Ed Santiago <santiago@redhat.com>
Diffstat (limited to 'pkg/api/handlers/utils')
-rw-r--r--pkg/api/handlers/utils/handler.go8
1 files changed, 8 insertions, 0 deletions
diff --git a/pkg/api/handlers/utils/handler.go b/pkg/api/handlers/utils/handler.go
index 970f93791..44bcc794c 100644
--- a/pkg/api/handlers/utils/handler.go
+++ b/pkg/api/handlers/utils/handler.go
@@ -23,6 +23,14 @@ func IsLibpodRequest(r *http.Request) bool {
// WriteResponse encodes the given value as JSON or string and renders it for http client
func WriteResponse(w http.ResponseWriter, code int, value interface{}) {
+ // RFC2616 explicitly states that the following status codes "MUST NOT
+ // include a message-body":
+ switch code {
+ case http.StatusNoContent, http.StatusNotModified: // 204, 304
+ w.WriteHeader(code)
+ return
+ }
+
switch v := value.(type) {
case string:
w.Header().Set("Content-Type", "text/plain; charset=us-ascii")