Login callbacks consume server-side state and refuse a replayed state cookie. Head: 085456b65e.
Maestro task bc329345-e2cd-46f0-ab96-929591ea50e8.
Login callbacks consume server-side state and refuse a replayed state cookie. Head: 085456b65e6b45e4008f51fc07f2c084caa17706.
A saved copy of the signed login cookie verified until it expired, so the
callback accepted it again with a second valid authorization code. The
login now records its state as pending and the callback consumes it,
refusing a replay with the same 400 as a state mismatch.
The pending-state set moves from gcal into auth as PendingStates, so login
and the Google Calendar connect share one mechanism. It is in memory, so a
flow started before a restart fails closed after it.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The login route is unauthenticated, so its pending states could grow
without limit and every Add scanned them all. Expired states now leave
from the front of an add-ordered queue, and Add refuses a new flow with
ErrTooManyPending once 10000 are pending; login answers 503. Both flows
record the state before setting the cookie.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
A consumed state left the map at once but stayed in the queue until it
expired, so starting and completing flows grew the queue past the bound.
The bound now counts the queue.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Maestro task bc329345-e2cd-46f0-ab96-929591ea50e8.
Login callbacks consume server-side state and refuse a replayed state cookie. Head:
085456b65e.Independent Codex gpt-6-sol review: APPROVED for this exact commit.