From bf7174f3f98f0ac665e093aaa3e332f8bd29b64b Mon Sep 17 00:00:00 2001 From: est31 Date: Fri, 17 Jul 2015 06:30:21 +0200 Subject: [PATCH] Server kicks: make messages configurable, cache wstring --- minetest.conf.example | 6 ++++++ src/defaultsettings.cpp | 3 +++ src/environment.cpp | 3 ++- src/server.cpp | 6 +++--- 4 files changed, 14 insertions(+), 4 deletions(-) diff --git a/minetest.conf.example b/minetest.conf.example index aef82c3ad..7029f591e 100644 --- a/minetest.conf.example +++ b/minetest.conf.example @@ -388,6 +388,12 @@ # "log" = mimic and log backtrace of deprecated call (default for debug). # "error" = abort on usage of deprecated call (suggested for mod developers). #deprecated_lua_api_handling = legacy + +#kick_msg_shutdown = Server shutting down. +# A message to be displayed to all clients when the server shuts down +#kick_msg_crash = This server has experienced an internal error. You will now be disconnected. +# A message to be displayed to all clients when the server crashes + # Mod profiler #mod_profiling = false # Detailed mod profile data diff --git a/src/defaultsettings.cpp b/src/defaultsettings.cpp index da5dcae94..8df0fbbd8 100644 --- a/src/defaultsettings.cpp +++ b/src/defaultsettings.cpp @@ -252,6 +252,9 @@ void set_default_settings(Settings *settings) settings->setDefault("deprecated_lua_api_handling", "log"); #endif + settings->setDefault("kick_msg_shutdown", "Server shutting down."); + settings->setDefault("kick_msg_crash", "This server has experienced an internal error. You will now be disconnected."); + settings->setDefault("profiler_print_interval", "0"); settings->setDefault("enable_mapgen_debug_info", "false"); settings->setDefault("active_object_send_range_blocks", "3"); diff --git a/src/environment.cpp b/src/environment.cpp index cad1f298b..d22982b68 100644 --- a/src/environment.cpp +++ b/src/environment.cpp @@ -428,10 +428,11 @@ bool ServerEnvironment::line_of_sight(v3f pos1, v3f pos2, float stepsize, v3s16 void ServerEnvironment::kickAllPlayers(const std::string &reason) { + std::wstring wreason = utf8_to_wide(reason); for (std::vector::iterator it = m_players.begin(); it != m_players.end(); ++it) { - ((Server*)m_gamedef)->DenyAccess_Legacy((*it)->peer_id, utf8_to_wide(reason)); + ((Server*)m_gamedef)->DenyAccess_Legacy((*it)->peer_id, wreason); } } diff --git a/src/server.cpp b/src/server.cpp index 0cad82613..2d6de1c9d 100644 --- a/src/server.cpp +++ b/src/server.cpp @@ -397,8 +397,8 @@ Server::~Server() infostream << "Server: Saving players" << std::endl; m_env->saveLoadedPlayers(); - infostream << "Server: kick players" << std::endl; - m_env->kickAllPlayers("Server shutting down..."); + infostream << "Server: Kicking players" << std::endl; + m_env->kickAllPlayers(g_settings->get("kick_msg_shutdown")); infostream << "Server: Saving environment metadata" << std::endl; m_env->saveMeta(); @@ -502,7 +502,7 @@ void Server::step(float dtime) throw ServerError(async_err); } else { - m_env->kickAllPlayers("The server has crashed. Disconnecting all players. Please reconnect soon..."); + m_env->kickAllPlayers(g_settings->get("kick_msg_crash")); errorstream << "UNRECOVERABLE error occurred. Stopping server. " << "Please fix the following error:" << std::endl << async_err << std::endl;