From 22e1d262643611b795e0e74d0f8982c02bede649 Mon Sep 17 00:00:00 2001 From: Jay Arndt Date: Mon, 4 May 2015 04:53:41 -0500 Subject: [PATCH] Stop NetworkPacket methods from producing bloated packets --- src/network/networkpacket.cpp | 20 ++++---------------- src/network/networkpacket.h | 2 +- 2 files changed, 5 insertions(+), 17 deletions(-) diff --git a/src/network/networkpacket.cpp b/src/network/networkpacket.cpp index a4a481db4..11d438b95 100644 --- a/src/network/networkpacket.cpp +++ b/src/network/networkpacket.cpp @@ -72,8 +72,8 @@ char* NetworkPacket::getString(u32 from_offset) void NetworkPacket::putRawString(const char* src, u32 len) { - if (m_read_offset + len * sizeof(char) >= m_datasize) { - m_datasize += len * sizeof(char); + if (m_read_offset + len * sizeof(char) > m_datasize) { + m_datasize = m_read_offset + len * sizeof(char); m_data.resize(m_datasize); } @@ -108,13 +108,7 @@ NetworkPacket& NetworkPacket::operator<<(std::string src) *this << msgsize; - if (m_read_offset + msgsize * sizeof(char) >= m_datasize) { - m_datasize += msgsize * sizeof(char); - m_data.resize(m_datasize); - } - - memcpy(&m_data[m_read_offset], src.c_str(), msgsize); - m_read_offset += msgsize; + putRawString(src.c_str(), (u32)msgsize); return *this; } @@ -128,13 +122,7 @@ void NetworkPacket::putLongString(std::string src) *this << msgsize; - if (m_read_offset + msgsize * sizeof(char) >= m_datasize) { - m_datasize += msgsize * sizeof(char); - m_data.resize(m_datasize); - } - - memcpy(&m_data[m_read_offset], src.c_str(), msgsize); - m_read_offset += msgsize; + putRawString(src.c_str(), msgsize); } NetworkPacket& NetworkPacket::operator>>(std::wstring& dst) diff --git a/src/network/networkpacket.h b/src/network/networkpacket.h index 9ad169888..0d2015e7f 100644 --- a/src/network/networkpacket.h +++ b/src/network/networkpacket.h @@ -114,7 +114,7 @@ private: template void checkDataSize() { if (m_read_offset + sizeof(T) > m_datasize) { - m_datasize += sizeof(T); + m_datasize = m_read_offset + sizeof(T); m_data.resize(m_datasize); } }