From 91b5fc6b0d13f43ceff3e922e5e83e4f1fc48b4e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gina=20H=C3=A4u=C3=9Fge?= Date: Tue, 10 May 2016 09:48:20 +0200 Subject: [PATCH] Force synchronization of sockjs message sending --- src/octoprint/server/util/sockjs.py | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/src/octoprint/server/util/sockjs.py b/src/octoprint/server/util/sockjs.py index 66ab8603..6663834b 100644 --- a/src/octoprint/server/util/sockjs.py +++ b/src/octoprint/server/util/sockjs.py @@ -43,6 +43,8 @@ class PrinterStateConnection(sockjs.tornado.SockJSConnection, octoprint.printer. self._lastCurrent = 0 self._baseRateLimit = 0.5 + self._emit_mutex = threading.RLock() + def _getRemoteAddress(self, info): forwardedFor = info.headers.get("X-Forwarded-For") if forwardedFor is not None: @@ -194,7 +196,8 @@ class PrinterStateConnection(sockjs.tornado.SockJSConnection, octoprint.printer. self.sendEvent(event, payload) def _emit(self, type, payload): - try: - self.send({type: payload}) - except Exception as e: - self._logger.warn("Could not send message to client %s: %s" % (self._remoteAddress, str(e))) + with self._emit_mutex: + try: + self.send({type: payload}) + except Exception as e: + self._logger.warn("Could not send message to client %s: %s" % (self._remoteAddress, str(e)))