Replaced dynamic by static allocation in server packets header. Added command to test large packets.

This commit is contained in:
arrai 2009-01-04 18:34:37 +01:00
parent dbc228370c
commit dfa29a883f
4 changed files with 13 additions and 12 deletions

View file

@ -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 }
};

View file

@ -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();

View file

@ -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

View file

@ -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;
}