about summary refs log tree commit diff
diff options
context:
space:
mode:
authordef <dennis@felsin9.de>2015-08-14 23:18:09 +0200
committerdef <dennis@felsin9.de>2015-08-14 23:18:09 +0200
commit6c6175931eebb63202abb012cf53fbd9211e0c51 (patch)
tree8e17d6114470b371b83886d001db51ec0c3f8620
parent47e5064885a6dc700196e70aa28372b1d2bb6781 (diff)
downloadzcatch-6c6175931eebb63202abb012cf53fbd9211e0c51.tar.gz
zcatch-6c6175931eebb63202abb012cf53fbd9211e0c51.zip
Add sv_shutdown_when_empty (from DDNet)
-rw-r--r--src/engine/server/server.cpp13
-rw-r--r--src/engine/shared/config_variables.h2
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.