diff options
author | Ed Santiago <santiago@redhat.com> | 2020-02-11 09:13:53 -0700 |
---|---|---|
committer | Ed Santiago <santiago@redhat.com> | 2020-02-11 10:50:23 -0700 |
commit | bdccdd2265340d48a0ba868d8c312fdd3172f1c3 (patch) | |
tree | 631919c602a8df61b1f53ba6844095d683d6268c /pkg/api/handlers/utils | |
parent | 86b5a89d1afb641196214ed9c57e83e617776c5f (diff) | |
download | podman-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.go | 8 |
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") |