do not generate http status 502 for canceled http requests

do log them with level debug, and print the error in the http access log line.
This commit is contained in:
Mechiel Lukkien 2023-03-21 09:25:49 +01:00
parent f531a9bf35
commit 00ea31f2f6
No known key found for this signature in database
2 changed files with 10 additions and 1 deletions

View file

@ -152,7 +152,11 @@ func (w *loggingWriter) Done() {
tlsinfo = "(other)"
}
}
xlog.WithContext(w.R.Context()).Debugx("http request", w.WriteErr,
err := w.WriteErr
if err == nil {
err = w.R.Context().Err()
}
xlog.WithContext(w.R.Context()).Debugx("http request", err,
mlog.Field("httpaccess", ""),
mlog.Field("handler", w.Handler),
mlog.Field("method", method),

View file

@ -1,6 +1,7 @@
package http
import (
"context"
"errors"
"fmt"
htmltemplate "html/template"
@ -415,6 +416,10 @@ func HandleForward(h *config.WebForward, w http.ResponseWriter, r *http.Request,
proxy.FlushInterval = time.Duration(-1) // Flush after each write.
proxy.ErrorLog = golog.New(mlog.ErrWriter(mlog.New("net/http/httputil").WithContext(r.Context()), mlog.LevelDebug, "reverseproxy error"), "", 0)
proxy.ErrorHandler = func(w http.ResponseWriter, r *http.Request, err error) {
if errors.Is(err, context.Canceled) {
log().Debugx("forwarding request to backend webserver", err, mlog.Field("url", r.URL))
return
}
log().Errorx("forwarding request to backend webserver", err, mlog.Field("url", r.URL))
if os.IsTimeout(err) {
http.Error(w, "504 - gateway timeout"+recvid(), http.StatusGatewayTimeout)