From 96ab620618e29e0478669fa5f076269e856f4e83 Mon Sep 17 00:00:00 2001 From: Tehom Date: Wed, 31 May 2017 07:14:25 -0400 Subject: [PATCH] Add extra checking for additional requests made while we were in the process of stopping reactor, change from callLater to deferLater to be compliant with inlinecallbacks. --- evennia/server/server.py | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/evennia/server/server.py b/evennia/server/server.py index c8c75835e7..cde1067dcd 100644 --- a/evennia/server/server.py +++ b/evennia/server/server.py @@ -397,8 +397,15 @@ class Evennia(object): # this will also send a reactor.stop signal, so we set a # flag to avoid loops. self.shutdown_complete = True - # kill the server - reactor.callLater(1, reactor.stop) + if WEBSERVER_ENABLED: + # Just to be extra sure, get all pending requests that might have occurred after we started + d = self.web_root.get_pending_requests() + d.addCallback(lambda _: reactor.stop()) + from twisted.internet import task + yield task.deferLater(reactor, 1, d.callback, None) + else: + # kill the server + reactor.callLater(1, reactor.stop) # we make sure the proper gametime is saved as late as possible ServerConfig.objects.conf("runtime", _GAMETIME_MODULE.runtime())