diff --git a/src/client.py b/src/client.py --- a/src/client.py +++ b/src/client.py @@ -25,7 +25,7 @@ class Connection(BaseConnection): try: self._socket.connect((conf.hosts[0], conf.port)) except ConnectionRefusedError: - print("Couldn't connect to {0}".format(conf.hosts[0])) + print("Couldn't connect to {0}:{1}".format(conf.hosts[0],conf.port)) sys.exit(1) self.createNetworkers() @@ -81,6 +81,9 @@ class Client(NetNode): nodeStack.extend(reversed(frontier)) progress.done() + size=stats.formatBytes(len(blocksToTransfer)*self._tree.BLOCK_SIZE) + print(datetime.now(), "{0} to transfer".format(size)) + return blocksToTransfer def sendData(self,blocksToTransfer): diff --git a/src/morevna.py b/src/morevna.py --- a/src/morevna.py +++ b/src/morevna.py @@ -19,6 +19,12 @@ def _checkFile(f): def buildTree(args): _checkFile(args.datafile) + if os.path.isfile(args.treefile): + treeMod=os.stat(args.treefile).st_mtime + dataMod=os.stat(args.datafile).st_mtime + if dataMod<treeMod and not args.force: + print("tree file is up to date") + return tree=HashTree.fromFile(args.datafile) tree.save(args.treefile) @@ -71,6 +77,7 @@ parser=ArgumentParser() subparsers=parser.add_subparsers() pBuild=subparsers.add_parser("build") +pBuild.add_argument("-f","--force",action="store_true",help="force tree rebuild") pBuild.add_argument("treefile", help="stored hash tree location") pBuild.add_argument("datafile") pBuild.set_defaults(func=buildTree) diff --git a/src/netnode.py b/src/netnode.py --- a/src/netnode.py +++ b/src/netnode.py @@ -22,8 +22,11 @@ class BaseConnection: # abstract return self.incoming,self.outcoming def __exit__(self, exc_type, exc_val, exc_tb): - self._socket.shutdown(socket.SHUT_RDWR) - self._socket.close() + try: + self._socket.shutdown(socket.SHUT_RDWR) + self._socket.close() + except OSError: + log.warning("encountered an error when shutting down the connection") class NetNode: