fixing some memory leaks
git-svn-id: svn+ssh://svn.code.sf.net/p/supertuxkart/code/main/branches/hilnius@13194 178a84e3-b1eb-0310-8ba1-8eac791a3b58
This commit is contained in:
parent
706c231691
commit
12075a19b7
@ -37,10 +37,6 @@ Event::Event(ENetEvent* event)
|
|||||||
type = EVENT_TYPE_MESSAGE;
|
type = EVENT_TYPE_MESSAGE;
|
||||||
break;
|
break;
|
||||||
case ENET_EVENT_TYPE_NONE:
|
case ENET_EVENT_TYPE_NONE:
|
||||||
// Typically there's no packet data, but just in
|
|
||||||
// case test and delete it
|
|
||||||
if(event->packet)
|
|
||||||
enet_packet_destroy(event->packet);
|
|
||||||
return;
|
return;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@ -58,6 +54,7 @@ Event::Event(ENetEvent* event)
|
|||||||
|
|
||||||
if (m_packet)
|
if (m_packet)
|
||||||
enet_packet_destroy(m_packet); // we got all we need, just remove the data.
|
enet_packet_destroy(m_packet); // we got all we need, just remove the data.
|
||||||
|
m_packet = NULL;
|
||||||
|
|
||||||
std::vector<STKPeer*> peers = NetworkManager::getInstance()->getPeers();
|
std::vector<STKPeer*> peers = NetworkManager::getInstance()->getPeers();
|
||||||
peer = new STKPeer*;
|
peer = new STKPeer*;
|
||||||
|
@ -109,8 +109,6 @@ void NetworkManager::notifyEvent(Event* event)
|
|||||||
|
|
||||||
// notify for the event now.
|
// notify for the event now.
|
||||||
ProtocolManager::getInstance()->notifyEvent(event);
|
ProtocolManager::getInstance()->notifyEvent(event);
|
||||||
|
|
||||||
delete event; // in this case only, the event has been copied by the protocol manager
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
|
@ -262,6 +262,7 @@ void ProtocolManager::update()
|
|||||||
}
|
}
|
||||||
|
|
||||||
// because we made a copy of the event
|
// because we made a copy of the event
|
||||||
|
delete event->peer; // no more need of that
|
||||||
delete event;
|
delete event;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -209,15 +209,20 @@ void ClientLobbyRoomProtocol::connectionAccepted(Event* event)
|
|||||||
}
|
}
|
||||||
STKPeer* peer = *(event->peer);
|
STKPeer* peer = *(event->peer);
|
||||||
|
|
||||||
NetworkPlayerProfile* profile = new NetworkPlayerProfile();
|
|
||||||
profile->kart_name = "";
|
|
||||||
profile->race_id = event->data.gui8(1);
|
|
||||||
uint32_t token = event->data.gui32(3);
|
|
||||||
uint32_t global_id = event->data.gui32(8);
|
uint32_t global_id = event->data.gui32(8);
|
||||||
if (global_id == CurrentOnlineUser::get()->getUserID())
|
if (global_id == CurrentOnlineUser::get()->getUserID())
|
||||||
{
|
{
|
||||||
Log::info("ClientLobbyRoomProtocol", "The server accepted the connection.");
|
Log::info("ClientLobbyRoomProtocol", "The server accepted the connection.");
|
||||||
|
|
||||||
|
// self profile
|
||||||
|
NetworkPlayerProfile* profile = new NetworkPlayerProfile();
|
||||||
|
profile->kart_name = "";
|
||||||
|
profile->race_id = event->data.gui8(1);
|
||||||
|
profile->user_profile = CurrentOnlineUser::get();
|
||||||
|
m_setup->addPlayer(profile);
|
||||||
|
// connection token
|
||||||
|
uint32_t token = event->data.gui32(3);
|
||||||
|
peer->setClientServerToken(token);
|
||||||
// add all players
|
// add all players
|
||||||
event->data.removeFront(12); // remove the 12 first bytes
|
event->data.removeFront(12); // remove the 12 first bytes
|
||||||
int remaining = event->data.size();
|
int remaining = event->data.size();
|
||||||
@ -242,9 +247,6 @@ void ClientLobbyRoomProtocol::connectionAccepted(Event* event)
|
|||||||
}
|
}
|
||||||
|
|
||||||
// add self
|
// add self
|
||||||
profile->user_profile = CurrentOnlineUser::get();
|
|
||||||
m_setup->addPlayer(profile);
|
|
||||||
peer->setClientServerToken(token);
|
|
||||||
m_server = *(event->peer);
|
m_server = *(event->peer);
|
||||||
m_state = CONNECTED;
|
m_state = CONNECTED;
|
||||||
}
|
}
|
||||||
|
@ -49,13 +49,13 @@ void GetPeerAddress::update()
|
|||||||
if (m_state == NONE)
|
if (m_state == NONE)
|
||||||
{
|
{
|
||||||
|
|
||||||
HTTPConnector * connector = new HTTPConnector((std::string)UserConfigParams::m_server_multiplayer + "address-management.php");
|
HTTPConnector connector((std::string)UserConfigParams::m_server_multiplayer + "address-management.php");
|
||||||
connector->setParameter("id",CurrentOnlineUser::get()->getUserID());
|
connector.setParameter("id",CurrentOnlineUser::get()->getUserID());
|
||||||
connector->setParameter("token",CurrentOnlineUser::get()->getToken());
|
connector.setParameter("token",CurrentOnlineUser::get()->getToken());
|
||||||
connector->setParameter("peer_id",m_peer_id);
|
connector.setParameter("peer_id",m_peer_id);
|
||||||
connector->setParameter("action","get");
|
connector.setParameter("action","get");
|
||||||
|
|
||||||
const XMLNode * result = connector->getXMLFromPage();
|
const XMLNode * result = connector.getXMLFromPage();
|
||||||
std::string rec_success;
|
std::string rec_success;
|
||||||
|
|
||||||
if(result->get("success", &rec_success))
|
if(result->get("success", &rec_success))
|
||||||
|
@ -45,12 +45,12 @@ void HidePublicAddress::update()
|
|||||||
{
|
{
|
||||||
if (m_state == NONE)
|
if (m_state == NONE)
|
||||||
{
|
{
|
||||||
HTTPConnector * connector = new HTTPConnector((std::string)UserConfigParams::m_server_multiplayer + "address-management.php");
|
HTTPConnector connector((std::string)UserConfigParams::m_server_multiplayer + "address-management.php");
|
||||||
connector->setParameter("id",CurrentOnlineUser::get()->getUserID());
|
connector.setParameter("id",CurrentOnlineUser::get()->getUserID());
|
||||||
connector->setParameter("token",CurrentOnlineUser::get()->getToken());
|
connector.setParameter("token",CurrentOnlineUser::get()->getToken());
|
||||||
connector->setParameter("action","unset");
|
connector.setParameter("action","unset");
|
||||||
|
|
||||||
const XMLNode * result = connector->getXMLFromPage();
|
const XMLNode * result = connector.getXMLFromPage();
|
||||||
std::string rec_success;
|
std::string rec_success;
|
||||||
|
|
||||||
if(result->get("success", &rec_success))
|
if(result->get("success", &rec_success))
|
||||||
|
@ -47,12 +47,12 @@ void QuickJoinProtocol::update()
|
|||||||
if (m_state == NONE)
|
if (m_state == NONE)
|
||||||
{
|
{
|
||||||
TransportAddress addr = NetworkManager::getInstance()->getPublicAddress();
|
TransportAddress addr = NetworkManager::getInstance()->getPublicAddress();
|
||||||
HTTPConnector * connector = new HTTPConnector((std::string)UserConfigParams::m_server_multiplayer + "address-management.php");
|
HTTPConnector connector((std::string)UserConfigParams::m_server_multiplayer + "address-management.php");
|
||||||
connector->setParameter("id",CurrentOnlineUser::get()->getUserID());
|
connector.setParameter("id",CurrentOnlineUser::get()->getUserID());
|
||||||
connector->setParameter("token",CurrentOnlineUser::get()->getToken());
|
connector.setParameter("token",CurrentOnlineUser::get()->getToken());
|
||||||
connector->setParameter("action","quick-join");
|
connector.setParameter("action","quick-join");
|
||||||
|
|
||||||
const XMLNode * result = connector->getXMLFromPage();
|
const XMLNode * result = connector.getXMLFromPage();
|
||||||
std::string rec_success;
|
std::string rec_success;
|
||||||
TransportAddress* res = static_cast<TransportAddress*>(m_callback_object);
|
TransportAddress* res = static_cast<TransportAddress*>(m_callback_object);
|
||||||
|
|
||||||
|
@ -47,13 +47,13 @@ void RequestConnection::update()
|
|||||||
{
|
{
|
||||||
case NONE:
|
case NONE:
|
||||||
{
|
{
|
||||||
HTTPConnector * connector = new HTTPConnector((std::string)UserConfigParams::m_server_multiplayer + "address-management.php");
|
HTTPConnector connector((std::string)UserConfigParams::m_server_multiplayer + "address-management.php");
|
||||||
connector->setParameter("id",CurrentOnlineUser::get()->getUserID());
|
connector.setParameter("id",CurrentOnlineUser::get()->getUserID());
|
||||||
connector->setParameter("token",CurrentOnlineUser::get()->getToken());
|
connector.setParameter("token",CurrentOnlineUser::get()->getToken());
|
||||||
connector->setParameter("server_id",m_server_id);
|
connector.setParameter("server_id",m_server_id);
|
||||||
connector->setParameter("action","request-connection");
|
connector.setParameter("action","request-connection");
|
||||||
|
|
||||||
const XMLNode * result = connector->getXMLFromPage();
|
const XMLNode * result = connector.getXMLFromPage();
|
||||||
std::string rec_success;
|
std::string rec_success;
|
||||||
|
|
||||||
if(result->get("success", &rec_success))
|
if(result->get("success", &rec_success))
|
||||||
|
@ -112,14 +112,14 @@ void ServerLobbyRoomProtocol::update()
|
|||||||
{
|
{
|
||||||
last_poll_time = Time::getRealTime();
|
last_poll_time = Time::getRealTime();
|
||||||
TransportAddress addr = NetworkManager::getInstance()->getPublicAddress();
|
TransportAddress addr = NetworkManager::getInstance()->getPublicAddress();
|
||||||
HTTPConnector * connector = new HTTPConnector((std::string)UserConfigParams::m_server_multiplayer + "address-management.php");
|
HTTPConnector connector((std::string)UserConfigParams::m_server_multiplayer + "address-management.php");
|
||||||
connector->setParameter("id",CurrentOnlineUser::get()->getUserID());
|
connector.setParameter("id",CurrentOnlineUser::get()->getUserID());
|
||||||
connector->setParameter("token",CurrentOnlineUser::get()->getToken());
|
connector.setParameter("token",CurrentOnlineUser::get()->getToken());
|
||||||
connector->setParameter("address",addr.ip);
|
connector.setParameter("address",addr.ip);
|
||||||
connector->setParameter("port",addr.port);
|
connector.setParameter("port",addr.port);
|
||||||
connector->setParameter("action","poll-connection-requests");
|
connector.setParameter("action","poll-connection-requests");
|
||||||
|
|
||||||
const XMLNode * result = connector->getXMLFromPage();
|
const XMLNode * result = connector.getXMLFromPage();
|
||||||
std::string rec_success;
|
std::string rec_success;
|
||||||
if(result->get("success", &rec_success))
|
if(result->get("success", &rec_success))
|
||||||
{
|
{
|
||||||
|
@ -45,15 +45,15 @@ void ShowPublicAddress::update()
|
|||||||
{
|
{
|
||||||
if (m_state == NONE)
|
if (m_state == NONE)
|
||||||
{
|
{
|
||||||
HTTPConnector * connector = new HTTPConnector((std::string)UserConfigParams::m_server_multiplayer + "address-management.php");
|
|
||||||
connector->setParameter("id",CurrentOnlineUser::get()->getUserID());
|
|
||||||
connector->setParameter("token",CurrentOnlineUser::get()->getToken());
|
|
||||||
TransportAddress addr = NetworkManager::getInstance()->getPublicAddress();
|
TransportAddress addr = NetworkManager::getInstance()->getPublicAddress();
|
||||||
connector->setParameter("address",addr.ip);
|
HTTPConnector connector((std::string)UserConfigParams::m_server_multiplayer + "address-management.php");
|
||||||
connector->setParameter("port",addr.port);
|
connector.setParameter("id",CurrentOnlineUser::get()->getUserID());
|
||||||
connector->setParameter("action","set");
|
connector.setParameter("token",CurrentOnlineUser::get()->getToken());
|
||||||
|
connector.setParameter("address",addr.ip);
|
||||||
|
connector.setParameter("port",addr.port);
|
||||||
|
connector.setParameter("action","set");
|
||||||
|
|
||||||
const XMLNode * result = connector->getXMLFromPage();
|
const XMLNode * result = connector.getXMLFromPage();
|
||||||
std::string rec_success;
|
std::string rec_success;
|
||||||
|
|
||||||
if(result->get("success", &rec_success))
|
if(result->get("success", &rec_success))
|
||||||
|
@ -45,15 +45,15 @@ void StartServer::update()
|
|||||||
if (m_state == NONE)
|
if (m_state == NONE)
|
||||||
{
|
{
|
||||||
TransportAddress addr = NetworkManager::getInstance()->getPublicAddress();
|
TransportAddress addr = NetworkManager::getInstance()->getPublicAddress();
|
||||||
HTTPConnector * connector = new HTTPConnector((std::string)UserConfigParams::m_server_multiplayer + "address-management.php");
|
HTTPConnector connector((std::string)UserConfigParams::m_server_multiplayer + "address-management.php");
|
||||||
connector->setParameter("id",CurrentOnlineUser::get()->getUserID());
|
connector.setParameter("id",CurrentOnlineUser::get()->getUserID());
|
||||||
connector->setParameter("token",CurrentOnlineUser::get()->getToken());
|
connector.setParameter("token",CurrentOnlineUser::get()->getToken());
|
||||||
connector->setParameter("address",addr.ip);
|
connector.setParameter("address",addr.ip);
|
||||||
connector->setParameter("port",addr.port);
|
connector.setParameter("port",addr.port);
|
||||||
connector->setParameter("max_players",UserConfigParams::m_server_max_players);
|
connector.setParameter("max_players",UserConfigParams::m_server_max_players);
|
||||||
connector->setParameter("action","start-server");
|
connector.setParameter("action","start-server");
|
||||||
|
|
||||||
const XMLNode * result = connector->getXMLFromPage();
|
const XMLNode * result = connector.getXMLFromPage();
|
||||||
std::string rec_success;
|
std::string rec_success;
|
||||||
|
|
||||||
if(result->get("success", &rec_success))
|
if(result->get("success", &rec_success))
|
||||||
|
@ -45,14 +45,14 @@ void StopServer::update()
|
|||||||
if (m_state == NONE)
|
if (m_state == NONE)
|
||||||
{
|
{
|
||||||
TransportAddress addr = NetworkManager::getInstance()->getPublicAddress();
|
TransportAddress addr = NetworkManager::getInstance()->getPublicAddress();
|
||||||
HTTPConnector * connector = new HTTPConnector((std::string)UserConfigParams::m_server_multiplayer + "address-management.php");
|
HTTPConnector connector((std::string)UserConfigParams::m_server_multiplayer + "address-management.php");
|
||||||
connector->setParameter("id",CurrentOnlineUser::get()->getUserID());
|
connector.setParameter("id",CurrentOnlineUser::get()->getUserID());
|
||||||
connector->setParameter("token",CurrentOnlineUser::get()->getToken());
|
connector.setParameter("token",CurrentOnlineUser::get()->getToken());
|
||||||
connector->setParameter("address",addr.ip);
|
connector.setParameter("address",addr.ip);
|
||||||
connector->setParameter("port",addr.port);
|
connector.setParameter("port",addr.port);
|
||||||
connector->setParameter("action","stop-server");
|
connector.setParameter("action","stop-server");
|
||||||
|
|
||||||
const XMLNode * result = connector->getXMLFromPage();
|
const XMLNode * result = connector.getXMLFromPage();
|
||||||
std::string rec_success;
|
std::string rec_success;
|
||||||
|
|
||||||
if(result->get("success", &rec_success))
|
if(result->get("success", &rec_success))
|
||||||
|
@ -44,6 +44,7 @@ void* STKHost::receive_data(void* self)
|
|||||||
Event* evt = new Event(&event);
|
Event* evt = new Event(&event);
|
||||||
if (event.type != ENET_EVENT_TYPE_NONE)
|
if (event.type != ENET_EVENT_TYPE_NONE)
|
||||||
NetworkManager::getInstance()->notifyEvent(evt);
|
NetworkManager::getInstance()->notifyEvent(evt);
|
||||||
|
delete evt;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return NULL;
|
return NULL;
|
||||||
|
@ -48,11 +48,10 @@ STKPeer::STKPeer(const STKPeer& peer)
|
|||||||
STKPeer::~STKPeer()
|
STKPeer::~STKPeer()
|
||||||
{
|
{
|
||||||
if (m_peer)
|
if (m_peer)
|
||||||
{
|
|
||||||
m_peer = NULL;
|
m_peer = NULL;
|
||||||
}
|
|
||||||
if (m_player_profile)
|
if (m_player_profile)
|
||||||
m_player_profile = NULL;
|
delete m_player_profile;
|
||||||
|
m_player_profile = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
|
Loading…
x
Reference in New Issue
Block a user