diff --git a/src/morevna.py b/src/morevna.py --- a/src/morevna.py +++ b/src/morevna.py @@ -7,7 +7,7 @@ from util import spawnDaemon, splitHost import config as conf import stats from hashtree import HashTree -from client import Client, Connection as ClientConnection +from client import Client, Connection as ClientConnection, FailedConnection from server import Miniserver @@ -37,13 +37,16 @@ def push(args): if args.port: conf.port=args.port c=Client(args.datafile,args.tree) - for host in conf.hosts: - with ClientConnection(*splitHost(host,conf.port)) as con: - c.setConnection(con) - blocksToTransfer=c.negotiate() - c.sendData(blocksToTransfer) - print() - print(stats.report()) + for h in conf.hosts: + host=splitHost(h,conf.port) + try: + with ClientConnection(*host) as con: + c.setConnection(con) + blocksToTransfer=c.negotiate() + c.sendData(blocksToTransfer) + print() + print(stats.report()) + except FailedConnection: continue def pull(args): _checkFile(args.datafile) @@ -53,12 +56,15 @@ def pull(args): if args.port: conf.port=args.port c=Client(args.datafile,args.tree) - with ClientConnection(*splitHost(conf.hosts[0],conf.port)) as con: - c.setConnection(con) - blocksToTransfer=c.negotiate() - c.pullData(blocksToTransfer) - print() - print(stats.report()) + host=splitHost(conf.hosts[0],conf.port) + try: + with ClientConnection(*host) as con: + c.setConnection(con) + blocksToTransfer=c.negotiate() + c.pullData(blocksToTransfer) + print() + print(stats.report()) + except FailedConnection: pass def serve(args): _checkFile(args.datafile) @@ -92,7 +98,7 @@ pUpdate.set_defaults(func=push) pUpdate=subparsers.add_parser("pull") pUpdate.add_argument("-p","--port",type=int) -pUpdate.add_argument("--host",default="127.0.0.1") +pUpdate.add_argument("--host") pUpdate.add_argument("-t","--tree",help="stored hash tree location") pUpdate.add_argument("datafile") pUpdate.set_defaults(func=pull)