diff --git a/pkg/api/handlers/compat/containers.go b/pkg/api/handlers/compat/containers.go index 4a213ac734..997b60d61a 100644 --- a/pkg/api/handlers/compat/containers.go +++ b/pkg/api/handlers/compat/containers.go @@ -243,6 +243,11 @@ func KillContainer(w http.ResponseWriter, r *http.Request) { } if len(report) > 0 && report[0].Err != nil { + if errors.Is(report[0].Err, define.ErrCtrStateInvalid) || + errors.Is(report[0].Err, define.ErrCtrStopped) { + utils.Error(w, http.StatusConflict, report[0].Err) + return + } utils.InternalServerError(w, report[0].Err) return } diff --git a/test/apiv2/20-containers.at b/test/apiv2/20-containers.at index c0005c8c52..92074b0b28 100644 --- a/test/apiv2/20-containers.at +++ b/test/apiv2/20-containers.at @@ -32,7 +32,10 @@ t POST "containers/foo/attach?logs=true&stream=false" 200 \ $'\001\031'$mytext t POST "containers/foo/kill" 204 -podman run -v /tmp:/tmp $IMAGE true +podman run --replace --name=foo -v /tmp:/tmp $IMAGE true +# cannot kill non-running container +t POST "containers/foo/kill" 409 +t POST "libpod/containers/foo/kill" 409 t GET libpod/containers/json 200 length=0