From 1010a8aa3a6874f1133810d950b920f3dedbad94 Mon Sep 17 00:00:00 2001 From: tomaae <23486452+tomaae@users.noreply.github.com> Date: Tue, 17 Mar 2020 00:42:44 +0100 Subject: [PATCH] catching socket.timeout using tuple exception during traffic poll #8 --- .../mikrotik_router/mikrotikapi.py | 23 +++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/custom_components/mikrotik_router/mikrotikapi.py b/custom_components/mikrotik_router/mikrotikapi.py index f2fc709..8639277 100644 --- a/custom_components/mikrotik_router/mikrotikapi.py +++ b/custom_components/mikrotik_router/mikrotikapi.py @@ -433,5 +433,28 @@ class MikrotikAPI: self.lock.release() return None + try: + tuple(response) + except librouteros.exceptions.ConnectionClosed as api_error: + if not self.connection_error_reported: + _LOGGER.error( + "Mikrotik %s error while get_traffic %s", self._host, api_error + ) + self.connection_error_reported = True + + self.disconnect() + self.lock.release() + return None + except: + if not self.connection_error_reported: + _LOGGER.error( + "Mikrotik %s error while get_traffic %s", self._host, "unknown" + ) + self.connection_error_reported = True + + self.disconnect() + self.lock.release() + return None + self.lock.release() return traffic if traffic else None