diff --git a/evennia/server/evennia_launcher.py b/evennia/server/evennia_launcher.py index 64067082b..6bec3bc0f 100644 --- a/evennia/server/evennia_launcher.py +++ b/evennia/server/evennia_launcher.py @@ -1034,8 +1034,13 @@ def server_operation(mode, service, interactive, profiler): PORTAL_LOGFILE, HTTP_LOGFILE]) # start the server process = Popen(cmdstr, env=getenv()) + if interactive: - process.wait() + try: + process.wait() + except KeyboardInterrupt: + print "\nKeyboard interrupt sent in interactive mode.\n" + elif mode == 'reload': # restarting services diff --git a/evennia/server/evennia_runner.py b/evennia/server/evennia_runner.py index 00a5d77a5..aa4435350 100644 --- a/evennia/server/evennia_runner.py +++ b/evennia/server/evennia_runner.py @@ -184,7 +184,10 @@ def start_services(server_argv, portal_argv): while True: # this blocks until something is actually returned. - message, rc = processes.get() + try: + message, rc = processes.get() + except KeyboardInterrupt: + break # restart only if process stopped cleanly if (message == "server_stopped" and int(rc) == 0 and