check if bitcoind is still up before work cache is used to propagate failure to miner...
authorForrest Voight <forrest@forre.st>
Thu, 1 Aug 2013 23:48:15 +0000 (19:48 -0400)
committerForrest Voight <forrest@forre.st>
Fri, 2 Aug 2013 00:16:35 +0000 (20:16 -0400)
p2pool/work.py

index 2a224d0..a5e6d5f 100644 (file)
@@ -170,6 +170,10 @@ class WorkerBridge(worker_interface.WorkerBridge):
         return user, pubkey_hash, desired_share_target, desired_pseudoshare_target
     
     def preprocess_request(self, user):
+        if (self.node.p2p_node is None or len(self.node.p2p_node.peers) == 0) and self.node.net.PERSIST:
+            raise jsonrpc.Error_for_code(-12345)(u'p2pool is not connected to any peers')
+        if time.time() > self.current_work.value['last_update'] + 60:
+            raise jsonrpc.Error_for_code(-12345)(u'lost contact with bitcoind')
         user, pubkey_hash, desired_share_target, desired_pseudoshare_target = self.get_user_details(user)
         return pubkey_hash, desired_share_target, desired_pseudoshare_target
     
@@ -198,12 +202,8 @@ class WorkerBridge(worker_interface.WorkerBridge):
         return addr_hash_rates
     
     def get_work(self, pubkey_hash, desired_share_target, desired_pseudoshare_target):
-        if (self.node.p2p_node is None or len(self.node.p2p_node.peers) == 0) and self.node.net.PERSIST:
-            raise jsonrpc.Error_for_code(-12345)(u'p2pool is not connected to any peers')
         if self.node.best_share_var.value is None and self.node.net.PERSIST:
             raise jsonrpc.Error_for_code(-12345)(u'p2pool is downloading shares')
-        if time.time() > self.current_work.value['last_update'] + 60:
-            raise jsonrpc.Error_for_code(-12345)(u'lost contact with bitcoind')
         
         if self.merged_work.value:
             tree, size = bitcoin_data.make_auxpow_tree(self.merged_work.value)