Created
November 26, 2013 20:41
-
-
Save sapier/7665838 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
diff --git a/src/server.cpp b/src/server.cpp | |
index c29ec3d..1798b3c 100644 | |
--- a/src/server.cpp | |
+++ b/src/server.cpp | |
@@ -98,6 +98,8 @@ void * ServerThread::Thread() | |
BEGIN_DEBUG_EXCEPTION_HANDLER | |
+ f32 dedicated_server_step = g_settings->getFloat("dedicated_server_step"); | |
+ | |
while(getRun()) | |
{ | |
try{ | |
@@ -109,7 +111,15 @@ void * ServerThread::Thread() | |
} | |
//infostream<<"Running m_server->Receive()"<<std::endl; | |
- m_server->Receive(); | |
+ // receive up to 1000 packets or till dedicated server time limit is hit | |
+ // usually only a single packet is queued so this will only loop on | |
+ // high cpu load | |
+ u32 end_ms = porting::getTimeMs() + 1000 * dedicated_server_step; | |
+ for (size_t i = 0; i < 1000; ++i) | |
+ { | |
+ if (!m_server->Receive() || porting::getTimeMs() > end_ms) | |
+ break; | |
+ } | |
} | |
catch(con::NoIncomingDataException &e) | |
{ | |
@@ -1719,12 +1729,13 @@ void Server::AsyncRunStep() | |
} | |
} | |
-void Server::Receive() | |
+int Server::Receive() | |
{ | |
DSTACK(__FUNCTION_NAME); | |
SharedBuffer<u8> data; | |
u16 peer_id; | |
u32 datasize; | |
+ int received; | |
try{ | |
{ | |
JMutexAutoLock conlock(m_con_mutex); | |
@@ -1736,6 +1747,7 @@ void Server::Receive() | |
handlePeerChanges(); | |
ProcessData(*data, datasize, peer_id); | |
+ ++received; | |
} | |
catch(con::InvalidIncomingDataException &e) | |
{ | |
@@ -1758,6 +1770,7 @@ void Server::Receive() | |
m_env->removePlayer(peer_id);*/ | |
} | |
+ return received; |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment