fix: series removal sent its status line twice
adminSeriesRemove answered the list surface with two h.render calls -- the row fragment and the out-of-band heading -- and h.render writes a status line each time, so every removal logged "superfluous response.WriteHeader call". The heading is an append to a response already committed, so it now executes straight onto w, the way writeChromeOOB already does it. The regression test runs the router under a real server with a captured ErrorLog: a ResponseRecorder never sees this warning, which is why the existing removal test did not catch it.
This commit is contained in:
@@ -505,10 +505,13 @@ func (h *Handler) adminSeriesRemove(w http.ResponseWriter, r *http.Request) {
|
||||
band = 1
|
||||
}
|
||||
h.render(w, http.StatusOK, "series-row", seriesRow(a, band, time.Now()))
|
||||
// The heading is an out-of-band append to a response whose status line has
|
||||
// already gone out with the row, so it is executed straight onto w —
|
||||
// h.render would send a second WriteHeader.
|
||||
if head, err := h.seriesListHeadView(r); err != nil {
|
||||
log.Printf("series remove %s: %v", site+":"+seriesID, err)
|
||||
} else {
|
||||
h.render(w, http.StatusOK, "series-list-head", head)
|
||||
} else if err := h.tmpl.ExecuteTemplate(w, "series-list-head", head); err != nil {
|
||||
log.Printf("series remove %s: render series-list-head oob: %v", site+":"+seriesID, err)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user