diff options
author | Loïc Blot <nerzhul@users.noreply.github.com> | 2017-09-28 13:47:30 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-09-28 13:47:30 +0200 |
commit | 2afe62952c52e9dc9cbd413db9a316ae4359c331 (patch) | |
tree | 9cd9523daa1b844c1a235674f8831113d522be41 | |
parent | 27eeb3581f5ee7183f326807c36afbe272b0d985 (diff) | |
download | minetest-2afe62952c52e9dc9cbd413db9a316ae4359c331.tar.gz minetest-2afe62952c52e9dc9cbd413db9a316ae4359c331.tar.bz2 minetest-2afe62952c52e9dc9cbd413db9a316ae4359c331.zip |
Server: affect bind_addr on constructor instead of start() (#6474)
bind_addr is already ready when using constructor as we read is.IPv6 from it, instead pass the whole address
-rw-r--r-- | src/game.cpp | 6 | ||||
-rw-r--r-- | src/main.cpp | 8 | ||||
-rw-r--r-- | src/server.cpp | 35 | ||||
-rw-r--r-- | src/server.h | 4 |
4 files changed, 25 insertions, 28 deletions
diff --git a/src/game.cpp b/src/game.cpp index 7d4dd0e04..f2a76d763 100644 --- a/src/game.cpp +++ b/src/game.cpp @@ -1886,10 +1886,8 @@ bool Game::createSingleplayerServer(const std::string &map_dir, return false; } - server = new Server(map_dir, gamespec, simple_singleplayer_mode, - bind_addr.isIPv6(), false); - - server->start(bind_addr); + server = new Server(map_dir, gamespec, simple_singleplayer_mode, bind_addr, false); + server->start(); return true; } diff --git a/src/main.cpp b/src/main.cpp index 1a3c49658..792cd104d 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -838,13 +838,13 @@ static bool run_dedicated_server(const GameParams &game_params, const Settings & try { // Create server Server server(game_params.world_path, game_params.game_spec, - false, bind_addr.isIPv6(), true, &iface); + false, bind_addr, true, &iface); g_term_console.setup(&iface, &kill, admin_nick); g_term_console.start(); - server.start(bind_addr); + server.start(); // Run server dedicated_server_loop(server, kill); } catch (const ModError &e) { @@ -872,8 +872,8 @@ static bool run_dedicated_server(const GameParams &game_params, const Settings & try { // Create server Server server(game_params.world_path, game_params.game_spec, false, - bind_addr.isIPv6(), true); - server.start(bind_addr); + bind_addr, true); + server.start(); // Run server bool &kill = *porting::signal_handler_killstatus(); diff --git a/src/server.cpp b/src/server.cpp index c4b800816..bd90afb32 100644 --- a/src/server.cpp +++ b/src/server.cpp @@ -149,10 +149,11 @@ Server::Server( const std::string &path_world, const SubgameSpec &gamespec, bool simple_singleplayer_mode, - bool ipv6, + Address bind_addr, bool dedicated, ChatInterface *iface ): + m_bind_addr(bind_addr), m_path_world(path_world), m_gamespec(gamespec), m_simple_singleplayer_mode(simple_singleplayer_mode), @@ -161,7 +162,7 @@ Server::Server( m_con(std::make_shared<con::Connection>(PROTOCOL_ID, 512, CONNECTION_TIMEOUT, - ipv6, + m_bind_addr.isIPv6(), this)), m_itemdef(createItemDefManager()), m_nodedef(createNodeDefManager()), @@ -366,35 +367,33 @@ Server::~Server() } } -void Server::start(Address bind_addr) +void Server::start() { - m_bind_addr = bind_addr; - - infostream<<"Starting server on " - << bind_addr.serializeString() <<"..."<<std::endl; + infostream << "Starting server on " << m_bind_addr.serializeString() + << "..." << std::endl; // Stop thread if already running m_thread->stop(); // Initialize connection m_con->SetTimeoutMs(30); - m_con->Serve(bind_addr); + m_con->Serve(m_bind_addr); // Start thread m_thread->start(); // ASCII art for the win! actionstream - <<" .__ __ __ "<<std::endl - <<" _____ |__| ____ _____/ |_ ____ _______/ |_ "<<std::endl - <<" / \\| |/ \\_/ __ \\ __\\/ __ \\ / ___/\\ __\\"<<std::endl - <<"| Y Y \\ | | \\ ___/| | \\ ___/ \\___ \\ | | "<<std::endl - <<"|__|_| /__|___| /\\___ >__| \\___ >____ > |__| "<<std::endl - <<" \\/ \\/ \\/ \\/ \\/ "<<std::endl; - actionstream<<"World at ["<<m_path_world<<"]"<<std::endl; - actionstream<<"Server for gameid=\""<<m_gamespec.id - <<"\" listening on "<<bind_addr.serializeString()<<":" - <<bind_addr.getPort() << "."<<std::endl; + << " .__ __ __ " << std::endl + << " _____ |__| ____ _____/ |_ ____ _______/ |_ " << std::endl + << " / \\| |/ \\_/ __ \\ __\\/ __ \\ / ___/\\ __\\" << std::endl + << "| Y Y \\ | | \\ ___/| | \\ ___/ \\___ \\ | | " << std::endl + << "|__|_| /__|___| /\\___ >__| \\___ >____ > |__| " << std::endl + << " \\/ \\/ \\/ \\/ \\/ " << std::endl; + actionstream << "World at [" << m_path_world << "]" << std::endl; + actionstream << "Server for gameid=\"" << m_gamespec.id + << "\" listening on " << m_bind_addr.serializeString() << ":" + << m_bind_addr.getPort() << "." << std::endl; } void Server::stop() diff --git a/src/server.h b/src/server.h index 5b538ea93..86f558d54 100644 --- a/src/server.h +++ b/src/server.h @@ -118,14 +118,14 @@ public: const std::string &path_world, const SubgameSpec &gamespec, bool simple_singleplayer_mode, - bool ipv6, + Address bind_addr, bool dedicated, ChatInterface *iface = nullptr ); ~Server(); DISABLE_CLASS_COPY(Server); - void start(Address bind_addr); + void start(); void stop(); // This is mainly a way to pass the time to the server. // Actual processing is done in an another thread. |