From dc76f1b73225a48798d41111ae25cffdce46cc7b Mon Sep 17 00:00:00 2001 From: "R. Richard" Date: Thu, 7 May 2020 09:47:35 +0200 Subject: [PATCH] Fix broken ZMQ messages --- tfw/internals/networking/serialization.py | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/tfw/internals/networking/serialization.py b/tfw/internals/networking/serialization.py index e329a6c..4c581fa 100644 --- a/tfw/internals/networking/serialization.py +++ b/tfw/internals/networking/serialization.py @@ -42,7 +42,8 @@ def deserialize_tfw_msg(*args): """ Return message from TFW multipart data """ - return _deserialize_all(*args)[1] + envelope = _deserialize_all(*args) + return _repair_if_needed(envelope) def _serialize_all(*args): @@ -84,6 +85,18 @@ def _deserialize_single(data): return _decode_if_needed(data) +def _repair_if_needed(envelope): + """ + Quick fix for broken messages received from separate processes. + """ + if len(envelope) == 2: + return envelope[1] + for part in envelope: + if isinstance(part, dict): + return part + return {} + + def _encode_if_needed(value): """ Return input as bytes