From 0fcadd9d257fc716e7dc90b4034f33280f4dcb14 Mon Sep 17 00:00:00 2001 From: megamage Date: Fri, 31 Jul 2009 11:29:28 +0800 Subject: *Replace "LoginDatabase" with "loginDatabase" --HG-- branch : trunk --- src/trinityrealm/AuthSocket.cpp | 36 ++++++++++++++++++------------------ 1 file changed, 18 insertions(+), 18 deletions(-) (limited to 'src/trinityrealm/AuthSocket.cpp') diff --git a/src/trinityrealm/AuthSocket.cpp b/src/trinityrealm/AuthSocket.cpp index 80e8184605b..a882a6d1941 100644 --- a/src/trinityrealm/AuthSocket.cpp +++ b/src/trinityrealm/AuthSocket.cpp @@ -36,7 +36,7 @@ extern RealmList m_realmList; -extern DatabaseType LoginDatabase; +extern DatabaseType loginDatabase; #define ChunkSize 2048 @@ -325,7 +325,7 @@ void AuthSocket::_SetVSFields(const std::string& rI) const char *v_hex, *s_hex; v_hex = v.AsHexStr(); s_hex = s.AsHexStr(); - LoginDatabase.PExecute("UPDATE account SET v = '%s', s = '%s' WHERE username = '%s'",v_hex,s_hex, _safelogin.c_str() ); + loginDatabase.PExecute("UPDATE account SET v = '%s', s = '%s' WHERE username = '%s'",v_hex,s_hex, _safelogin.c_str() ); OPENSSL_free((void*)v_hex); OPENSSL_free((void*)s_hex); } @@ -381,18 +381,18 @@ bool AuthSocket::_HandleLogonChallenge() //Escape the user login to avoid further SQL injection //Memory will be freed on AuthSocket object destruction _safelogin=_login; - LoginDatabase.escape_string(_safelogin); + loginDatabase.escape_string(_safelogin); pkt << (uint8) AUTH_LOGON_CHALLENGE; pkt << (uint8) 0x00; ///- Verify that this IP is not in the ip_banned table // No SQL injection possible (paste the IP address as passed by the socket) - LoginDatabase.Execute("DELETE FROM ip_banned WHERE unbandate<=UNIX_TIMESTAMP() AND unbandate<>bandate"); + loginDatabase.Execute("DELETE FROM ip_banned WHERE unbandate<=UNIX_TIMESTAMP() AND unbandate<>bandate"); std::string address = GetRemoteAddress(); - LoginDatabase.escape_string(address); - QueryResult *result = LoginDatabase.PQuery( "SELECT * FROM ip_banned WHERE ip = '%s'",address.c_str()); + loginDatabase.escape_string(address); + QueryResult *result = loginDatabase.PQuery( "SELECT * FROM ip_banned WHERE ip = '%s'",address.c_str()); if(result) { pkt << (uint8)REALM_AUTH_ACCOUNT_BANNED; @@ -404,7 +404,7 @@ bool AuthSocket::_HandleLogonChallenge() ///- Get the account details from the account table // No SQL injection (escaped user name) - result = LoginDatabase.PQuery("SELECT sha_pass_hash,id,locked,last_ip,gmlevel FROM account WHERE username = '%s'",_safelogin.c_str ()); + result = loginDatabase.PQuery("SELECT sha_pass_hash,id,locked,last_ip,gmlevel FROM account WHERE username = '%s'",_safelogin.c_str ()); if( result ) { ///- If the IP is 'locked', check that the player comes indeed from the correct IP address @@ -432,9 +432,9 @@ bool AuthSocket::_HandleLogonChallenge() if (!locked) { //set expired bans to inactive - LoginDatabase.Execute("UPDATE account_banned SET active = 0 WHERE unbandate<=UNIX_TIMESTAMP() AND unbandate<>bandate"); + loginDatabase.Execute("UPDATE account_banned SET active = 0 WHERE unbandate<=UNIX_TIMESTAMP() AND unbandate<>bandate"); ///- If the account is banned, reject the logon attempt - QueryResult *banresult = LoginDatabase.PQuery("SELECT bandate,unbandate FROM account_banned WHERE id = %u AND active = 1", (*result)[1].GetUInt32()); + QueryResult *banresult = loginDatabase.PQuery("SELECT bandate,unbandate FROM account_banned WHERE id = %u AND active = 1", (*result)[1].GetUInt32()); if(banresult) { if((*banresult)[0].GetUInt64() == (*banresult)[1].GetUInt64()) @@ -653,7 +653,7 @@ bool AuthSocket::_HandleLogonProof() ///- Update the sessionkey, last_ip, last login time and reset number of failed logins in the account table for this account // No SQL injection (escaped user name) and IP address as received by socket const char* K_hex = K.AsHexStr(); - LoginDatabase.PExecute("UPDATE account SET sessionkey = '%s', last_ip = '%s', last_login = NOW(), locale = '%u', failed_logins = 0 WHERE username = '%s'", K_hex, GetRemoteAddress().c_str(), GetLocaleByName(_localizationName), _safelogin.c_str() ); + loginDatabase.PExecute("UPDATE account SET sessionkey = '%s', last_ip = '%s', last_login = NOW(), locale = '%u', failed_logins = 0 WHERE username = '%s'", K_hex, GetRemoteAddress().c_str(), GetLocaleByName(_localizationName), _safelogin.c_str() ); OPENSSL_free((void*)K_hex); ///- Finish SRP6 and send the final result to the client @@ -684,9 +684,9 @@ bool AuthSocket::_HandleLogonProof() if(MaxWrongPassCount > 0) { //Increment number of failed logins by one and if it reaches the limit temporarily ban that account or IP - LoginDatabase.PExecute("UPDATE account SET failed_logins = failed_logins + 1 WHERE username = '%s'",_safelogin.c_str()); + loginDatabase.PExecute("UPDATE account SET failed_logins = failed_logins + 1 WHERE username = '%s'",_safelogin.c_str()); - if(QueryResult *loginfail = LoginDatabase.PQuery("SELECT id, failed_logins FROM account WHERE username = '%s'", _safelogin.c_str())) + if(QueryResult *loginfail = loginDatabase.PQuery("SELECT id, failed_logins FROM account WHERE username = '%s'", _safelogin.c_str())) { Field* fields = loginfail->Fetch(); uint32 failed_logins = fields[1].GetUInt32(); @@ -699,7 +699,7 @@ bool AuthSocket::_HandleLogonProof() if(WrongPassBanType) { uint32 acc_id = fields[0].GetUInt32(); - LoginDatabase.PExecute("INSERT INTO account_banned VALUES ('%u',UNIX_TIMESTAMP(),UNIX_TIMESTAMP()+'%u','Trinity realmd','Failed login autoban',1)", + loginDatabase.PExecute("INSERT INTO account_banned VALUES ('%u',UNIX_TIMESTAMP(),UNIX_TIMESTAMP()+'%u','Trinity realmd','Failed login autoban',1)", acc_id, WrongPassBanTime); sLog.outBasic("[AuthChallenge] account %s got banned for '%u' seconds because it failed to authenticate '%u' times", _login.c_str(), WrongPassBanTime, failed_logins); @@ -707,8 +707,8 @@ bool AuthSocket::_HandleLogonProof() else { std::string current_ip = GetRemoteAddress(); - LoginDatabase.escape_string(current_ip); - LoginDatabase.PExecute("INSERT INTO ip_banned VALUES ('%s',UNIX_TIMESTAMP(),UNIX_TIMESTAMP()+'%u','Trinity realmd','Failed login autoban')", + loginDatabase.escape_string(current_ip); + loginDatabase.PExecute("INSERT INTO ip_banned VALUES ('%s',UNIX_TIMESTAMP(),UNIX_TIMESTAMP()+'%u','Trinity realmd','Failed login autoban')", current_ip.c_str(), WrongPassBanTime); sLog.outBasic("[AuthChallenge] IP %s got banned for '%u' seconds because account %s failed to authenticate '%u' times", current_ip.c_str(), WrongPassBanTime, _login.c_str(), failed_logins); @@ -754,7 +754,7 @@ bool AuthSocket::_HandleReconnectChallenge() _login = (const char*)ch->I; _safelogin = _login; - QueryResult *result = LoginDatabase.PQuery ("SELECT sessionkey FROM account WHERE username = '%s'", _safelogin.c_str ()); + QueryResult *result = loginDatabase.PQuery ("SELECT sessionkey FROM account WHERE username = '%s'", _safelogin.c_str ()); // Stop if the account is not found if (!result) @@ -834,7 +834,7 @@ bool AuthSocket::_HandleRealmList() ///- Get the user id (else close the connection) // No SQL injection (escaped user name) - QueryResult *result = LoginDatabase.PQuery("SELECT id,sha_pass_hash FROM account WHERE username = '%s'",_safelogin.c_str()); + QueryResult *result = loginDatabase.PQuery("SELECT id,sha_pass_hash FROM account WHERE username = '%s'",_safelogin.c_str()); if(!result) { sLog.outError("[ERROR] user %s tried to login and we cannot find him in the database.",_login.c_str()); @@ -859,7 +859,7 @@ bool AuthSocket::_HandleRealmList() uint8 AmountOfCharacters; // No SQL injection. id of realm is controlled by the database. - result = LoginDatabase.PQuery( "SELECT numchars FROM realmcharacters WHERE realmid = '%d' AND acctid='%u'",i->second.m_ID,id); + result = loginDatabase.PQuery( "SELECT numchars FROM realmcharacters WHERE realmid = '%d' AND acctid='%u'",i->second.m_ID,id); if( result ) { Field *fields = result->Fetch(); -- cgit v1.2.3 From ed995581af21754e3b7e66daa50f8da1e38d3760 Mon Sep 17 00:00:00 2001 From: megamage Date: Fri, 31 Jul 2009 11:33:48 +0800 Subject: *Fixed /played chat command. Author: tomrus88 --HG-- branch : trunk --- src/game/MiscHandler.cpp | 16 +- src/game/PointMovementGenerator.cpp | 1 - src/game/SharedDefines.h | 372 ++++++++++++++++++------------------ src/game/WorldSocket.cpp | 3 +- src/trinityrealm/AuthCodes.h | 2 +- src/trinityrealm/AuthSocket.cpp | 184 ++++++++++-------- 6 files changed, 300 insertions(+), 278 deletions(-) (limited to 'src/trinityrealm/AuthSocket.cpp') diff --git a/src/game/MiscHandler.cpp b/src/game/MiscHandler.cpp index 7dcdd272c51..48fdda872e9 100644 --- a/src/game/MiscHandler.cpp +++ b/src/game/MiscHandler.cpp @@ -1216,15 +1216,17 @@ void WorldSession::HandleWardenDataOpcode(WorldPacket& /*recv_data*/) */ } -void WorldSession::HandlePlayedTime(WorldPacket& /*recv_data*/) +void WorldSession::HandlePlayedTime(WorldPacket& recv_data) { - uint32 TotalTimePlayed = GetPlayer()->GetTotalPlayedTime(); - uint32 LevelPlayedTime = GetPlayer()->GetLevelPlayedTime(); + CHECK_PACKET_SIZE(recv_data, 1); + + uint8 unk1; + recv_data >> unk1; // 0 or 1 expected - WorldPacket data(SMSG_PLAYED_TIME, 9); - data << TotalTimePlayed; - data << LevelPlayedTime; - data << uint8(1); + WorldPacket data(SMSG_PLAYED_TIME, 4 + 4 + 1); + data << uint32(_player->GetTotalPlayedTime()); + data << uint32(_player->GetLevelPlayedTime()); + data << uint8(unk1); // 0 - will not show in chat frame SendPacket(&data); } diff --git a/src/game/PointMovementGenerator.cpp b/src/game/PointMovementGenerator.cpp index 24baa4939b4..ffd036e9c21 100644 --- a/src/game/PointMovementGenerator.cpp +++ b/src/game/PointMovementGenerator.cpp @@ -30,7 +30,6 @@ template void PointMovementGenerator::Initialize(T &unit) { unit.StopMoving(); - unit.clearUnitState(UNIT_STAT_MOVING); Traveller traveller(unit); // knockback effect has UNIT_STAT_JUMPING set,so if here we disable sentmonstermove there will be creature position sync problem between client and server i_destinationHolder.SetDestination(traveller,i_x,i_y,i_z, true /* !unit.hasUnitState(UNIT_STAT_JUMPING)*/); diff --git a/src/game/SharedDefines.h b/src/game/SharedDefines.h index 0c643ef8a42..441234eed73 100644 --- a/src/game/SharedDefines.h +++ b/src/game/SharedDefines.h @@ -703,190 +703,194 @@ enum SpellEffects enum SpellCastResult { - SPELL_FAILED_AFFECTING_COMBAT = 0, - SPELL_FAILED_ALREADY_AT_FULL_HEALTH = 1, - SPELL_FAILED_ALREADY_AT_FULL_MANA = 2, - SPELL_FAILED_ALREADY_AT_FULL_POWER = 3, - SPELL_FAILED_ALREADY_BEING_TAMED = 4, - SPELL_FAILED_ALREADY_HAVE_CHARM = 5, - SPELL_FAILED_ALREADY_HAVE_SUMMON = 6, - SPELL_FAILED_ALREADY_OPEN = 7, - SPELL_FAILED_AURA_BOUNCED = 8, - SPELL_FAILED_AUTOTRACK_INTERRUPTED = 9, - SPELL_FAILED_BAD_IMPLICIT_TARGETS = 10, - SPELL_FAILED_BAD_TARGETS = 11, - SPELL_FAILED_CANT_BE_CHARMED = 12, - SPELL_FAILED_CANT_BE_DISENCHANTED = 13, - SPELL_FAILED_CANT_BE_DISENCHANTED_SKILL = 14, - SPELL_FAILED_CANT_BE_MILLED = 15, - SPELL_FAILED_CANT_BE_PROSPECTED = 16, - SPELL_FAILED_CANT_CAST_ON_TAPPED = 17, - SPELL_FAILED_CANT_DUEL_WHILE_INVISIBLE = 18, - SPELL_FAILED_CANT_DUEL_WHILE_STEALTHED = 19, - SPELL_FAILED_CANT_STEALTH = 20, - SPELL_FAILED_CASTER_AURASTATE = 21, - SPELL_FAILED_CASTER_DEAD = 22, - SPELL_FAILED_CHARMED = 23, - SPELL_FAILED_CHEST_IN_USE = 24, - SPELL_FAILED_CONFUSED = 25, - SPELL_FAILED_DONT_REPORT = 26, - SPELL_FAILED_EQUIPPED_ITEM = 27, - SPELL_FAILED_EQUIPPED_ITEM_CLASS = 28, - SPELL_FAILED_EQUIPPED_ITEM_CLASS_MAINHAND = 29, - SPELL_FAILED_EQUIPPED_ITEM_CLASS_OFFHAND = 30, - SPELL_FAILED_ERROR = 31, - SPELL_FAILED_FIZZLE = 32, - SPELL_FAILED_FLEEING = 33, - SPELL_FAILED_FOOD_LOWLEVEL = 34, - SPELL_FAILED_HIGHLEVEL = 35, - SPELL_FAILED_HUNGER_SATIATED = 36, - SPELL_FAILED_IMMUNE = 37, - SPELL_FAILED_INCORRECT_AREA = 38, - SPELL_FAILED_INTERRUPTED = 39, - SPELL_FAILED_INTERRUPTED_COMBAT = 40, - SPELL_FAILED_ITEM_ALREADY_ENCHANTED = 41, - SPELL_FAILED_ITEM_GONE = 42, - SPELL_FAILED_ITEM_NOT_FOUND = 43, - SPELL_FAILED_ITEM_NOT_READY = 44, - SPELL_FAILED_LEVEL_REQUIREMENT = 45, - SPELL_FAILED_LINE_OF_SIGHT = 46, - SPELL_FAILED_LOWLEVEL = 47, - SPELL_FAILED_LOW_CASTLEVEL = 48, - SPELL_FAILED_MAINHAND_EMPTY = 49, - SPELL_FAILED_MOVING = 50, - SPELL_FAILED_NEED_AMMO = 51, - SPELL_FAILED_NEED_AMMO_POUCH = 52, - SPELL_FAILED_NEED_EXOTIC_AMMO = 53, - SPELL_FAILED_NEED_MORE_ITEMS = 54, - SPELL_FAILED_NOPATH = 55, - SPELL_FAILED_NOT_BEHIND = 56, - SPELL_FAILED_NOT_FISHABLE = 57, - SPELL_FAILED_NOT_FLYING = 58, - SPELL_FAILED_NOT_HERE = 59, - SPELL_FAILED_NOT_INFRONT = 60, - SPELL_FAILED_NOT_IN_CONTROL = 61, - SPELL_FAILED_NOT_KNOWN = 62, - SPELL_FAILED_NOT_MOUNTED = 63, - SPELL_FAILED_NOT_ON_TAXI = 64, - SPELL_FAILED_NOT_ON_TRANSPORT = 65, - SPELL_FAILED_NOT_READY = 66, - SPELL_FAILED_NOT_SHAPESHIFT = 67, - SPELL_FAILED_NOT_STANDING = 68, - SPELL_FAILED_NOT_TRADEABLE = 69, - SPELL_FAILED_NOT_TRADING = 70, - SPELL_FAILED_NOT_UNSHEATHED = 71, - SPELL_FAILED_NOT_WHILE_GHOST = 72, - SPELL_FAILED_NOT_WHILE_LOOTING = 73, - SPELL_FAILED_NO_AMMO = 74, - SPELL_FAILED_NO_CHARGES_REMAIN = 75, - SPELL_FAILED_NO_CHAMPION = 76, - SPELL_FAILED_NO_COMBO_POINTS = 77, - SPELL_FAILED_NO_DUELING = 78, - SPELL_FAILED_NO_ENDURANCE = 79, - SPELL_FAILED_NO_FISH = 80, - SPELL_FAILED_NO_ITEMS_WHILE_SHAPESHIFTED = 81, - SPELL_FAILED_NO_MOUNTS_ALLOWED = 82, - SPELL_FAILED_NO_PET = 83, - SPELL_FAILED_NO_POWER = 84, - SPELL_FAILED_NOTHING_TO_DISPEL = 85, - SPELL_FAILED_NOTHING_TO_STEAL = 86, - SPELL_FAILED_ONLY_ABOVEWATER = 87, - SPELL_FAILED_ONLY_DAYTIME = 88, - SPELL_FAILED_ONLY_INDOORS = 89, - SPELL_FAILED_ONLY_MOUNTED = 90, - SPELL_FAILED_ONLY_NIGHTTIME = 91, - SPELL_FAILED_ONLY_OUTDOORS = 92, - SPELL_FAILED_ONLY_SHAPESHIFT = 93, - SPELL_FAILED_ONLY_STEALTHED = 94, - SPELL_FAILED_ONLY_UNDERWATER = 95, - SPELL_FAILED_OUT_OF_RANGE = 96, - SPELL_FAILED_PACIFIED = 97, - SPELL_FAILED_POSSESSED = 98, - SPELL_FAILED_REAGENTS = 99, - SPELL_FAILED_REQUIRES_AREA = 100, - SPELL_FAILED_REQUIRES_SPELL_FOCUS = 101, - SPELL_FAILED_ROOTED = 102, - SPELL_FAILED_SILENCED = 103, - SPELL_FAILED_SPELL_IN_PROGRESS = 104, - SPELL_FAILED_SPELL_LEARNED = 105, - SPELL_FAILED_SPELL_UNAVAILABLE = 106, - SPELL_FAILED_STUNNED = 107, - SPELL_FAILED_TARGETS_DEAD = 108, - SPELL_FAILED_TARGET_AFFECTING_COMBAT = 109, - SPELL_FAILED_TARGET_AURASTATE = 110, - SPELL_FAILED_TARGET_DUELING = 111, - SPELL_FAILED_TARGET_ENEMY = 112, - SPELL_FAILED_TARGET_ENRAGED = 113, - SPELL_FAILED_TARGET_FRIENDLY = 114, - SPELL_FAILED_TARGET_IN_COMBAT = 115, - SPELL_FAILED_TARGET_IS_PLAYER = 116, - SPELL_FAILED_TARGET_IS_PLAYER_CONTROLLED = 117, - SPELL_FAILED_TARGET_NOT_DEAD = 118, - SPELL_FAILED_TARGET_NOT_IN_PARTY = 119, - SPELL_FAILED_TARGET_NOT_LOOTED = 120, - SPELL_FAILED_TARGET_NOT_PLAYER = 121, - SPELL_FAILED_TARGET_NO_POCKETS = 122, - SPELL_FAILED_TARGET_NO_WEAPONS = 123, - SPELL_FAILED_TARGET_NO_RANGED_WEAPONS = 124, - SPELL_FAILED_TARGET_UNSKINNABLE = 125, - SPELL_FAILED_THIRST_SATIATED = 126, - SPELL_FAILED_TOO_CLOSE = 127, - SPELL_FAILED_TOO_MANY_OF_ITEM = 128, - SPELL_FAILED_TOTEM_CATEGORY = 129, - SPELL_FAILED_TOTEMS = 130, - SPELL_FAILED_TRY_AGAIN = 131, - SPELL_FAILED_UNIT_NOT_BEHIND = 132, - SPELL_FAILED_UNIT_NOT_INFRONT = 133, - SPELL_FAILED_WRONG_PET_FOOD = 134, - SPELL_FAILED_NOT_WHILE_FATIGUED = 135, - SPELL_FAILED_TARGET_NOT_IN_INSTANCE = 136, - SPELL_FAILED_NOT_WHILE_TRADING = 137, - SPELL_FAILED_TARGET_NOT_IN_RAID = 138, - SPELL_FAILED_TARGET_FREEFORALL = 139, - SPELL_FAILED_NO_EDIBLE_CORPSES = 140, - SPELL_FAILED_ONLY_BATTLEGROUNDS = 141, - SPELL_FAILED_TARGET_NOT_GHOST = 142, - SPELL_FAILED_TRANSFORM_UNUSABLE = 143, - SPELL_FAILED_WRONG_WEATHER = 144, - SPELL_FAILED_DAMAGE_IMMUNE = 145, - SPELL_FAILED_PREVENTED_BY_MECHANIC = 146, - SPELL_FAILED_PLAY_TIME = 147, - SPELL_FAILED_REPUTATION = 148, - SPELL_FAILED_MIN_SKILL = 149, - SPELL_FAILED_NOT_IN_ARENA = 150, - SPELL_FAILED_NOT_ON_SHAPESHIFT = 151, - SPELL_FAILED_NOT_ON_STEALTHED = 152, - SPELL_FAILED_NOT_ON_DAMAGE_IMMUNE = 153, - SPELL_FAILED_NOT_ON_MOUNTED = 154, - SPELL_FAILED_TOO_SHALLOW = 155, - SPELL_FAILED_TARGET_NOT_IN_SANCTUARY = 156, - SPELL_FAILED_TARGET_IS_TRIVIAL = 157, - SPELL_FAILED_BM_OR_INVISGOD = 158, - SPELL_FAILED_EXPERT_RIDING_REQUIREMENT = 159, - SPELL_FAILED_ARTISAN_RIDING_REQUIREMENT = 160, - SPELL_FAILED_NOT_IDLE = 161, - SPELL_FAILED_NOT_INACTIVE = 162, - SPELL_FAILED_PARTIAL_PLAYTIME = 163, - SPELL_FAILED_NO_PLAYTIME = 164, - SPELL_FAILED_NOT_IN_BATTLEGROUND = 165, - SPELL_FAILED_NOT_IN_RAID_INSTANCE = 166, - SPELL_FAILED_ONLY_IN_ARENA = 167, - SPELL_FAILED_TARGET_LOCKED_TO_RAID_INSTANCE = 168, - SPELL_FAILED_ON_USE_ENCHANT = 169, - SPELL_FAILED_NOT_ON_GROUND = 170, - SPELL_FAILED_CUSTOM_ERROR = 171, - SPELL_FAILED_CANT_DO_THAT_RIGHT_NOW = 172, - SPELL_FAILED_TOO_MANY_SOCKETS = 173, - SPELL_FAILED_INVALID_GLYPH = 174, - SPELL_FAILED_UNIQUE_GLYPH = 175, - SPELL_FAILED_GLYPH_SOCKET_LOCKED = 176, - SPELL_FAILED_NO_VALID_TARGETS = 177, - SPELL_FAILED_ITEM_AT_MAX_CHARGES = 178, - SPELL_FAILED_NOT_IN_BARBERSHOP = 179, - SPELL_FAILED_FISHING_TOO_LOW = 180, - SPELL_FAILED_UNKNOWN = 181, - - SPELL_CAST_OK = 255 //custom value, don't must be send to client + SPELL_FAILED_AFFECTING_COMBAT = 0x00, + SPELL_FAILED_ALREADY_AT_FULL_HEALTH = 0x01, + SPELL_FAILED_ALREADY_AT_FULL_MANA = 0x02, + SPELL_FAILED_ALREADY_AT_FULL_POWER = 0x03, + SPELL_FAILED_ALREADY_BEING_TAMED = 0x04, + SPELL_FAILED_ALREADY_HAVE_CHARM = 0x05, + SPELL_FAILED_ALREADY_HAVE_SUMMON = 0x06, + SPELL_FAILED_ALREADY_OPEN = 0x07, + SPELL_FAILED_AURA_BOUNCED = 0x08, + SPELL_FAILED_AUTOTRACK_INTERRUPTED = 0x09, + SPELL_FAILED_BAD_IMPLICIT_TARGETS = 0x0A, + SPELL_FAILED_BAD_TARGETS = 0x0B, + SPELL_FAILED_CANT_BE_CHARMED = 0x0C, + SPELL_FAILED_CANT_BE_DISENCHANTED = 0x0D, + SPELL_FAILED_CANT_BE_DISENCHANTED_SKILL = 0x0E, + SPELL_FAILED_CANT_BE_MILLED = 0x0F, + SPELL_FAILED_CANT_BE_PROSPECTED = 0x10, + SPELL_FAILED_CANT_CAST_ON_TAPPED = 0x11, + SPELL_FAILED_CANT_DUEL_WHILE_INVISIBLE = 0x12, + SPELL_FAILED_CANT_DUEL_WHILE_STEALTHED = 0x13, + SPELL_FAILED_CANT_STEALTH = 0x14, + SPELL_FAILED_CASTER_AURASTATE = 0x15, + SPELL_FAILED_CASTER_DEAD = 0x16, + SPELL_FAILED_CHARMED = 0x17, + SPELL_FAILED_CHEST_IN_USE = 0x18, + SPELL_FAILED_CONFUSED = 0x19, + SPELL_FAILED_DONT_REPORT = 0x1A, + SPELL_FAILED_EQUIPPED_ITEM = 0x1B, + SPELL_FAILED_EQUIPPED_ITEM_CLASS = 0x1C, + SPELL_FAILED_EQUIPPED_ITEM_CLASS_MAINHAND = 0x1D, + SPELL_FAILED_EQUIPPED_ITEM_CLASS_OFFHAND = 0x1E, + SPELL_FAILED_ERROR = 0x1F, + SPELL_FAILED_FIZZLE = 0x20, + SPELL_FAILED_FLEEING = 0x21, + SPELL_FAILED_FOOD_LOWLEVEL = 0x22, + SPELL_FAILED_HIGHLEVEL = 0x23, + SPELL_FAILED_HUNGER_SATIATED = 0x24, + SPELL_FAILED_IMMUNE = 0x25, + SPELL_FAILED_INCORRECT_AREA = 0x26, + SPELL_FAILED_INTERRUPTED = 0x27, + SPELL_FAILED_INTERRUPTED_COMBAT = 0x28, + SPELL_FAILED_ITEM_ALREADY_ENCHANTED = 0x29, + SPELL_FAILED_ITEM_GONE = 0x2A, + SPELL_FAILED_ITEM_NOT_FOUND = 0x2B, + SPELL_FAILED_ITEM_NOT_READY = 0x2C, + SPELL_FAILED_LEVEL_REQUIREMENT = 0x2D, + SPELL_FAILED_LINE_OF_SIGHT = 0x2E, + SPELL_FAILED_LOWLEVEL = 0x2F, + SPELL_FAILED_LOW_CASTLEVEL = 0x30, + SPELL_FAILED_MAINHAND_EMPTY = 0x31, + SPELL_FAILED_MOVING = 0x32, + SPELL_FAILED_NEED_AMMO = 0x33, + SPELL_FAILED_NEED_AMMO_POUCH = 0x34, + SPELL_FAILED_NEED_EXOTIC_AMMO = 0x35, + SPELL_FAILED_NEED_MORE_ITEMS = 0x36, + SPELL_FAILED_NOPATH = 0x37, + SPELL_FAILED_NOT_BEHIND = 0x38, + SPELL_FAILED_NOT_FISHABLE = 0x39, + SPELL_FAILED_NOT_FLYING = 0x3A, + SPELL_FAILED_NOT_HERE = 0x3B, + SPELL_FAILED_NOT_INFRONT = 0x3C, + SPELL_FAILED_NOT_IN_CONTROL = 0x3D, + SPELL_FAILED_NOT_KNOWN = 0x3E, + SPELL_FAILED_NOT_MOUNTED = 0x3F, + SPELL_FAILED_NOT_ON_TAXI = 0x40, + SPELL_FAILED_NOT_ON_TRANSPORT = 0x41, + SPELL_FAILED_NOT_READY = 0x42, + SPELL_FAILED_NOT_SHAPESHIFT = 0x43, + SPELL_FAILED_NOT_STANDING = 0x44, + SPELL_FAILED_NOT_TRADEABLE = 0x45, + SPELL_FAILED_NOT_TRADING = 0x46, + SPELL_FAILED_NOT_UNSHEATHED = 0x47, + SPELL_FAILED_NOT_WHILE_GHOST = 0x48, + SPELL_FAILED_NOT_WHILE_LOOTING = 0x49, + SPELL_FAILED_NO_AMMO = 0x4A, + SPELL_FAILED_NO_CHARGES_REMAIN = 0x4B, + SPELL_FAILED_NO_CHAMPION = 0x4C, + SPELL_FAILED_NO_COMBO_POINTS = 0x4D, + SPELL_FAILED_NO_DUELING = 0x4E, + SPELL_FAILED_NO_ENDURANCE = 0x4F, + SPELL_FAILED_NO_FISH = 0x50, + SPELL_FAILED_NO_ITEMS_WHILE_SHAPESHIFTED = 0x51, + SPELL_FAILED_NO_MOUNTS_ALLOWED = 0x52, + SPELL_FAILED_NO_PET = 0x53, + SPELL_FAILED_NO_POWER = 0x54, + SPELL_FAILED_NOTHING_TO_DISPEL = 0x55, + SPELL_FAILED_NOTHING_TO_STEAL = 0x56, + SPELL_FAILED_ONLY_ABOVEWATER = 0x57, + SPELL_FAILED_ONLY_DAYTIME = 0x58, + SPELL_FAILED_ONLY_INDOORS = 0x59, + SPELL_FAILED_ONLY_MOUNTED = 0x5A, + SPELL_FAILED_ONLY_NIGHTTIME = 0x5B, + SPELL_FAILED_ONLY_OUTDOORS = 0x5C, + SPELL_FAILED_ONLY_SHAPESHIFT = 0x5D, + SPELL_FAILED_ONLY_STEALTHED = 0x5E, + SPELL_FAILED_ONLY_UNDERWATER = 0x5F, + SPELL_FAILED_OUT_OF_RANGE = 0x60, + SPELL_FAILED_PACIFIED = 0x61, + SPELL_FAILED_POSSESSED = 0x62, + SPELL_FAILED_REAGENTS = 0x63, + SPELL_FAILED_REQUIRES_AREA = 0x64, + SPELL_FAILED_REQUIRES_SPELL_FOCUS = 0x65, + SPELL_FAILED_ROOTED = 0x66, + SPELL_FAILED_SILENCED = 0x67, + SPELL_FAILED_SPELL_IN_PROGRESS = 0x68, + SPELL_FAILED_SPELL_LEARNED = 0x69, + SPELL_FAILED_SPELL_UNAVAILABLE = 0x6A, + SPELL_FAILED_STUNNED = 0x6B, + SPELL_FAILED_TARGETS_DEAD = 0x6C, + SPELL_FAILED_TARGET_AFFECTING_COMBAT = 0x6D, + SPELL_FAILED_TARGET_AURASTATE = 0x6E, + SPELL_FAILED_TARGET_DUELING = 0x6F, + SPELL_FAILED_TARGET_ENEMY = 0x70, + SPELL_FAILED_TARGET_ENRAGED = 0x71, + SPELL_FAILED_TARGET_FRIENDLY = 0x72, + SPELL_FAILED_TARGET_IN_COMBAT = 0x73, + SPELL_FAILED_TARGET_IS_PLAYER = 0x74, + SPELL_FAILED_TARGET_IS_PLAYER_CONTROLLED = 0x75, + SPELL_FAILED_TARGET_NOT_DEAD = 0x76, + SPELL_FAILED_TARGET_NOT_IN_PARTY = 0x77, + SPELL_FAILED_TARGET_NOT_LOOTED = 0x78, + SPELL_FAILED_TARGET_NOT_PLAYER = 0x79, + SPELL_FAILED_TARGET_NO_POCKETS = 0x7A, + SPELL_FAILED_TARGET_NO_WEAPONS = 0x7B, + SPELL_FAILED_TARGET_NO_RANGED_WEAPONS = 0x7C, + SPELL_FAILED_TARGET_UNSKINNABLE = 0x7D, + SPELL_FAILED_THIRST_SATIATED = 0x7E, + SPELL_FAILED_TOO_CLOSE = 0x7F, + SPELL_FAILED_TOO_MANY_OF_ITEM = 0x80, + SPELL_FAILED_TOTEM_CATEGORY = 0x81, + SPELL_FAILED_TOTEMS = 0x82, + SPELL_FAILED_TRY_AGAIN = 0x83, + SPELL_FAILED_UNIT_NOT_BEHIND = 0x84, + SPELL_FAILED_UNIT_NOT_INFRONT = 0x85, + SPELL_FAILED_WRONG_PET_FOOD = 0x86, + SPELL_FAILED_NOT_WHILE_FATIGUED = 0x87, + SPELL_FAILED_TARGET_NOT_IN_INSTANCE = 0x88, + SPELL_FAILED_NOT_WHILE_TRADING = 0x89, + SPELL_FAILED_TARGET_NOT_IN_RAID = 0x8A, + SPELL_FAILED_TARGET_FREEFORALL = 0x8B, + SPELL_FAILED_NO_EDIBLE_CORPSES = 0x8C, + SPELL_FAILED_ONLY_BATTLEGROUNDS = 0x8D, + SPELL_FAILED_TARGET_NOT_GHOST = 0x8E, + SPELL_FAILED_TRANSFORM_UNUSABLE = 0x8F, + SPELL_FAILED_WRONG_WEATHER = 0x90, + SPELL_FAILED_DAMAGE_IMMUNE = 0x91, + SPELL_FAILED_PREVENTED_BY_MECHANIC = 0x92, + SPELL_FAILED_PLAY_TIME = 0x93, + SPELL_FAILED_REPUTATION = 0x94, + SPELL_FAILED_MIN_SKILL = 0x95, + SPELL_FAILED_NOT_IN_ARENA = 0x96, + SPELL_FAILED_NOT_ON_SHAPESHIFT = 0x97, + SPELL_FAILED_NOT_ON_STEALTHED = 0x98, + SPELL_FAILED_NOT_ON_DAMAGE_IMMUNE = 0x99, + SPELL_FAILED_NOT_ON_MOUNTED = 0x9A, + SPELL_FAILED_TOO_SHALLOW = 0x9B, + SPELL_FAILED_TARGET_NOT_IN_SANCTUARY = 0x9C, + SPELL_FAILED_TARGET_IS_TRIVIAL = 0x9D, + SPELL_FAILED_BM_OR_INVISGOD = 0x9E, + SPELL_FAILED_EXPERT_RIDING_REQUIREMENT = 0x9F, + SPELL_FAILED_ARTISAN_RIDING_REQUIREMENT = 0xA0, + SPELL_FAILED_NOT_IDLE = 0xA1, + SPELL_FAILED_NOT_INACTIVE = 0xA2, + SPELL_FAILED_PARTIAL_PLAYTIME = 0xA3, + SPELL_FAILED_NO_PLAYTIME = 0xA4, + SPELL_FAILED_NOT_IN_BATTLEGROUND = 0xA5, + SPELL_FAILED_NOT_IN_RAID_INSTANCE = 0xA6, + SPELL_FAILED_ONLY_IN_ARENA = 0xA7, + SPELL_FAILED_TARGET_LOCKED_TO_RAID_INSTANCE = 0xA8, + SPELL_FAILED_ON_USE_ENCHANT = 0xA9, + SPELL_FAILED_NOT_ON_GROUND = 0xAA, + SPELL_FAILED_CUSTOM_ERROR = 0xAB, + SPELL_FAILED_CANT_DO_THAT_RIGHT_NOW = 0xAC, + SPELL_FAILED_TOO_MANY_SOCKETS = 0xAD, + SPELL_FAILED_INVALID_GLYPH = 0xAE, + SPELL_FAILED_UNIQUE_GLYPH = 0xAF, + SPELL_FAILED_GLYPH_SOCKET_LOCKED = 0xB0, + SPELL_FAILED_NO_VALID_TARGETS = 0xB1, + SPELL_FAILED_ITEM_AT_MAX_CHARGES = 0xB2, + SPELL_FAILED_NOT_IN_BARBERSHOP = 0xB3, + SPELL_FAILED_FISHING_TOO_LOW = 0xB4, + SPELL_FAILED_ITEM_ENCHANT_TRADE_WINDOW = 0xB5, + SPELL_FAILED_SUMMON_PENDING = 0xB6, + SPELL_FAILED_MAX_SOCKETS = 0xB7, + SPELL_FAILED_PET_CAN_RENAME = 0xB8, + SPELL_FAILED_UNKNOWN = 0xB9, + + SPELL_CAST_OK = 0xFF // custom value, don't must be send to client }; // Spell aura states diff --git a/src/game/WorldSocket.cpp b/src/game/WorldSocket.cpp index 1acafa88487..872ca67e95b 100644 --- a/src/game/WorldSocket.cpp +++ b/src/game/WorldSocket.cpp @@ -709,10 +709,11 @@ int WorldSocket::HandleAuthSession (WorldPacket& recvPacket) recvPacket >> clientSeed; recvPacket.read (digest, 20); - DEBUG_LOG ("WorldSocket::HandleAuthSession: client %u, unk2 %u, account %s, clientseed %u", + DEBUG_LOG ("WorldSocket::HandleAuthSession: client %u, unk2 %u, account %s, unk3 %u, clientseed %u", BuiltNumberClient, unk2, account.c_str (), + unk3, clientSeed); // Get the account information from the realmd database diff --git a/src/trinityrealm/AuthCodes.h b/src/trinityrealm/AuthCodes.h index 4ef5e4e8699..2a215968c3b 100644 --- a/src/trinityrealm/AuthCodes.h +++ b/src/trinityrealm/AuthCodes.h @@ -70,6 +70,6 @@ enum LoginResult // others will not and opposite // will only support WoW, WoW:TBC and WoW:WotLK 3.1.3 client build 9947... -#define EXPECTED_TRINITY_CLIENT_BUILD {9947, 0} +#define EXPECTED_MANGOS_CLIENT_BUILD {9947, 0} #endif diff --git a/src/trinityrealm/AuthSocket.cpp b/src/trinityrealm/AuthSocket.cpp index a882a6d1941..6a6cde45895 100644 --- a/src/trinityrealm/AuthSocket.cpp +++ b/src/trinityrealm/AuthSocket.cpp @@ -112,7 +112,7 @@ typedef struct AUTH_LOGON_PROOF_C uint8 M1[20]; uint8 crc_hash[20]; uint8 number_of_keys; - uint8 unk; // Added in 1.12.x client branch + uint8 securityFlags; // 0x00-0x04 } sAuthLogonProof_C; /* typedef struct @@ -264,17 +264,11 @@ void AuthSocket::OnRead() ///- Get the command out of it ibuf.SoftRead((char *)&_cmd, 1); // UQ1: No longer exists in new net code ??? - //ibuf.Read((char *)&_cmd, 1); - /*char *command = (char *)malloc(1); - ibuf.Read(command, 1); - - _cmd = (uint8)command;*/ - // assert(0); size_t i; ///- Circle through known commands and call the correct command handler - for (i=0;icountry[4-i-1]; - sLog.outBasic("[AuthChallenge] account %s is using '%c%c%c%c' locale (%u)", _login.c_str (), ch->country[3],ch->country[2],ch->country[1],ch->country[0], GetLocaleByName(_localizationName)); + sLog.outBasic("[AuthChallenge] account %s is using '%c%c%c%c' locale (%u)", _login.c_str (), ch->country[3], ch->country[2], ch->country[1], ch->country[0], GetLocaleByName(_localizationName)); } } delete result; @@ -510,13 +525,13 @@ bool AuthSocket::_HandleLogonProof() ibuf.Read((char *)&lp, sizeof(sAuthLogonProof_C)); ///- Check if the client has one of the expected version numbers - bool valid_version=false; - int accepted_versions[]=EXPECTED_TRINITY_CLIENT_BUILD; - for(int i=0;accepted_versions[i];i++) + bool valid_version = false; + int accepted_versions[] = EXPECTED_MANGOS_CLIENT_BUILD; + for(int i = 0; accepted_versions[i]; ++i) { - if(_build==accepted_versions[i]) + if(_build == accepted_versions[i]) { - valid_version=true; + valid_version = true; break; } } @@ -529,9 +544,9 @@ bool AuthSocket::_HandleLogonProof() // 24 = len("./patches/65535enGB.mpq")+1 char tmp[24]; // No buffer overflow (fixed length of arguments) - sprintf(tmp,"./patches/%d%s.mpq",_build, _localizationName.c_str()); - // This will be closed at the destruction of the AuthSocket (client deconnection) - FILE *pFile=fopen(tmp,"rb"); + sprintf(tmp, "./patches/%d%s.mpq", _build, _localizationName.c_str()); + // This will be closed at the destruction of the AuthSocket (client disconnection) + FILE *pFile = fopen(tmp, "rb"); if(!pFile) { @@ -540,37 +555,37 @@ bool AuthSocket::_HandleLogonProof() pkt << (uint8) 0x00; pkt << (uint8) REALM_AUTH_WRONG_BUILD_NUMBER; DEBUG_LOG("[AuthChallenge] %u is not a valid client version!", _build); - DEBUG_LOG("[AuthChallenge] Patch %s not found",tmp); + DEBUG_LOG("[AuthChallenge] Patch %s not found", tmp); SendBuf((char const*)pkt.contents(), pkt.size()); return true; } else // have patch { - pPatch=pFile; + pPatch = pFile; XFER_INIT xferh; ///- Get the MD5 hash of the patch file (get it from preloaded Patcher cache or calculate it) - if(PatchesCache.GetHash(tmp,(uint8*)&xferh.md5)) + if(PatchesCache.GetHash(tmp, (uint8*)&xferh.md5)) { - DEBUG_LOG("\n[AuthChallenge] Found precached patch info for patch %s",tmp); + DEBUG_LOG("\n[AuthChallenge] Found precached patch info for patch %s", tmp); } else - { //calculate patch md5 - printf("\n[AuthChallenge] Patch info for %s was not cached.",tmp); + { // calculate patch md5 + printf("\n[AuthChallenge] Patch info for %s was not cached.", tmp); PatchesCache.LoadPatchMD5(tmp); - PatchesCache.GetHash(tmp,(uint8*)&xferh.md5); + PatchesCache.GetHash(tmp, (uint8*)&xferh.md5); } ///- Send a packet to the client with the file length and MD5 hash - uint8 data[2]={AUTH_LOGON_PROOF,REALM_AUTH_UPDATE_CLIENT}; - SendBuf((const char*)data,sizeof(data)); + uint8 data[2] = { AUTH_LOGON_PROOF, REALM_AUTH_UPDATE_CLIENT }; + SendBuf((const char*)data, sizeof(data)); - memcpy(&xferh,"0\x05Patch",7); - xferh.cmd=XFER_INITIATE; - fseek(pPatch,0,SEEK_END); - xferh.file_size=ftell(pPatch); + memcpy(&xferh, "0\x05Patch", 7); + xferh.cmd = XFER_INITIATE; + fseek(pPatch, 0, SEEK_END); + xferh.file_size = ftell(pPatch); - SendBuf((const char*)&xferh,sizeof(xferh)); + SendBuf((const char*)&xferh, sizeof(xferh)); return true; } } @@ -591,27 +606,27 @@ bool AuthSocket::_HandleLogonProof() uint8 t1[16]; uint8 vK[40]; memcpy(t, S.AsByteArray(), 32); - for (int i = 0; i < 16; i++) + for (int i = 0; i < 16; ++i) { - t1[i] = t[i*2]; + t1[i] = t[i * 2]; } sha.Initialize(); sha.UpdateData(t1, 16); sha.Finalize(); - for (int i = 0; i < 20; i++) + for (int i = 0; i < 20; ++i) { - vK[i*2] = sha.GetDigest()[i]; + vK[i * 2] = sha.GetDigest()[i]; } - for (int i = 0; i < 16; i++) + for (int i = 0; i < 16; ++i) { - t1[i] = t[i*2+1]; + t1[i] = t[i * 2 + 1]; } sha.Initialize(); sha.UpdateData(t1, 16); sha.Finalize(); - for (int i = 0; i < 20; i++) + for (int i = 0; i < 20; ++i) { - vK[i*2+1] = sha.GetDigest()[i]; + vK[i * 2 + 1] = sha.GetDigest()[i]; } K.SetBinary(vK, 40); @@ -624,7 +639,7 @@ bool AuthSocket::_HandleLogonProof() sha.Initialize(); sha.UpdateBigNumbers(&g, NULL); sha.Finalize(); - for (int i = 0; i < 20; i++) + for (int i = 0; i < 20; ++i) { hash[i] ^= sha.GetDigest()[i]; } @@ -676,8 +691,8 @@ bool AuthSocket::_HandleLogonProof() } else { - char data[4]={AUTH_LOGON_PROOF,REALM_AUTH_NO_MATCH,3,0}; - SendBuf(data,sizeof(data)); + char data[4]= { AUTH_LOGON_PROOF, REALM_AUTH_NO_MATCH, 3, 0}; + SendBuf(data, sizeof(data)); sLog.outBasic("[AuthChallenge] account %s tried to login with wrong password!",_login.c_str ()); uint32 MaxWrongPassCount = sConfig.GetIntDefault("WrongPass.MaxCount", 0); @@ -772,7 +787,7 @@ bool AuthSocket::_HandleReconnectChallenge() ByteBuffer pkt; pkt << (uint8) AUTH_RECONNECT_CHALLENGE; pkt << (uint8) 0x00; - _reconnectProof.SetRand(16*8); + _reconnectProof.SetRand(16 * 8); pkt.append(_reconnectProof.AsByteBuffer()); // 16 bytes random pkt << (uint64) 0x00 << (uint64) 0x00; // 16 bytes zeros SendBuf((char const*)pkt.contents(), pkt.size()); @@ -854,7 +869,7 @@ bool AuthSocket::_HandleRealmList() pkt << (uint32) 0; pkt << (uint16) m_realmList.size(); RealmList::RealmMap::const_iterator i; - for( i = m_realmList.begin(); i != m_realmList.end(); i++ ) + for( i = m_realmList.begin(); i != m_realmList.end(); ++i ) { uint8 AmountOfCharacters; @@ -901,7 +916,7 @@ bool AuthSocket::_HandleXferResume() { DEBUG_LOG("Entering _HandleXferResume"); ///- Check packet length and patch existence - if (ibuf.GetLength()<9 || !pPatch) + if (ibuf.GetLength() < 9 || !pPatch) { sLog.outError("Error while resuming patch transfer (wrong packet)"); return false; @@ -911,7 +926,7 @@ bool AuthSocket::_HandleXferResume() uint64 start; ibuf.Remove(1); ibuf.Read((char*)&start,sizeof(start)); - fseek(pPatch,start,0); + fseek(pPatch, start, 0); ACE_Based::Thread u(*new PatcherRunnable(this)); return true; @@ -942,9 +957,9 @@ bool AuthSocket::_HandleXferAccept() return false; } - ///- Launch a PatcherRunnable thread, starting at the begining of the patch file - ibuf.Remove(1); //clear input buffer - fseek(pPatch,0,0); + ///- Launch a PatcherRunnable thread, starting at the beginning of the patch file + ibuf.Remove(1); // clear input buffer + fseek(pPatch, 0, 0); ACE_Based::Thread u(*new PatcherRunnable(this)); return true; @@ -953,12 +968,12 @@ bool AuthSocket::_HandleXferAccept() /// Check if there is lag on the connection to the client bool AuthSocket::IsLag() { - return (TCP_BUFSIZE_READ-GetOutputLength()< 2*ChunkSize); + return (TCP_BUFSIZE_READ-GetOutputLength() < 2 * ChunkSize); } PatcherRunnable::PatcherRunnable(class AuthSocket * as) { - mySocket=as; + mySocket = as; } /// Send content of patch file to the client @@ -977,8 +992,8 @@ void PatcherRunnable::run() ACE_Based::Thread::Sleep(1); } ///- And send content of the patch file to the client - xfdata.data_size=fread(&xfdata.data,1,ChunkSize,mySocket->pPatch); - mySocket->SendBuf((const char*)&xfdata,xfdata.data_size +(sizeof(XFER_DATA_STRUCT)-ChunkSize)); + xfdata.data_size = fread(&xfdata.data, 1, ChunkSize, mySocket->pPatch); + mySocket->SendBuf((const char*)&xfdata, xfdata.data_size + (sizeof(XFER_DATA_STRUCT) - ChunkSize)); } } @@ -999,8 +1014,9 @@ void Patcher::LoadPatchesInfo() errno = 0; if ((dp = readdir(dirp)) != NULL) { - int l=strlen(dp->d_name); - if(l<8)continue; + int l = strlen(dp->d_name); + if(l < 8) + continue; if(!memcmp(&dp->d_name[l-4],".mpq",4)) LoadPatchMD5(dp->d_name); } @@ -1023,15 +1039,15 @@ void Patcher::LoadPatchesInfo() void Patcher::LoadPatchesInfo() { WIN32_FIND_DATA fil; - HANDLE hFil=FindFirstFile("./patches/*.mpq",&fil); - if(hFil==INVALID_HANDLE_VALUE) - return; //no patches were found + HANDLE hFil=FindFirstFile("./patches/*.mpq", &fil); + if(hFil == INVALID_HANDLE_VALUE) + return; // no patches were found do { LoadPatchMD5(fil.cFileName); } - while(FindNextFile(hFil,&fil)); + while(FindNextFile(hFil, &fil)); } #endif @@ -1041,11 +1057,11 @@ void Patcher::LoadPatchMD5(char * szFileName) ///- Try to open the patch file std::string path = "./patches/"; path += szFileName; - FILE * pPatch=fopen(path.c_str(),"rb"); - sLog.outDebug("Loading patch info from %s\n",path.c_str()); + FILE *pPatch = fopen(path.c_str(), "rb"); + sLog.outDebug("Loading patch info from %s\n", path.c_str()); if(!pPatch) { - sLog.outError("Error loading patch %s\n",path.c_str()); + sLog.outError("Error loading patch %s\n", path.c_str()); return; } @@ -1064,16 +1080,16 @@ void Patcher::LoadPatchMD5(char * szFileName) ///- Store the result in the internal patch hash map _patches[path] = new PATCH_INFO; - MD5_Final((uint8 *)&_patches[path]->md5 , &ctx); + MD5_Final((uint8 *)&_patches[path]->md5, &ctx); } /// Get cached MD5 hash for a given patch file -bool Patcher::GetHash(char * pat,uint8 mymd5[16]) +bool Patcher::GetHash(char * pat, uint8 mymd5[16]) { - for( Patches::iterator i = _patches.begin(); i != _patches.end(); i++ ) - if(!stricmp(pat,i->first.c_str () )) + for( Patches::iterator i = _patches.begin(); i != _patches.end(); ++i ) + if(!stricmp(pat, i->first.c_str())) { - memcpy(mymd5,i->second->md5,16); + memcpy(mymd5, i->second->md5, 16); return true; } @@ -1089,6 +1105,6 @@ Patcher::Patcher() /// Empty and delete the patch map on termination Patcher::~Patcher() { - for(Patches::iterator i = _patches.begin(); i != _patches.end(); i++ ) + for(Patches::iterator i = _patches.begin(); i != _patches.end(); ++i ) delete i->second; } -- cgit v1.2.3