bug: matchmaking duplicates, repeat leaver bans, name registration and tournament chat - #409
Merged
Merged
Conversation
…d tournament chat - matchmaking created a second match when the last confirmations landed together, or when a player re-sent theirs after the match existed - confirmations from players outside the match counted toward the ready check - queue entries whose lobby details had expired were counted forever; sweep them, guarded so a lobby that rejoins is not swept with them - the queue count reported lobbies, so a queued trio showed as 1 - abandoned_matches is now unique per (steam_id, match_id): the plugin can report one leave several times and each row escalated the cooldown a rung - registerName had no already-registered check, so a player could rename without approval, and requestNameChange took the steam id from the client - a map winner reported with WaitingForTV or UploadingDemo was never checked against the round score; Surrendered stays as reported - tournament chat left registered and waitlisted free agents out, and did not re-check membership when a message was sent - the team owner could leave their own team, leaving nobody able to manage it
lukepolo
force-pushed
the
fix/fork-triage-bugs
branch
from
September 18, 2026 03:35
9f2e4d0 to
8bc436a
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Bugs found by comparing against the DEAFCS fork, plus the related holes each one exposed in our code.
Matchmaking
Leaver bans
abandoned_matcheshas no unique key and the cooldown counts rows, so one leave reported twice moved the player a rung up the ladder. AddedUNIQUE (steam_id, match_id)(NULL match_id rows stay distinct) and both insert paths now ignore conflicts.Names
registerNamenever checkedname_registered, so a player could rename themselves without admin approval. It also accepted blank names.requestNameChangetooksteam_idfrom the client, so a player could file a rename for someone else and have an admin approve it.Match maps
Finished. A map that stalls inWaitingForTVorUploadingDemokept an unchecked winner.Surrendereddeliberately keeps the reported winner, since the team that gives up is often ahead on rounds.Tournament chat
joined_tournament, which is what puts the room in the sidebar, and for a team owner not on their own roster.Teams
owner_steam_id, so the team was left owned by a non-member and only a site admin could manage it. Blocked in the database and hidden in the UI; ownership has to be handed over first.Needs
hasura migrate+codegenon the dev stack (one new migration; the generated constraint enum was added by hand in the meantime).Tests: 878 unit, 1332 SQL.