From 209bc661ab79dfe6943ecaff3546e250528ebe3f Mon Sep 17 00:00:00 2001
From: holgern <holgernahrstaedt@gmx.de>
Date: Wed, 31 Jul 2019 16:09:43 +0200
Subject: [PATCH] Add disable node function

---
 beemapi/node.py         | 5 +++++
 beemapi/steemnoderpc.py | 6 ++++--
 2 files changed, 9 insertions(+), 2 deletions(-)

diff --git a/beemapi/node.py b/beemapi/node.py
index e570f4a4..ca4b3da7 100644
--- a/beemapi/node.py
+++ b/beemapi/node.py
@@ -120,6 +120,11 @@ class Nodes(list):
     def num_retries_call_reached(self):
         return self.error_cnt_call >= self.num_retries_call
 
+    def disable_node(self):
+        """Disable current node"""
+        if self.node is not None and self.num_retries_call >= 0:
+            self.node.error_cnt_call = self.num_retries_call
+
     def increase_error_cnt(self):
         """Increase node error count for current node"""
         if self.node is not None:
diff --git a/beemapi/steemnoderpc.py b/beemapi/steemnoderpc.py
index 1ce9fa37..a2084a33 100644
--- a/beemapi/steemnoderpc.py
+++ b/beemapi/steemnoderpc.py
@@ -118,8 +118,9 @@ class SteemNodeRPC(GrapheneRPC):
         elif re.search("Could not find API", msg):
             if self._check_api_name(msg):
                 if self.nodes.working_nodes_count > 1 and self.nodes.num_retries  > -1:
+                    self.nodes.disable_node()
                     self._switch_to_next_node(msg, "ApiNotSupported")
-                    doRetry = False
+                    doRetry = True
                 else:
                     raise exceptions.ApiNotSupported(msg)
             else:
@@ -151,8 +152,9 @@ class SteemNodeRPC(GrapheneRPC):
             raise exceptions.UnhandledRPCError("Use Operation(op, appbase=True) to prevent error: " + msg)
         elif re.search("Client returned invalid format. Expected JSON!", msg):
             if self.nodes.working_nodes_count > 1  and self.nodes.num_retries  > -1:
+                self.nodes.disable_node()
                 self._switch_to_next_node(msg)
-                doRetry = False
+                doRetry = True
             else:
                 raise exceptions.UnhandledRPCError(msg)
         elif msg:
-- 
GitLab