diff options
| -rw-r--r-- | src/engine/server/server.cpp | 13 | ||||
| -rw-r--r-- | src/engine/shared/config_variables.h | 2 |
2 files changed, 13 insertions, 2 deletions
diff --git a/src/engine/server/server.cpp b/src/engine/server/server.cpp index b830dfe8..704f74c2 100644 --- a/src/engine/server/server.cpp +++ b/src/engine/server/server.cpp @@ -1586,8 +1586,17 @@ int CServer::Run() ReportTime += time_freq()*ReportInterval; } - // wait for incomming data - net_socket_read_wait(m_NetServer.Socket(), 5); + bool NonActive = true; + + for(int c = 0; c < MAX_CLIENTS; c++) + if(m_aClients[c].m_State != CClient::STATE_EMPTY) + NonActive = false; + + // wait for incoming data + if(NonActive && g_Config.m_SvShutdownWhenEmpty) + m_RunServer = false; + else + net_socket_read_wait(m_NetServer.Socket(), 5); } } // disconnect all clients on shutdown diff --git a/src/engine/shared/config_variables.h b/src/engine/shared/config_variables.h index 31713888..b0c3df01 100644 --- a/src/engine/shared/config_variables.h +++ b/src/engine/shared/config_variables.h @@ -105,7 +105,9 @@ MACRO_CONFIG_INT(EcOutputLevel, ec_output_level, 1, 0, 2, CFGFLAG_ECON, "Adjusts MACRO_CONFIG_INT(SvGlobalBantime, sv_global_bantime, 60, 0, 1440, CFGFLAG_SERVER, "The time a client gets banned if the ban server reports it. 0 to disable") MACRO_CONFIG_INT(SvRespawnProtection, sv_respawn_protection, 1, 0, 1, CFGFLAG_SERVER, "Whether a player gets respawn protection") + MACRO_CONFIG_STR(SvInputFifo, sv_input_fifo, 128, "", CFGFLAG_SERVER, "Fifo file to use as input for server console") +MACRO_CONFIG_INT(SvShutdownWhenEmpty, sv_shutdown_when_empty, 0, 0, 1, CFGFLAG_SERVER, "Shutdown server as soon as noone is on it anymore") #if defined(CONF_SQL) //zCatch mysql. |