ModernUO/Projects
Kamron Batman d337cf4a1e fix(network): reject repeats of the do-once handshake packets
Seeding and picking a server each happen once per connection. Neither had a
guard, so a client pipelining into the recv buffer could re-run the handshake
before the queued disconnect drained and reach both handlers again.

A second play-server is the one that mattered: this connection may already have
spent its auth id on a game login, and the id it would be handed back is the
spent one, which nothing will redeem. Rejecting the packet is the honest answer
-- the client is out of protocol order, not unlucky.

Account login and game login already guarded on SentFirstPacket.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-08 01:04:08 -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): reject repeats of the do-once handshake packets 2026-08-08 01:04:08 -07:00
UOContent.Tests refactor(network): give a connection one auth id by construction 2026-08-08 00:55:32 -07:00