Safely log when a command error cannot be sent
authorJeremy Stanley <fungi@yuggoth.org>
Mon, 13 May 2019 19:22:24 +0000 (19:22 +0000)
committerJeremy Stanley <fungi@yuggoth.org>
Mon, 13 May 2019 19:39:50 +0000 (19:39 +0000)
If a command triggers an error back to the user and sending that
error raises an exception, log it and continue to avoid crashing the
engine.

mudpy/command.py

index 2b20b1a..39e0a83 100644 (file)
@@ -6,6 +6,7 @@
 
 import random
 import re
+import traceback
 import unicodedata
 
 import mudpy
@@ -117,8 +118,13 @@ def error(actor, input_data):
     else:
         message = "Arglebargle, glop-glyf!?!"
 
-    # send the error message
-    actor.send(message)
+    # try to send the error message, and log if we can't
+    try:
+        actor.send(message)
+    except Exception:
+        mudpy.misc.log(
+            'Sending a command error to user %s raised exception...\n%s' % (
+                actor.owner.account.get("name"), traceback.format_exc()))
 
 
 def halt(actor, parameters):