X-Git-Url: https://git.novaco.in/?a=blobdiff_plain;f=p2pool%2Fmain.py;h=9c121fd7dfd96a0332c53464e16aa06602714a8e;hb=e25dff9765a0e66c3c39bc82659e7b5f21861b34;hp=7e923d9c3712d9d2b5e2026b23c20a0f2bdedb80;hpb=c4796e17d1a5d7efcd861ac90550e7f20cb97eb7;p=p2pool.git diff --git a/p2pool/main.py b/p2pool/main.py index 7e923d9..9c121fd 100644 --- a/p2pool/main.py +++ b/p2pool/main.py @@ -37,7 +37,11 @@ def main(args, net, datadir_path, merged_urls, worker_endpoint): print '''Testing bitcoind P2P connection to '%s:%s'...''' % (args.bitcoind_address, args.bitcoind_p2p_port) factory = bitcoin_p2p.ClientFactory(net.PARENT) reactor.connectTCP(args.bitcoind_address, args.bitcoind_p2p_port, factory) + def long(): + print ''' ...taking a while. Common reasons for this include all of bitcoind's connection slots being used...''' + long_dc = reactor.callLater(5, long) yield factory.getProtocol() # waits until handshake is successful + if not long_dc.called: long_dc.cancel() print ' ...success!' print defer.returnValue(factory) @@ -52,11 +56,10 @@ def main(args, net, datadir_path, merged_urls, worker_endpoint): yield helper.check(bitcoind, net) temp_work = yield helper.getwork(bitcoind) - bitcoind_warning_var = variable.Variable(None) + bitcoind_getinfo_var = variable.Variable(None) @defer.inlineCallbacks def poll_warnings(): - errors = (yield deferral.retry('Error while calling getmininginfo:')(bitcoind.rpc_getmininginfo)())['errors'] - bitcoind_warning_var.set(errors if errors != '' else None) + bitcoind_getinfo_var.set((yield deferral.retry('Error while calling getinfo:')(bitcoind.rpc_getinfo)())) yield poll_warnings() deferral.RobustLoopingCall(poll_warnings).start(20*60) @@ -174,6 +177,7 @@ def main(args, net, datadir_path, merged_urls, worker_endpoint): addr_store=addrs, connect_addrs=connect_addrs, desired_outgoing_conns=args.p2pool_outgoing_conns, + advertise_ip=args.advertise_ip, ) node.p2p_node.start() @@ -207,7 +211,7 @@ def main(args, net, datadir_path, merged_urls, worker_endpoint): print 'Listening for workers on %r port %i...' % (worker_endpoint[0], worker_endpoint[1]) wb = work.WorkerBridge(node, my_pubkey_hash, args.donation_percentage, merged_urls, args.worker_fee) - web_root = web.get_web_root(wb, datadir_path, bitcoind_warning_var) + web_root = web.get_web_root(wb, datadir_path, bitcoind_getinfo_var) caching_wb = worker_interface.CachingWorkerBridge(wb) worker_interface.WorkerInterface(caching_wb).attach_to(web_root, get_handler=lambda request: request.redirect('static/')) web_serverfactory = server.Site(web_root) @@ -285,7 +289,7 @@ def main(args, net, datadir_path, merged_urls, worker_endpoint): print 'IRC connection lost:', reason.getErrorMessage() class IRCClientFactory(protocol.ReconnectingClientFactory): protocol = IRCClient - reactor.connectTCP("irc.freenode.net", 6667, IRCClientFactory()) + reactor.connectTCP("irc.freenode.net", 6667, IRCClientFactory(), bindAddress=(worker_endpoint[0], 0)) @defer.inlineCallbacks def status_thread(): @@ -330,7 +334,7 @@ def main(args, net, datadir_path, merged_urls, worker_endpoint): math.format_dt(2**256 / node.bitcoind_work.value['bits'].target / real_att_s), ) - for warning in p2pool_data.get_warnings(node.tracker, node.best_share_var.value, net, bitcoind_warning_var.value, node.bitcoind_work.value): + for warning in p2pool_data.get_warnings(node.tracker, node.best_share_var.value, net, bitcoind_getinfo_var.value, node.bitcoind_work.value): print >>sys.stderr, '#'*40 print >>sys.stderr, '>>> Warning: ' + warning print >>sys.stderr, '#'*40 @@ -409,6 +413,9 @@ def run(): p2pool_group.add_argument('--outgoing-conns', metavar='CONNS', help='outgoing connections (default: 6)', type=int, action='store', default=6, dest='p2pool_outgoing_conns') + parser.add_argument('--disable-advertise', + help='''don't advertise local IP address as being available for incoming connections. useful for running a dark node, along with multiple -n ADDR's and --outgoing-conns 0''', + action='store_false', default=True, dest='advertise_ip') worker_group = parser.add_argument_group('worker interface') worker_group.add_argument('-w', '--worker-port', metavar='PORT or ADDR:PORT',