mirror of
https://github.com/Kelsidavis/WoWee.git
synced 2026-04-17 09:33:51 +00:00
fix: revert Warden HASH_RESULT fallback — silence is correct behavior
ChromieCraft/AzerothCore tolerates no HASH_RESULT response (continues session without Warden checks), but immediately kicks on a WRONG hash. The previous commit sent a fallback SHA1 which the server rejected, breaking login that was working before. Restore the skip behavior for WotLK/TBC: stay silent on HASH_REQUEST when no CR match exists, and advance to WAIT_CHECKS so the rest of the session proceeds normally. Turtle/Classic servers still get the fallback hash since they're lenient about wrong values.
This commit is contained in:
parent
f3f7511105
commit
5ad225313d
1 changed files with 11 additions and 7 deletions
|
|
@ -535,15 +535,19 @@ void WardenHandler::handleWardenData(network::Packet& packet) {
|
||||||
bool isTurtle = isActiveExpansion("turtle");
|
bool isTurtle = isActiveExpansion("turtle");
|
||||||
bool isClassic = (owner_.build <= 6005) && !isTurtle;
|
bool isClassic = (owner_.build <= 6005) && !isTurtle;
|
||||||
|
|
||||||
// Previously we skipped the response for WotLK/TBC to avoid bans on strict
|
if (!isTurtle && !isClassic) {
|
||||||
// servers (e.g. Warmane). However, most servers (AzerothCore, ChromieCraft,
|
// WotLK/TBC: don't respond to HASH_REQUEST without a valid CR match.
|
||||||
// TrinityCore) are permissive and only kick — not ban — for wrong hashes.
|
// ChromieCraft/AzerothCore tolerates the silence (no ban, no kick),
|
||||||
// Skipping causes a guaranteed kick-on-timeout, while sending a fallback
|
// but REJECTS a wrong hash and closes the connection immediately.
|
||||||
// hash at least lets permissive servers continue the session.
|
// Staying silent lets the server continue the session without Warden checks.
|
||||||
// For strict servers, provide a .cr file with the correct seed→reply.
|
LOG_WARNING("Warden: HASH_REQUEST seed=", seedHex,
|
||||||
|
" — no CR match, skipping response (server tolerates silence)");
|
||||||
|
wardenState_ = WardenState::WAIT_CHECKS;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
LOG_WARNING("Warden: No CR match (seed=", seedHex,
|
LOG_WARNING("Warden: No CR match (seed=", seedHex,
|
||||||
"), sending fallback hash");
|
"), sending fallback hash (lenient server)");
|
||||||
|
|
||||||
std::vector<uint8_t> fallbackReply;
|
std::vector<uint8_t> fallbackReply;
|
||||||
if (wardenLoadedModule_ && wardenLoadedModule_->isLoaded()) {
|
if (wardenLoadedModule_ && wardenLoadedModule_->isLoaded()) {
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue