Permalink
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Browse files
Fix some memory leaks on packet sending.
- Loading branch information
Showing
with
13 additions
and
12 deletions.
-
+1
−0
src/client.cpp
-
+1
−0
src/network/connection.cpp
-
+7
−12
src/server.cpp
-
+4
−0
src/test.cpp
|
@@ -956,6 +956,7 @@ void Client::Send(NetworkPacket* pkt) |
|
|
serverCommandFactoryTable[pkt->getCommand()].channel, |
|
|
pkt, |
|
|
serverCommandFactoryTable[pkt->getCommand()].reliable); |
|
|
delete pkt; |
|
|
} |
|
|
|
|
|
void Client::interact(u8 action, const PointedThing& pointed) |
|
|
|
@@ -1729,6 +1729,7 @@ void ConnectionSendThread::connect(Address address) |
|
|
m_connection->SetPeerID(PEER_ID_INEXISTENT); |
|
|
NetworkPacket* pkt = new NetworkPacket(0,0); |
|
|
m_connection->Send(PEER_ID_SERVER, 0, pkt, true); |
|
|
delete pkt; |
|
|
} |
|
|
|
|
|
void ConnectionSendThread::disconnect() |
|
|
|
@@ -2079,24 +2079,19 @@ void Server::sendRemoveNode(v3s16 p, u16 ignore_id, |
|
|
float maxd = far_d_nodes*BS; |
|
|
v3f p_f = intToFloat(p, BS); |
|
|
|
|
|
NetworkPacket* pkt = new NetworkPacket(TOCLIENT_REMOVENODE, 2 + 2 + 2); |
|
|
NetworkPacket* pkt = new NetworkPacket(TOCLIENT_REMOVENODE, 6); |
|
|
*pkt << p; |
|
|
|
|
|
std::list<u16> clients = m_clients.getClientIDs(); |
|
|
for(std::list<u16>::iterator |
|
|
i = clients.begin(); |
|
|
i != clients.end(); ++i) |
|
|
{ |
|
|
if(far_players) |
|
|
{ |
|
|
i != clients.end(); ++i) { |
|
|
if(far_players) { |
|
|
// Get player |
|
|
Player *player = m_env->getPlayer(*i); |
|
|
if(player) |
|
|
{ |
|
|
if(Player *player = m_env->getPlayer(*i)) { |
|
|
// If player is far away, only set modified blocks not sent |
|
|
v3f player_pos = player->getPosition(); |
|
|
if(player_pos.getDistanceFrom(p_f) > maxd) |
|
|
{ |
|
|
if(player_pos.getDistanceFrom(p_f) > maxd) { |
|
|
far_players->push_back(*i); |
|
|
continue; |
|
|
} |
|
@@ -2118,7 +2113,7 @@ void Server::sendAddNode(v3s16 p, MapNode n, u16 ignore_id, |
|
|
v3f p_f = intToFloat(p, BS); |
|
|
|
|
|
std::list<u16> clients = m_clients.getClientIDs(); |
|
|
for(std::list<u16>::iterator |
|
|
for(std::list<u16>::iterator |
|
|
i = clients.begin(); |
|
|
i != clients.end(); ++i) |
|
|
{ |
|
@@ -2139,7 +2134,7 @@ void Server::sendAddNode(v3s16 p, MapNode n, u16 ignore_id, |
|
|
} |
|
|
} |
|
|
|
|
|
NetworkPacket* pkt = new NetworkPacket(TOCLIENT_ADDNODE, 0); |
|
|
NetworkPacket* pkt = new NetworkPacket(TOCLIENT_ADDNODE, 6 + 2 + 1 + 1 + 1); |
|
|
m_clients.Lock(); |
|
|
RemoteClient* client = m_clients.lockedGetClientNoEx(*i); |
|
|
if (client != 0) { |
|
|
|
@@ -2010,6 +2010,8 @@ struct TestConnection: public TestBase |
|
|
<< std::endl; |
|
|
|
|
|
UASSERT(memcmp(*sentdata, *recvdata, recvdata.getSize()) == 0); |
|
|
|
|
|
delete pkt; |
|
|
} |
|
|
|
|
|
u16 peer_id_client = 2; |
|
@@ -2074,6 +2076,8 @@ struct TestConnection: public TestBase |
|
|
|
|
|
UASSERT(memcmp(*sentdata, *recvdata, recvdata.getSize()) == 0); |
|
|
UASSERT(peer_id == PEER_ID_SERVER); |
|
|
|
|
|
delete pkt; |
|
|
} |
|
|
|
|
|
// Check peer handlers |
|
|