diff --git a/python/tools/scanner.py b/python/tools/scanner.py
index 4b9a306929c83e56793e7f40cca3b5eb95d316fd..d58d9e443377f2bfad621229402b62d3c5ff38bd 100755
--- a/python/tools/scanner.py
+++ b/python/tools/scanner.py
@@ -114,20 +114,23 @@ def step(cur_h, cur_depth):
 
 def nextstep(cur_h, cur_depth, ok, nodes, arc=None, lines=[]):
     global done, all_nodes
-    if arc:
-        arc.remove()
-        del arc
-    for l in lines:
-        l.set_color('#444444')
-    snodes = NodeSet()
-    snodes.extend(nodes)
-    all_nodes.extend(nodes)
-    depth = min(6, InfoHash.commonBits(snodes.first(), snodes.last())+4)
-    if cur_depth < depth:
-        for b in range(cur_depth, depth):
-            new_h = InfoHash(cur_h.toString());
-            new_h.setBit(b, 1);
-            step(new_h, b+1);
+    if nodes:
+        if arc:
+            arc.remove()
+            del arc
+        for l in lines:
+            l.set_color('#444444')
+        snodes = NodeSet()
+        snodes.extend(nodes)
+        all_nodes.extend(nodes)
+        depth = min(6, InfoHash.commonBits(snodes.first(), snodes.last())+4)
+        if cur_depth < depth:
+            for b in range(cur_depth, depth):
+                new_h = InfoHash(cur_h.toString());
+                new_h.setBit(b, 1);
+                step(new_h, b+1);
+    else:
+        print("step done with no nodes", ok, cur_h.toString().decode())
     done -= 1
 
 run = True