From cffe3eca1b573eb195742e4d2b0b688edba3bc3b Mon Sep 17 00:00:00 2001 From: William Petit Date: Fri, 8 Nov 2024 11:07:19 +0100 Subject: [PATCH] fix: prevent loss of information when returning errors Linked to: - https://sentry.in.nuonet.fr/share/issue/5fa72de1b01b46bc81601958a2ff5fd2/ - https://sentry.in.nuonet.fr/share/issue/5a225f6400a647c0bbf1f7ea01566e63/ --- internal/proxy/director/layer/authn/oidc/client.go | 2 +- internal/proxy/director/layer/queue/queue.go | 8 ++++---- internal/proxy/director/layer/rewriter/layer.go | 2 +- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/internal/proxy/director/layer/authn/oidc/client.go b/internal/proxy/director/layer/authn/oidc/client.go index e65203a..5f2b1c5 100644 --- a/internal/proxy/director/layer/authn/oidc/client.go +++ b/internal/proxy/director/layer/authn/oidc/client.go @@ -69,7 +69,7 @@ func (c *Client) login(w http.ResponseWriter, r *http.Request, sess *sessions.Se sess.Values[sessionKeyPostLoginRedirectURL] = postLoginRedirectURL if err := sess.Save(r, w); err != nil { - director.HandleError(ctx, w, r, http.StatusInternalServerError, errors.New("could not save session")) + director.HandleError(ctx, w, r, http.StatusInternalServerError, errors.Wrap(err, "could not save session")) return } diff --git a/internal/proxy/director/layer/queue/queue.go b/internal/proxy/director/layer/queue/queue.go index e07638e..4e2e7dc 100644 --- a/internal/proxy/director/layer/queue/queue.go +++ b/internal/proxy/director/layer/queue/queue.go @@ -54,7 +54,7 @@ func (q *Queue) Middleware(layer *store.Layer) proxy.Middleware { options, err := fromStoreOptions(layer.Options, q.defaultKeepAlive) if err != nil { - director.HandleError(ctx, w, r, http.StatusInternalServerError, errors.New("could not parse layer options")) + director.HandleError(ctx, w, r, http.StatusInternalServerError, errors.Wrap(err, "could not parse layer options")) return } @@ -89,7 +89,7 @@ func (q *Queue) Middleware(layer *store.Layer) proxy.Middleware { rank, err := q.adapter.Touch(ctx, queueName, sessionID) if err != nil { - director.HandleError(ctx, w, r, http.StatusInternalServerError, errors.New("could not retrieve session rank")) + director.HandleError(ctx, w, r, http.StatusInternalServerError, errors.Wrap(err, "could not update queue session rank")) return } @@ -142,7 +142,7 @@ func (q *Queue) renderQueuePage(w http.ResponseWriter, r *http.Request, queueNam status, err := q.adapter.Status(ctx, queueName) if err != nil { - director.HandleError(ctx, w, r, http.StatusInternalServerError, errors.New("could not retrieve queue status")) + director.HandleError(ctx, w, r, http.StatusInternalServerError, errors.Wrap(err, "could not retrieve queue status")) return } @@ -191,7 +191,7 @@ func (q *Queue) renderQueuePage(w http.ResponseWriter, r *http.Request, queueNam var buf bytes.Buffer if err := q.tmpl.ExecuteTemplate(&buf, "queue", templateData); err != nil { - director.HandleError(ctx, w, r, http.StatusInternalServerError, errors.New("could not render queue page")) + director.HandleError(ctx, w, r, http.StatusInternalServerError, errors.Wrap(err, "could not render queue page")) return } diff --git a/internal/proxy/director/layer/rewriter/layer.go b/internal/proxy/director/layer/rewriter/layer.go index db85eff..3dd1e2e 100644 --- a/internal/proxy/director/layer/rewriter/layer.go +++ b/internal/proxy/director/layer/rewriter/layer.go @@ -31,7 +31,7 @@ func (l *Layer) Middleware(layer *store.Layer) proxy.Middleware { options, err := fromStoreOptions(layer.Options) if err != nil { - director.HandleError(ctx, w, r, http.StatusInternalServerError, errors.New("could not parse layer options")) + director.HandleError(ctx, w, r, http.StatusInternalServerError, errors.Wrap(err, "could not parse layer options")) return }