|
|
|
@ -106,13 +106,14 @@ SOutPacket& SOutPacket::operator << (const core::vector3df& data)
|
|
|
|
|
memcpy(buff.pointer() + buff.size() - 12, &data.X, 12); |
|
|
|
|
return *this; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
#ifdef COMPILE_WITH_IRRLICHT |
|
|
|
|
SOutPacket& SOutPacket::operator << (const core::quaternion& data) |
|
|
|
|
{ |
|
|
|
|
enlargeBuffer(16); |
|
|
|
|
memcpy(buff.pointer() + buff.size() - 16, &data.X, 16); |
|
|
|
|
return *this; |
|
|
|
|
} |
|
|
|
|
#endif |
|
|
|
|
|
|
|
|
|
SOutPacket& SOutPacket::operator << (const c8* string) |
|
|
|
|
{ |
|
|
|
@ -232,7 +233,7 @@ void SOutPacket::decryptPacket(const c8 key[16])
|
|
|
|
|
buff = tmpbuff; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
SInPacket::SInPacket(const c8* buff, const u32 size) : pos(0), playerid(0) |
|
|
|
|
SInPacket::SInPacket(const c8* buff, const u32 size) : pos(0), playerid(0), valid(true) |
|
|
|
|
{ |
|
|
|
|
SInPacket::buff.set_used(size); |
|
|
|
|
memcpy(SInPacket::buff.pointer(), buff, size); |
|
|
|
@ -304,12 +305,13 @@ void SInPacket::operator >> (core::vector3df &data)
|
|
|
|
|
memcpy(&data.X,getData()+pos,12); |
|
|
|
|
pos+=12; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
#ifdef COMPILE_WITH_IRRLICHT |
|
|
|
|
void SInPacket::operator >> (core::quaternion &data) |
|
|
|
|
{ |
|
|
|
|
memcpy(&data.X,getData()+pos,16); |
|
|
|
|
pos+=16; |
|
|
|
|
} |
|
|
|
|
#endif |
|
|
|
|
|
|
|
|
|
void SInPacket::operator >> (char *string) |
|
|
|
|
{ |
|
|
|
@ -448,10 +450,19 @@ void SInPacket::deCompressPacket()
|
|
|
|
|
newBuff.set_used(newSize); |
|
|
|
|
|
|
|
|
|
uLongf destLen = newSize; |
|
|
|
|
uncompress((Bytef*)newBuff.pointer(), &destLen, (Bytef*)buff.pointer() + 4, buff.size() - 4); |
|
|
|
|
newBuff.set_used(destLen); |
|
|
|
|
|
|
|
|
|
buff = newBuff; |
|
|
|
|
int ret = uncompress((Bytef*)newBuff.pointer(), &destLen, (Bytef*)buff.pointer() + 4, buff.size() - 4); |
|
|
|
|
|
|
|
|
|
if (ret != Z_OK) |
|
|
|
|
{ |
|
|
|
|
valid = false; |
|
|
|
|
newBuff.set_used(0); |
|
|
|
|
newBuff.clear(); |
|
|
|
|
} |
|
|
|
|
else |
|
|
|
|
{ |
|
|
|
|
newBuff.set_used(destLen); |
|
|
|
|
buff = newBuff; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
void SInPacket::encryptPacket(const c8 key[16]) |
|
|
|
@ -470,6 +481,12 @@ void SInPacket::encryptPacket(const c8 key[16])
|
|
|
|
|
|
|
|
|
|
void SInPacket::decryptPacket(const c8 key[16]) |
|
|
|
|
{ |
|
|
|
|
if (buff.size() % 16 != 0) |
|
|
|
|
{ |
|
|
|
|
valid = false; |
|
|
|
|
return; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
CEncryption::SetEncryptionKey((u8*)&key[0]); |
|
|
|
|
const u32 newSize = buff.size(); |
|
|
|
|
core::array<c8> tmpbuff; |
|
|
|
@ -486,5 +503,10 @@ u32 SInPacket::getSize()
|
|
|
|
|
return buff.size(); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
bool SInPacket::isValid() |
|
|
|
|
{ |
|
|
|
|
return valid; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
} // Close Net Namespace
|
|
|
|
|
} // Close Irr namespace
|
|
|
|
|