From b3f471bb308ce81d26aa3648c3e3e6b1479e2042 Mon Sep 17 00:00:00 2001 From: WeebDataHoarder <57538841+WeebDataHoarder@users.noreply.github.com> Date: Mon, 7 Apr 2025 23:44:29 +0200 Subject: [PATCH] Pass http challenge if we passed it previously on the request --- lib/state.go | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/lib/state.go b/lib/state.go index ed7d106..d712981 100644 --- a/lib/state.go +++ b/lib/state.go @@ -240,6 +240,13 @@ func NewState(p policy.Policy, settings StateSettings) (state *State, err error) } c.ServeChallenge = func(w http.ResponseWriter, r *http.Request, key []byte, expiry time.Time) challenge.Result { + + data := RequestDataFromContext(r.Context()) + + if result := data.Challenges[c.Id]; result.Ok() { + return challenge.ResultPass + } + var cookieValue string if expectedCookie != "" { if cookie, err := r.Cookie(expectedCookie); err != nil || cookie == nil { @@ -283,6 +290,8 @@ func NewState(p policy.Policy, settings StateSettings) (state *State, err error) utils.SetCookie(utils.CookiePrefix+challengeName, token, expiry, w) } + data.Challenges[c.Id] = challenge.VerifyResultPASS + // we passed it! return challenge.ResultPass }