forked from Mirrorlandia_minetest/minetest
Fix some memory leaks on packet sending.
This commit is contained in:
parent
5a5854ea9d
commit
009149a073
@ -956,6 +956,7 @@ void Client::Send(NetworkPacket* pkt)
|
|||||||
serverCommandFactoryTable[pkt->getCommand()].channel,
|
serverCommandFactoryTable[pkt->getCommand()].channel,
|
||||||
pkt,
|
pkt,
|
||||||
serverCommandFactoryTable[pkt->getCommand()].reliable);
|
serverCommandFactoryTable[pkt->getCommand()].reliable);
|
||||||
|
delete pkt;
|
||||||
}
|
}
|
||||||
|
|
||||||
void Client::interact(u8 action, const PointedThing& pointed)
|
void Client::interact(u8 action, const PointedThing& pointed)
|
||||||
|
@ -1729,6 +1729,7 @@ void ConnectionSendThread::connect(Address address)
|
|||||||
m_connection->SetPeerID(PEER_ID_INEXISTENT);
|
m_connection->SetPeerID(PEER_ID_INEXISTENT);
|
||||||
NetworkPacket* pkt = new NetworkPacket(0,0);
|
NetworkPacket* pkt = new NetworkPacket(0,0);
|
||||||
m_connection->Send(PEER_ID_SERVER, 0, pkt, true);
|
m_connection->Send(PEER_ID_SERVER, 0, pkt, true);
|
||||||
|
delete pkt;
|
||||||
}
|
}
|
||||||
|
|
||||||
void ConnectionSendThread::disconnect()
|
void ConnectionSendThread::disconnect()
|
||||||
|
@ -2079,24 +2079,19 @@ void Server::sendRemoveNode(v3s16 p, u16 ignore_id,
|
|||||||
float maxd = far_d_nodes*BS;
|
float maxd = far_d_nodes*BS;
|
||||||
v3f p_f = intToFloat(p, 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;
|
*pkt << p;
|
||||||
|
|
||||||
std::list<u16> clients = m_clients.getClientIDs();
|
std::list<u16> clients = m_clients.getClientIDs();
|
||||||
for(std::list<u16>::iterator
|
for(std::list<u16>::iterator
|
||||||
i = clients.begin();
|
i = clients.begin();
|
||||||
i != clients.end(); ++i)
|
i != clients.end(); ++i) {
|
||||||
{
|
if(far_players) {
|
||||||
if(far_players)
|
|
||||||
{
|
|
||||||
// Get player
|
// Get player
|
||||||
Player *player = m_env->getPlayer(*i);
|
if(Player *player = m_env->getPlayer(*i)) {
|
||||||
if(player)
|
|
||||||
{
|
|
||||||
// If player is far away, only set modified blocks not sent
|
// If player is far away, only set modified blocks not sent
|
||||||
v3f player_pos = player->getPosition();
|
v3f player_pos = player->getPosition();
|
||||||
if(player_pos.getDistanceFrom(p_f) > maxd)
|
if(player_pos.getDistanceFrom(p_f) > maxd) {
|
||||||
{
|
|
||||||
far_players->push_back(*i);
|
far_players->push_back(*i);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
@ -2118,7 +2113,7 @@ void Server::sendAddNode(v3s16 p, MapNode n, u16 ignore_id,
|
|||||||
v3f p_f = intToFloat(p, BS);
|
v3f p_f = intToFloat(p, BS);
|
||||||
|
|
||||||
std::list<u16> clients = m_clients.getClientIDs();
|
std::list<u16> clients = m_clients.getClientIDs();
|
||||||
for(std::list<u16>::iterator
|
for(std::list<u16>::iterator
|
||||||
i = clients.begin();
|
i = clients.begin();
|
||||||
i != clients.end(); ++i)
|
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();
|
m_clients.Lock();
|
||||||
RemoteClient* client = m_clients.lockedGetClientNoEx(*i);
|
RemoteClient* client = m_clients.lockedGetClientNoEx(*i);
|
||||||
if (client != 0) {
|
if (client != 0) {
|
||||||
|
@ -2010,6 +2010,8 @@ struct TestConnection: public TestBase
|
|||||||
<< std::endl;
|
<< std::endl;
|
||||||
|
|
||||||
UASSERT(memcmp(*sentdata, *recvdata, recvdata.getSize()) == 0);
|
UASSERT(memcmp(*sentdata, *recvdata, recvdata.getSize()) == 0);
|
||||||
|
|
||||||
|
delete pkt;
|
||||||
}
|
}
|
||||||
|
|
||||||
u16 peer_id_client = 2;
|
u16 peer_id_client = 2;
|
||||||
@ -2074,6 +2076,8 @@ struct TestConnection: public TestBase
|
|||||||
|
|
||||||
UASSERT(memcmp(*sentdata, *recvdata, recvdata.getSize()) == 0);
|
UASSERT(memcmp(*sentdata, *recvdata, recvdata.getSize()) == 0);
|
||||||
UASSERT(peer_id == PEER_ID_SERVER);
|
UASSERT(peer_id == PEER_ID_SERVER);
|
||||||
|
|
||||||
|
delete pkt;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Check peer handlers
|
// Check peer handlers
|
||||||
|
Loading…
Reference in New Issue
Block a user