Skip to content

Commit 2923eaf

Browse files
jayarndtest31
authored andcommittedMay 4, 2015
Stop NetworkPacket methods from producing bloated packets
1 parent 3ee854c commit 2923eaf

File tree

2 files changed

+7
-19
lines changed

2 files changed

+7
-19
lines changed
 

‎src/network/networkpacket.cpp

+6-18
Original file line numberDiff line numberDiff line change
@@ -72,8 +72,8 @@ char* NetworkPacket::getString(u32 from_offset)
7272

7373
void NetworkPacket::putRawString(const char* src, u32 len)
7474
{
75-
if (m_read_offset + len * sizeof(char) >= m_datasize) {
76-
m_datasize += len * sizeof(char);
75+
if (m_read_offset + len > m_datasize) {
76+
m_datasize = m_read_offset + len;
7777
m_data.resize(m_datasize);
7878
}
7979

@@ -95,7 +95,7 @@ NetworkPacket& NetworkPacket::operator>>(std::string& dst)
9595
dst.reserve(strLen);
9696
dst.append((char*)&m_data[m_read_offset], strLen);
9797

98-
m_read_offset += strLen * sizeof(char);
98+
m_read_offset += strLen;
9999
return *this;
100100
}
101101

@@ -108,13 +108,7 @@ NetworkPacket& NetworkPacket::operator<<(std::string src)
108108

109109
*this << msgsize;
110110

111-
if (m_read_offset + msgsize * sizeof(char) >= m_datasize) {
112-
m_datasize += msgsize * sizeof(char);
113-
m_data.resize(m_datasize);
114-
}
115-
116-
memcpy(&m_data[m_read_offset], src.c_str(), msgsize);
117-
m_read_offset += msgsize;
111+
putRawString(src.c_str(), (u32)msgsize);
118112

119113
return *this;
120114
}
@@ -128,13 +122,7 @@ void NetworkPacket::putLongString(std::string src)
128122

129123
*this << msgsize;
130124

131-
if (m_read_offset + msgsize * sizeof(char) >= m_datasize) {
132-
m_datasize += msgsize * sizeof(char);
133-
m_data.resize(m_datasize);
134-
}
135-
136-
memcpy(&m_data[m_read_offset], src.c_str(), msgsize);
137-
m_read_offset += msgsize;
125+
putRawString(src.c_str(), msgsize);
138126
}
139127

140128
NetworkPacket& NetworkPacket::operator>>(std::wstring& dst)
@@ -189,7 +177,7 @@ std::string NetworkPacket::readLongString()
189177
dst.reserve(strLen);
190178
dst.append((char*)&m_data[m_read_offset], strLen);
191179

192-
m_read_offset += strLen*sizeof(char);
180+
m_read_offset += strLen;
193181

194182
return dst;
195183
}

‎src/network/networkpacket.h

+1-1
Original file line numberDiff line numberDiff line change
@@ -114,7 +114,7 @@ class NetworkPacket
114114
template<typename T> void checkDataSize()
115115
{
116116
if (m_read_offset + sizeof(T) > m_datasize) {
117-
m_datasize += sizeof(T);
117+
m_datasize = m_read_offset + sizeof(T);
118118
m_data.resize(m_datasize);
119119
}
120120
}

2 commit comments

Comments
 (2)

nerzhul commented on May 5, 2015

@nerzhul
Contributor

does this commits have been tested in all situations ?

est31 commented on May 5, 2015

@est31
Contributor

I haven't given this very thorough testing, but the new code looks much better than the old one. I have tested it however.

Please sign in to comment.