Copy server address to avoid using STKHost in shutdown

This commit is contained in:
Benau 2018-04-15 12:57:55 +08:00
parent 266898ca28
commit 8c72ce66e3
2 changed files with 12 additions and 9 deletions

View File

@ -256,6 +256,7 @@ void ServerLobby::asynchronousUpdate()
}
else
{
m_server_address.copy(STKHost::get()->getPublicAddress());
STKHost::get()->startListening();
m_state = REGISTER_SELF_ADDRESS;
}
@ -465,10 +466,9 @@ void ServerLobby::update(int ticks)
void ServerLobby::registerServer()
{
Online::XMLRequest *request = new Online::XMLRequest();
const TransportAddress& addr = STKHost::get()->getPublicAddress();
NetworkConfig::get()->setUserDetails(request, "create");
request->addParameter("address", addr.getIP() );
request->addParameter("port", addr.getPort() );
request->addParameter("address", m_server_address.getIP() );
request->addParameter("port", m_server_address.getPort() );
request->addParameter("private_port",
STKHost::get()->getPrivatePort() );
request->addParameter("name", NetworkConfig::get()->getServerName() );
@ -481,7 +481,8 @@ void ServerLobby::registerServer()
request->addParameter("version",
(unsigned)NetworkConfig::m_server_version);
Log::info("ServerLobby", "Public server addr %s", addr.toString().c_str());
Log::info("ServerLobby", "Public server address %s",
m_server_address.toString().c_str());
request->executeNow();
@ -508,14 +509,13 @@ void ServerLobby::registerServer()
*/
void ServerLobby::unregisterServer()
{
const TransportAddress &addr = STKHost::get()->getPublicAddress();
Online::XMLRequest* request = new Online::XMLRequest();
NetworkConfig::get()->setUserDetails(request, "stop");
request->addParameter("address", addr.getIP());
request->addParameter("port", addr.getPort());
Log::info("ServerLobby", "address %s", addr.toString().c_str());
request->addParameter("address", m_server_address.getIP());
request->addParameter("port", m_server_address.getPort());
Log::info("ServerLobby", "Unregister server address %s",
m_server_address.toString().c_str());
request->executeNow();
const XMLNode * result = request->getXMLData();

View File

@ -2,6 +2,7 @@
#define SERVER_LOBBY_HPP
#include "network/protocols/lobby_protocol.hpp"
#include "network/transport_address.hpp"
#include "utils/cpp2011.hpp"
#include <atomic>
@ -78,6 +79,8 @@ private:
/** Ban list ip (in decimal) with online user id. */
std::map<uint32_t, uint32_t> m_ban_list;
TransportAddress m_server_address;
// connection management
void clientDisconnected(Event* event);
void connectionRequested(Event* event);