unkin-agent
e9bc573e7d
snapshot the state store atomically before evicting
...
ci/woodpecker/pr/ci Pipeline was successful
LINQ buffering of a ConcurrentDictionary is not atomic, so a concurrent write made Evict() throw and fail the login.
2026-09-19 23:23:26 +10:00
unkin-agent
e71df7aa36
bound the in-memory state store and guard store failures
...
ci/woodpecker/pr/ci Pipeline was successful
Drop a rejected state instead of refreshing its TTL, and turn a store
outage into the plugin's error page rather than an unhandled 500.
2026-09-19 23:05:16 +10:00
unkin-agent
5d446c16f2
keep solution file line endings
ci/woodpecker/pr/ci Pipeline was successful
2026-09-19 22:49:18 +10:00
unkin-agent
a167d00b73
store OAuth state in the shared cache
...
ci/woodpecker/pr/ci Pipeline was successful
Keys each in-flight OpenID flow in the server's Valkey/Redis connection so a login
can start on one replica and finish on another. Falls back to an in-memory store
when no multiplexer is registered.
2026-09-19 22:47:43 +10:00