Repository navigation
fix(plugin): use native auth IDs for engine bans - #1572
Merged
Merged
Conversation
rumblefrog
force-pushed
the
fix/1507-synergy-native-ban-id
branch
from
September 18, 2026 21:37
260106f to
dc680e6
Compare
Rushaway
added a commit
to srcdslab/sourcebans-pp
that referenced
this pull request
Sep 22, 2026
…bpp#1571/sbpp#1572 Two bugs surfaced while comparing this fork's Synergy/queue-related plugin fixes against upstream sbpp#1572 ("use native auth ids for engine bans") — upstream's diff touches the same functions and happens to carry the fix for the first one as a side effect. 1. ProcessQueueCallback re-INSERTs a matured queue row into the main `%!s_bans` table, but was building and executing that query against `db` — the local SQLite queue connection this callback fires on (bound via SQLiteDB.Query(ProcessQueueCallback, ...) in ProcessQueue()) — instead of `DB`, the main panel database the `%!s_bans` table actually lives on. SQLite has no such table, so the INSERT would fail every time; AddedFromSQLiteCallback's `results == null` branch just re-arms the temporary in-game hold and leaves the row in the queue, so the ban would keep getting re-enforced locally but NEVER actually land in the permanent database once it came back up after an outage — silently defeating the entire point of the offline queue. Switched both the `.Format()` call (MySQL vs SQLite escaping rules differ) and the final `.Query()` to `DB`. Paired with a `DB == INVALID_HANDLE` guard at the top of the callback (matching upstream) so this doesn't trade "silently fails forever" for "throws a native error" on a cycle where the main DB is still down. 2. AddedFromSQLiteCallback's success path calls `RemoveBan(auth, BANFLAG_AUTHID)` with the raw Steam2 identity to clear the temporary in-game hold once the real ban lands in the main database. But the temp hold was created by SBPP_BanIdentity(), which converts to SteamID3 whenever it can (some engines, e.g. Synergy, reject the STEAM_ format for the "banid" console command, so SBPP_BanIdentity works around it) — a Steam2-only RemoveBan() call silently misses a SteamID3-keyed entry, leaving a stale temporary ban sitting in SourceMod's cache until it expires on its own. Try the SteamID3 form too; removing an identity with no matching ban is a harmless no-op. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
8 tasks
rumblefrog
added a commit
that referenced
this pull request
Sep 28, 2026
…1580) VerifyBan runs from OnClientAuthorized, which can land before OnClientPutInServer. BanClient() resolves the client through ReferenceToIndex(), which returns -1 while the edict has no entity, so SourceMod threw "Client index -1 is invalid" and the banned player was never kicked. #1572 introduced the BanClient call; the previous banid + KickClient path did not depend on the entity. Mirror BanClient's BANFLAG_AUTO with entity-independent natives: ban the engine auth string via BanIdentity (keeps Synergy's native Steam3 form) and KickClient; when the auth lookup fails or the server is LAN, KickClientEx then ban the IP, matching BanClient's kick-then-addip order.
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.
Summary
Testing
Closes #1507