diff --git a/client/request.go b/client/request.go index c6b5eb9e..913c5dc7 100644 --- a/client/request.go +++ b/client/request.go @@ -104,8 +104,15 @@ func (r *request) execute(method, path string, data interface{}) (io.ReadCloser, response.Body.Close() return nil, ErrForbidden case http.StatusInternalServerError: - response.Body.Close() - return nil, ErrServerError + defer response.Body.Close() + + var resp errorResponse + decoder := json.NewDecoder(response.Body) + // If we failed to decode, just return a generic ErrServerError + if err := decoder.Decode(&resp); err != nil { + return nil, ErrServerError + } + return nil, errors.New("miniflux: internal server error: " + resp.ErrorMessage) case http.StatusNotFound: response.Body.Close() return nil, ErrNotFound