on master help sign in
Simplify server.knot: collapse authedPubkey case+yield, bind expiresAt once in handleChallenge
commit010f8d146ee2615d100513631bb656019b5fba1d authoriko <mail@iko.soy> dateSun 10 May 2026, 20:37 (5 months ago) parent3595cd9
1 file changed+6−7
server.knot+6−7
server.knot+6−7
@@ -396,9 +396,9 @@ authedPubkey = \authorization t clientIp -> do
396396 then yield (Nothing {})
397397 else do
398398 let token = drop 7 authorization
399− case findFirst ses (\s -> s.expiresAt > t && s.token == token && matchIp clientIp s.ip) of
400− Just {value: s} -> yield (Just {value: s.pubkey})
401− _ -> yield (Nothing {})
399+ yield (case findFirst ses (\s -> s.expiresAt > t && s.token == token && matchIp clientIp s.ip) of
400+ Just {value: s} -> Just {value: s.pubkey}
401+ _ -> Nothing {})
402402
403403-- ============================================
404404-- Federation failure tracking (simple, no circuit breaker)
@@ -584,16 +584,15 @@ handleChallenge : PubkeyHex -> Text -> IO {rw *challenges, clock, random} (Resul
584584handleChallenge = \pubkey clientIp -> do
585585 t <- now
586586 challenge <- genToken 48
587+ let expiresAt = t + challengeExpiry
587588 atomic (do
588589 ch <- *challenges
589590 let cappedActive = capPerKey (filter (\c -> c.expiresAt > t) ch) pubkey maxChallengesPerKey
590591 if count cappedActive >= maxChallenges
591592 then yield (Err {error: {status: 503, message: "capacity"}})
592593 else do
593− *challenges = union cappedActive [
594− {pubkey, challenge, expiresAt: t + challengeExpiry, ip: clientIp}
595− ]
596− yield (Ok {value: {challenge, expiresAt: t + challengeExpiry}}))
594+ *challenges = union cappedActive [{pubkey, challenge, expiresAt, ip: clientIp}]
595+ yield (Ok {value: {challenge, expiresAt}}))
597596
598597-- POST /auth/verify: validate `signature` over `challenge` for `pubkey`.
599598-- On success, mints a session token, records local presence (`pubkey` is now