re-add p2p block submission to bitcoind
authorForrest Voight <forrest@forre.st>
Sat, 28 Apr 2012 00:42:01 +0000 (20:42 -0400)
committerForrest Voight <forrest@forre.st>
Tue, 1 May 2012 16:19:13 +0000 (12:19 -0400)
p2pool/main.py

index 1da1844..18ddf6b 100644 (file)
@@ -300,14 +300,25 @@ def main(args, net, datadir_path, merged_urls, worker_endpoint):
                 print 'Sending %i shares to %s:%i' % (len(shares), peer.addr[0], peer.addr[1])
                 return shares
         
+        @deferral.retry('Error submitting primary block: (will retry)', 10, 10)
+        def submit_block_p2p(block):
+            if factory.conn.value is None:
+                print >>sys.stderr, 'No bitcoind connection when block submittal attempted! %s%32x' % (net.PARENT.BLOCK_EXPLORER_URL_PREFIX, header_hash)
+                raise deferral.RetrySilentlyException()
+            factory.conn.value.send_block(block=block)
+        
         @deferral.retry('Error submitting block: (will retry)', 10, 10)
         @defer.inlineCallbacks
-        def submit_block(block, ignore_failure):
+        def submit_block_rpc(block, ignore_failure):
             success = yield bitcoind.rpc_getmemorypool(bitcoin_data.block_type.pack(block).encode('hex'))
             success_expected = net.PARENT.POW_FUNC(bitcoin_data.block_header_type.pack(block['header'])) <= block['header']['bits'].target
             if (not success and success_expected and not ignore_failure) or (success and not success_expected):
                 print >>sys.stderr, 'Block submittal result: %s Expected: %s' % (result, expected_result)
         
+        def submit_block(block, ignore_failure):
+            submit_block_p2p(block)
+            submit_block_rpc(block, ignore_failure)
+        
         @tracker.verified.added.watch
         def _(share):
             if share.pow_hash <= share.header['bits'].target: