From 0b1c8246183fa625bdfc85a1ca066d998236fbfc Mon Sep 17 00:00:00 2001 From: Klaus Post Date: Fri, 18 Sep 2020 09:30:52 -0700 Subject: [PATCH] Fix incorrect request start time (#10516) Log request start time BEFORE starting processing the request --- cmd/http-tracer.go | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/cmd/http-tracer.go b/cmd/http-tracer.go index eb44185ff..61b2ae733 100644 --- a/cmd/http-tracer.go +++ b/cmd/http-tracer.go @@ -121,11 +121,6 @@ func Trace(f http.HandlerFunc, logBody bool, w http.ResponseWriter, r *http.Requ t.NodeName = host } - rw := logger.NewResponseWriter(w) - rw.LogErrBody = true - rw.LogAllBody = logBody - f(rw, r) - rq := trace.RequestInfo{ Time: time.Now().UTC(), Proto: r.Proto, @@ -134,8 +129,15 @@ func Trace(f http.HandlerFunc, logBody bool, w http.ResponseWriter, r *http.Requ RawQuery: r.URL.RawQuery, Client: handlers.GetSourceIP(r), Headers: reqHeaders, - Body: reqBodyRecorder.Data(), } + + rw := logger.NewResponseWriter(w) + rw.LogErrBody = true + rw.LogAllBody = logBody + + // Execute call. + f(rw, r) + rs := trace.ResponseInfo{ Time: time.Now().UTC(), Headers: rw.Header().Clone(), @@ -143,6 +145,9 @@ func Trace(f http.HandlerFunc, logBody bool, w http.ResponseWriter, r *http.Requ Body: rw.Body(), } + // Transfer request body + rq.Body = reqBodyRecorder.Data() + if rs.StatusCode == 0 { rs.StatusCode = http.StatusOK }