diff --git a/src/server/Server.php b/src/server/Server.php index a237000..80623f0 100644 --- a/src/server/Server.php +++ b/src/server/Server.php @@ -172,6 +172,13 @@ public function tickProcessor() : void{ */ public function waitShutdown() : void{ $this->shutdown = true; + + while($this->eventSource->process($this)){ + //Ensure that any late messages are processed before we start initiating server disconnects, so that if the + //server implementation used a custom disconnect mechanism (e.g. a server transfer), we don't break it in + //race conditions. + } + foreach($this->sessions as $session){ $session->initiateDisconnect("server shutdown"); }