X-Git-Url: https://git.novaco.in/?p=p2pool.git;a=blobdiff_plain;f=p2pool%2Fbitcoin%2Fstratum.py;h=ca2aa946e43476945ee042d399dda36d916972a5;hp=a396d466dcf08215919e40b1483a389566797daf;hb=31d2a183b7854fc4ba8f5a39d76a30673fbdc48b;hpb=07162a3f7d9911352e0d86f0908b22c048ed1f0f diff --git a/p2pool/bitcoin/stratum.py b/p2pool/bitcoin/stratum.py index a396d46..ca2aa94 100644 --- a/p2pool/bitcoin/stratum.py +++ b/p2pool/bitcoin/stratum.py @@ -2,15 +2,17 @@ import random import sys from twisted.internet import protocol, reactor +from twisted.python import log from p2pool.bitcoin import data as bitcoin_data, getwork from p2pool.util import expiring_dict, jsonrpc, pack class StratumRPCMiningProvider(object): - def __init__(self, wb, other): + def __init__(self, wb, other, transport): self.wb = wb self.other = other + self.transport = transport self.username = None self.handler_map = expiring_dict.ExpiringDict(300) @@ -32,7 +34,12 @@ class StratumRPCMiningProvider(object): reactor.callLater(0, self._send_work) def _send_work(self): - x, got_response = self.wb.get_work(*self.wb.preprocess_request('' if self.username is None else self.username)) + try: + x, got_response = self.wb.get_work(*self.wb.preprocess_request('' if self.username is None else self.username)) + except: + log.err() + self.transport.loseConnection() + return jobid = str(random.randrange(2**128)) self.other.svc_mining.rpc_set_difficulty(bitcoin_data.target_to_difficulty(x['share_target'])*self.wb.net.DUMB_SCRYPT_DIFF).addErrback(lambda err: None) self.other.svc_mining.rpc_notify( @@ -71,7 +78,7 @@ class StratumRPCMiningProvider(object): class StratumProtocol(jsonrpc.LineBasedPeer): def connectionMade(self): - self.svc_mining = StratumRPCMiningProvider(self.factory.wb, self.other) + self.svc_mining = StratumRPCMiningProvider(self.factory.wb, self.other, self.transport) def connectionLost(self, reason): self.svc_mining.close()