about summary refs log tree commit diff
path: root/src/engine/server/server.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/engine/server/server.cpp')
-rw-r--r--src/engine/server/server.cpp13
1 files changed, 11 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