Skip to content

Duplicate Write to response custom writer buffer. #52

@fontseca

Description

@fontseca

If a previous WriteHeader(404) was invoked, line 231 gets executed provoking a second Write.

if http.StatusNotFound == recorder.statusCode() {
failure.EmitError(w, failure.ErrTargetNotFound, true)
}

Check EmitError implementation:

func EmitError(w http.ResponseWriter, e *Error, wroteHeader ...bool) {
var response = &errorBody{
Code: e.code,
Message: e.message,
Hint: e.hint,
}
var buf = []byte(e.details)
err := json.Unmarshal(buf, &response.Details)
if nil != err {
var s *json.SyntaxError
if errors.As(err, &s) {
/* A normal string is expected. */
response.Details = &e.details
}
}
res, err := json.Marshal(response)
if err != nil {
log.Println(err)
w.WriteHeader(http.StatusInternalServerError)
return
}
if 0 == len(wroteHeader) || !wroteHeader[0] {
w.WriteHeader(e.status)
}
w.Write(res)
}

Metadata

Metadata

Assignees

Labels

bugSomething isn't workingenhancementNew feature or request

Projects

Status

No status

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions