ModernUO/Projects
Kamron Batman 2215fa5bbe fix(network): never evict a live auth id to keep the window small
128 was a cap on concurrent logins, not a resource bound. 800 people picking a
server at once overflowed it and the oldest live ids were thrown away, so the
clients holding them arrived to "unable to find auth id" and a disconnect --
for no reason other than that other people were also logging in.

The window now grows with real demand and only sweeps ids that have expired.
That is safe to leave unbounded: an entry costs a successful password verify to
create and dies after two minutes, so its size tracks logins actually in flight.

Corrects the previous commit's reasoning as well. An id is created by picking a
server, not by reaching the server list, so a player who idles on the list has
no id to abandon. The ones left behind belong to clients that picked a server
and never arrived, which is a seconds-wide window.

Removing an id when its connection drops is not an option: the server itself
disconnects the login connection immediately after issuing one, so surviving
that disconnect is the whole point. Expiry is the only correct reclamation.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-08 00:39:45 -07:00
..
Application fix: Bumps dependencies. (#2531) 2026-07-14 15:17:55 -07:00
BuildTool fix: Require only runtime packages on Linux, and check ICU and tzdata the way the runtime does (#2561) 2026-08-07 15:03:08 -07:00
Logger fix: Bumps dependencies. (#2531) 2026-07-14 15:17:55 -07:00
Server fix: Require only runtime packages on Linux, and check ICU and tzdata the way the runtime does (#2561) 2026-08-07 15:03:08 -07:00
Server.Tests feat(network): allowlist false-positive IPs, escalate on behavior (#2556) 2026-07-30 23:12:17 -07:00
UOContent fix(network): never evict a live auth id to keep the window small 2026-08-08 00:39:45 -07:00
UOContent.Tests fix(network): never evict a live auth id to keep the window small 2026-08-08 00:39:45 -07:00