NetPlayServer: handle port forwarding in constructor

This commit is contained in:
Michael M 2017-08-07 00:27:04 -07:00
parent 4b50e77a26
commit b5d070b0cf
5 changed files with 11 additions and 31 deletions

View file

@ -63,7 +63,8 @@ NetPlayServer::~NetPlayServer()
} }
// called from ---GUI--- thread // called from ---GUI--- thread
NetPlayServer::NetPlayServer(const u16 port, const NetTraversalConfig& traversal_config) NetPlayServer::NetPlayServer(const u16 port, const bool forward_port,
const NetTraversalConfig& traversal_config)
{ {
//--use server time //--use server time
if (enet_initialize() != 0) if (enet_initialize() != 0)
@ -103,6 +104,11 @@ NetPlayServer::NetPlayServer(const u16 port, const NetTraversalConfig& traversal
m_do_loop = true; m_do_loop = true;
m_thread = std::thread(&NetPlayServer::ThreadFunc, this); m_thread = std::thread(&NetPlayServer::ThreadFunc, this);
m_target_buffer_size = 5; m_target_buffer_size = 5;
#ifdef USE_UPNP
if (forward_port)
UPnP::TryPortmapping(port);
#endif
} }
} }
@ -931,11 +937,3 @@ std::vector<std::pair<std::string, std::string>> NetPlayServer::GetInterfaceList
result.emplace_back(std::make_pair("!local!", "127.0.0.1")); result.emplace_back(std::make_pair("!local!", "127.0.0.1"));
return result; return result;
} }
#ifdef USE_UPNP
// called from ---GUI--- thread
void NetPlayServer::TryPortmapping(u16 port)
{
UPnP::TryPortmapping(port);
}
#endif

View file

@ -28,7 +28,7 @@ public:
void ThreadFunc(); void ThreadFunc();
void SendAsyncToClients(sf::Packet&& packet); void SendAsyncToClients(sf::Packet&& packet);
NetPlayServer(const u16 port, const NetTraversalConfig& traversal_config); NetPlayServer(u16 port, bool forward_port, const NetTraversalConfig& traversal_config);
~NetPlayServer(); ~NetPlayServer();
bool ChangeGame(const std::string& game); bool ChangeGame(const std::string& game);
@ -58,10 +58,6 @@ public:
bool is_connected = false; bool is_connected = false;
#ifdef USE_UPNP
void TryPortmapping(u16 port);
#endif
private: private:
class Client class Client
{ {

View file

@ -734,7 +734,7 @@ bool MainWindow::NetPlayHost(const QString& game_id)
// Create Server // Create Server
Settings::Instance().ResetNetPlayServer(new NetPlayServer( Settings::Instance().ResetNetPlayServer(new NetPlayServer(
host_port, NetTraversalConfig{is_traversal, traversal_host, traversal_port})); host_port, use_upnp, NetTraversalConfig{is_traversal, traversal_host, traversal_port}));
if (!Settings::Instance().GetNetPlayServer()->is_connected) if (!Settings::Instance().GetNetPlayServer()->is_connected)
{ {
@ -748,11 +748,6 @@ bool MainWindow::NetPlayHost(const QString& game_id)
Settings::Instance().GetNetPlayServer()->ChangeGame(game_id.toStdString()); Settings::Instance().GetNetPlayServer()->ChangeGame(game_id.toStdString());
#ifdef USE_UPNP
if (use_upnp)
Settings::Instance().GetNetPlayServer()->TryPortmapping(host_port);
#endif
// Join our local server // Join our local server
return NetPlayJoin(); return NetPlayJoin();
} }

View file

@ -24,7 +24,7 @@ bool NetPlayLauncher::Host(const NetPlayHostConfig& config)
} }
netplay_server = new NetPlayServer( netplay_server = new NetPlayServer(
config.listen_port, config.listen_port, config.forward_port,
NetTraversalConfig{config.use_traversal, config.traversal_host, config.traversal_port}); NetTraversalConfig{config.use_traversal, config.traversal_host, config.traversal_port});
if (!netplay_server->is_connected) if (!netplay_server->is_connected)
@ -36,13 +36,6 @@ bool NetPlayLauncher::Host(const NetPlayHostConfig& config)
netplay_server->ChangeGame(config.game_name); netplay_server->ChangeGame(config.game_name);
#ifdef USE_UPNP
if (config.forward_port)
{
netplay_server->TryPortmapping(config.listen_port);
}
#endif
npd = new NetPlayDialog(config.parent_window, config.game_list_ctrl, config.game_name, true); npd = new NetPlayDialog(config.parent_window, config.game_list_ctrl, config.game_name, true);
NetPlayClient*& netplay_client = NetPlayDialog::GetNetPlayClient(); NetPlayClient*& netplay_client = NetPlayDialog::GetNetPlayClient();

View file

@ -34,9 +34,7 @@ public:
std::string game_name; std::string game_name;
u16 listen_port = 0; u16 listen_port = 0;
#ifdef USE_UPNP bool forward_port = false;
bool forward_port;
#endif
}; };
class NetPlayJoinConfig : public NetPlayLaunchConfig class NetPlayJoinConfig : public NetPlayLaunchConfig