From 75bfa72145e1aadac37fc670baa8bacc133c71f8 Mon Sep 17 00:00:00 2001 From: Samuel Enocsson Date: Wed, 14 Oct 2026 14:23:11 +0200 Subject: [PATCH] fix(master): redirect a cancelled Check now instead of an empty response (#35) --- internal/master/poller/poller_test.go | 9 +++++++++ internal/master/web/server.go | 8 +++++--- 2 files changed, 14 insertions(+), 3 deletions(-) diff --git a/internal/master/poller/poller_test.go b/internal/master/poller/poller_test.go index 0598825..ea7f3bd 100644 --- a/internal/master/poller/poller_test.go +++ b/internal/master/poller/poller_test.go @@ -1070,6 +1070,15 @@ func TestPollServiceOnlyThisService(t *testing.T) { require.Len(t, st.available, 1) assert.Equal(t, int64(1), st.available[0].id) assert.Equal(t, []string{ref}, reg.sortedCalls()) + for _, c := range st.pollErrors { + assert.NotContains(t, c.ids, int64(2)) + } + for _, c := range st.newer { + assert.Equal(t, int64(1), c.id) + } + for _, c := range st.lastTag { + assert.Equal(t, int64(1), c.id) + } } func TestPollServiceCancelled(t *testing.T) { diff --git a/internal/master/web/server.go b/internal/master/web/server.go index 841dcc7..1ea2173 100644 --- a/internal/master/web/server.go +++ b/internal/master/web/server.go @@ -633,13 +633,15 @@ func (s *Server) pollService(w http.ResponseWriter, r *http.Request) { s.renderServiceError(w, r, id, http.StatusConflict, "Cannot check: "+np.Reason+".") return case r.Context().Err() != nil: - return // the client is gone + // The client is gone or the master is shutting down. Redirect anyway: + // a browser still waiting gets the page, not an empty 200. case err != nil: s.failLookup(w, err) return + default: + sess, _ := webauth.SessionFrom(r.Context()) + s.log.Info("poll_requested", "service_id", id, "subject", sess.Subject) } - sess, _ := webauth.SessionFrom(r.Context()) - s.log.Info("poll_requested", "service_id", id, "subject", sess.Subject) http.Redirect(w, r, "/services/"+strconv.FormatInt(id, 10), http.StatusSeeOther) }