Do not print "Sending 0 shares"
[p2pool.git] / p2pool / node.py
index 729438b..1b7b94e 100644 (file)
@@ -11,18 +11,14 @@ from p2pool.util import deferral, variable
 
 
 class P2PNode(p2p.Node):
-    def __init__(self, node, p2pool_port, p2pool_conns, addrs, connect_addrs):
+    def __init__(self, node, **kwargs):
         self.node = node
         p2p.Node.__init__(self,
             best_share_hash_func=lambda: node.best_share_var.value,
-            port=p2pool_port,
             net=node.net,
-            addr_store=addrs,
-            connect_addrs=connect_addrs,
-            max_incoming_conns=p2pool_conns,
             known_txs_var=node.known_txs_var,
             mining_txs_var=node.mining_txs_var,
-        )
+        **kwargs)
     
     def handle_shares(self, shares, peer):
         if len(shares) > 5:
@@ -71,7 +67,8 @@ class P2PNode(p2p.Node):
                 if share.hash in stops:
                     break
                 shares.append(share)
-        print 'Sending %i shares to %s:%i' % (len(shares), peer.addr[0], peer.addr[1])
+        if len(shares) > 0:
+            print 'Sending %i shares to %s:%i' % (len(shares), peer.addr[0], peer.addr[1])
         return shares
     
     def handle_bestblock(self, header, peer):
@@ -114,8 +111,13 @@ class P2PNode(p2p.Node):
                     shares = yield peer.get_shares(
                         hashes=[share_hash],
                         parents=500,
-                        stops=[],
+                        stops=list(set(self.node.tracker.heads) | set(
+                            self.node.tracker.get_nth_parent_hash(head, min(max(0, self.node.tracker.get_height_and_last(head)[0] - 1), 10)) for head in self.node.tracker.heads
+                        ))[:100],
                     )
+                except defer.TimeoutError:
+                    print 'Share request timed out!'
+                    continue
                 except:
                     log.err(None, 'in download_shares:')
                     continue
@@ -264,6 +266,8 @@ class Node(object):
             print
         
         def forget_old_txs():
+            print "KNOWN:", sum(bitcoin_data.tx_type.packed_size(tx) for tx in self.known_txs_var.value.itervalues())
+            print "MINING:", sum(bitcoin_data.tx_type.packed_size(tx) for tx in self.mining_txs_var.value.itervalues())
             new_known_txs = {}
             if self.p2p_node is not None:
                 for peer in self.p2p_node.peers.itervalues():