Browse Source

Add input checking for incorrect responses from printers

We should not crash when getting invalid data. Just put a warning in the log there and ignore the message for the rest.
Ghostkeeper 7 years ago
parent
commit
df88772071
1 changed files with 8 additions and 1 deletions
  1. 8 1
      plugins/UM3NetworkPrinting/NetworkPrinterOutputDevicePlugin.py

+ 8 - 1
plugins/UM3NetworkPrinting/NetworkPrinterOutputDevicePlugin.py

@@ -117,7 +117,14 @@ class NetworkPrinterOutputDevicePlugin(OutputDevicePlugin):
         if reply.operation() == QNetworkAccessManager.GetOperation:
             if "system" in reply_url:  # Name returned from printer.
                 if status_code == 200:
-                    system_info = json.loads(bytes(reply.readAll()).decode("utf-8"))
+                    try:
+                        system_info = json.loads(bytes(reply.readAll()).decode("utf-8"))
+                    except json.JSONDecodeError:
+                        Logger.log("e", "Printer returned invalid JSON.")
+                        return
+                    except UnicodeDecodeError:
+                        Logger.log("e", "Printer returned incorrect UTF-8.")
+                        return
                     address = reply.url().host()
 
                     instance_name = "manual:%s" % address