made iongchun's genesis block patch handle failure correctly
authorForrest Voight <forrest@forre.st>
Mon, 27 Jan 2014 14:09:46 +0000 (09:09 -0500)
committerForrest Voight <forrest@forre.st>
Mon, 27 Jan 2014 14:12:51 +0000 (09:12 -0500)
p2pool/bitcoin/networks.py

index 7c60f80..c604696 100644 (file)
@@ -4,7 +4,16 @@ import platform
 from twisted.internet import defer
 
 from . import data
-from p2pool.util import math, pack
+from p2pool.util import math, pack, jsonrpc
+
+@defer.inlineCallbacks
+def check_genesis_block(bitcoind, genesis_block_hash):
+    try:
+        yield bitcoind.rpc_getblock(genesis_block_hash)
+    except jsonrpc.Error_for_code(-5):
+        defer.returnValue(False)
+    else:
+        defer.returnValue(True)
 
 nets = dict(
     bitcoin=math.Object(
@@ -13,7 +22,7 @@ nets = dict(
         ADDRESS_VERSION=0,
         RPC_PORT=8332,
         RPC_CHECK=defer.inlineCallbacks(lambda bitcoind: defer.returnValue(
-            0 == (yield bitcoind.rpc_getblock('000000000019d6689c085ae165831e934ff763ae46a2a6c172b3f1b60a8ce26f'))['height'] and
+            (yield check_genesis_block(bitcoind, '000000000019d6689c085ae165831e934ff763ae46a2a6c172b3f1b60a8ce26f')) and
             not (yield bitcoind.rpc_getinfo())['testnet']
         )),
         SUBSIDY_FUNC=lambda height: 50*100000000 >> (height + 1)//210000,