diff --git a/src/cutecoin/core/net/network.py b/src/cutecoin/core/net/network.py
index b418c42258767e617ac24432f00519f6bef9d2b2..b92ad0c4e362f8e6d27966aaf2c34745dae5ec60 100644
--- a/src/cutecoin/core/net/network.py
+++ b/src/cutecoin/core/net/network.py
@@ -5,14 +5,12 @@ Created on 24 févr. 2015
 """
 from .node import Node
 from ...tools.exceptions import InvalidNodeCurrency
-
 import logging
 import statistics
 import time
 import asyncio
 from ucoinpy.documents.peer import Peer
 from ucoinpy.documents.block import Block, BlockId
-
 from PyQt5.QtCore import pyqtSignal, pyqtSlot, QObject, QTimer
 from collections import Counter
 
@@ -256,7 +254,7 @@ class Network(QObject):
         :return: the medium fork window of knew network
         """
         fork_windows = [n.fork_window for n in self.online_nodes if n.software != ""
-                                  and n.pubkey in members_pubkeys]
+                        and n.pubkey in members_pubkeys]
         if len(fork_windows) > 0:
             return int(statistics.median(fork_windows))
         else:
@@ -268,6 +266,7 @@ class Network(QObject):
         """
         self._nodes.append(node)
         node.changed.connect(self.handle_change)
+        node.error.connect(self.handle_error)
         node.identity_changed.connect(self.handle_identity_change)
         node.neighbour_found.connect(self.handle_new_node)
         logging.debug("{:} connected".format(node.pubkey[:5]))
@@ -337,16 +336,21 @@ class Network(QObject):
             self.root_nodes_changed.emit()
         self.nodes_changed.emit()
 
+    @pyqtSlot()
+    def handle_error(self):
+        node = self.sender()
+        if node.state in (Node.OFFLINE, Node.CORRUPTED) and \
+                                node.last_change + 3600 < time.time():
+            node.disconnect()
+            self.nodes.remove(node)
+            self.nodes_changed.emit()
+
     @pyqtSlot()
     def handle_change(self):
         node = self.sender()
 
         if node.state in (Node.ONLINE, Node.DESYNCED):
             self._check_nodes_sync()
-        else:
-            if node.last_change + 3600 < time.time():
-                node.disconnect()
-                self.nodes.remove(node)
         self._check_nodes_unique()
         self.nodes_changed.emit()
 
@@ -358,9 +362,9 @@ class Network(QObject):
                 # or if the previously found block is different locally
                 # than in the main chain, we declare a rollback
                 if self._block_found.number and \
-                    self.current_blockid.number <= self._block_found.number \
-                    or node.main_chain_previous_block and \
-                        node.main_chain_previous_block['hash'] != self._block_found.sha_hash:
+                                self.current_blockid.number <= self._block_found.number \
+                        or node.main_chain_previous_block and \
+                                        node.main_chain_previous_block['hash'] != self._block_found.sha_hash:
 
                     self._block_found = self.current_blockid
                     self.blockchain_rollback.emit(self.current_blockid.number)
diff --git a/src/cutecoin/core/net/node.py b/src/cutecoin/core/net/node.py
index ad9eab52f666ff6f602fec7dfa21ee6964e7e5de..52f2f54cc1dc874072f8eca4a07abca65f1910e6 100644
--- a/src/cutecoin/core/net/node.py
+++ b/src/cutecoin/core/net/node.py
@@ -36,6 +36,7 @@ class Node(QObject):
     CORRUPTED = 4
 
     changed = pyqtSignal()
+    error = pyqtSignal()
     identity_changed = pyqtSignal()
     neighbour_found = pyqtSignal(Peer, str)
 
@@ -259,6 +260,8 @@ class Node(QObject):
             self.last_change = time.time()
             self._state = new_state
             self.changed.emit()
+        if new_state in (Node.OFFLINE, Node.ONLINE):
+            self.error.emit()
 
     @property
     def fork_window(self):