From 46e4e9c056ed924dc24a60869445e8c2f248dec0 Mon Sep 17 00:00:00 2001 From: arrai Date: Sun, 4 Jan 2009 18:34:37 +0100 Subject: [PATCH] Replaced dynamic by static allocation in server packets header. Added command to test large packets. --- src/game/Chat.cpp | 1 + src/game/Chat.h | 1 + src/game/WorldSocket.cpp | 13 +------------ src/game/debugcmds.cpp | 10 ++++++++++ 4 files changed, 13 insertions(+), 12 deletions(-) diff --git a/src/game/Chat.cpp b/src/game/Chat.cpp index 6ad8318be..f21193476 100644 --- a/src/game/Chat.cpp +++ b/src/game/Chat.cpp @@ -201,6 +201,7 @@ ChatCommand * ChatHandler::getCommandTable() { "anim", SEC_GAMEMASTER, false, &ChatHandler::HandleAnimCommand, "", NULL }, { "lootrecipient", SEC_GAMEMASTER, false, &ChatHandler::HandleGetLootRecipient, "", NULL }, { "arena", SEC_ADMINISTRATOR, false, &ChatHandler::HandleDebugArenaCommand, "", NULL }, + { "sendlargepacket",SEC_ADMINISTRATOR, false, &ChatHandler::HandleSendLargePacketCommand, "", NULL }, { NULL, 0, false, NULL, "", NULL } }; diff --git a/src/game/Chat.h b/src/game/Chat.h index db2a7e663..68abd1395 100644 --- a/src/game/Chat.h +++ b/src/game/Chat.h @@ -435,6 +435,7 @@ class ChatHandler bool HandleGetLootRecipient(const char * args); bool HandleDebugArenaCommand(const char * args); bool HandleSpawnVehicle(const char * args); + bool HandleSendLargePacketCommand(const char * args); Player* getSelectedPlayer(); Creature* getSelectedCreature(); diff --git a/src/game/WorldSocket.cpp b/src/game/WorldSocket.cpp index a2a2a40bd..e407a04ea 100644 --- a/src/game/WorldSocket.cpp +++ b/src/game/WorldSocket.cpp @@ -61,14 +61,8 @@ struct ServerPktHeader if(isLargePacket()) { sLog.outDebug("initializing large server to client packet. Size: %u, cmd: %u", size, cmd); - header= new uint8[5]; header[headerIndex++] = 0x80|(0xFF &(size>>16)); } - else - { - header= new uint8[4]; - } - header[headerIndex++] = 0xFF &(size>>8); header[headerIndex++] = 0xFF &size; @@ -76,11 +70,6 @@ struct ServerPktHeader header[headerIndex++] = 0xFF & (cmd>>8); } - ~ServerPktHeader() - { - delete[] header; - } - uint8 getHeaderLength() { // cmd = 2 bytes, size= 2||3bytes @@ -93,7 +82,7 @@ struct ServerPktHeader } const uint32 size; - uint8 *header; + uint8 header[5]; }; struct ClientPktHeader diff --git a/src/game/debugcmds.cpp b/src/game/debugcmds.cpp index c9fa173aa..67412301d 100644 --- a/src/game/debugcmds.cpp +++ b/src/game/debugcmds.cpp @@ -576,3 +576,13 @@ bool ChatHandler::HandleSpawnVehicle(const char* args) return true; } + +bool ChatHandler::HandleSendLargePacketCommand(const char* args) +{ + const char* stuffingString = "This is a dummy string to push the packet's size beyond 128000 bytes. "; + std::ostringstream ss; + while(strlen(ss.str().c_str()) < 128000) + ss << stuffingString; + SendSysMessage(ss.str().c_str()); + return true; +} -- 2.11.4.GIT