From 1d64166351ea13c43bfe62adbb3eb5738b95eccc Mon Sep 17 00:00:00 2001 From: Bernhard Mueller Date: Fri, 20 Oct 2017 02:17:18 +0700 Subject: [PATCH] Only open contract storage for operations that need it --- myth | 54 +++++++++++++++++++++++++++--------------------------- 1 file changed, 27 insertions(+), 27 deletions(-) diff --git a/myth b/myth index 3efb0fc0..b0ea5a62 100755 --- a/myth +++ b/myth @@ -64,8 +64,6 @@ try: except KeyError: db_dir = None -contract_storage = get_persistent_storage(db_dir) - args = parser.parse_args() if (args.v): @@ -155,34 +153,36 @@ elif (args.trace): else: print(str(i['pc']) + " " + i['op'] + ";\tSTACK: " + i['stack']) -elif (args.search): +else: + contract_storage = get_persistent_storage(db_dir) + if (args.search): - try: - contract_storage.search(args.search, searchCallback) - except SyntaxError: - exitWithError("Syntax error in search expression.") + try: + contract_storage.search(args.search, searchCallback) + except SyntaxError: + exitWithError("Syntax error in search expression.") -elif (args.xrefs): + elif (args.xrefs): - try: - contract_hash = util.safe_decode(args.xrefs) - except binascii.Error: - exitWithError("Invalid contract hash.") + try: + contract_hash = util.safe_decode(args.xrefs) + except binascii.Error: + exitWithError("Invalid contract hash.") - try: - contract = contract_storage.get_contract_by_hash(contract_hash) - print("\n".join(contract.get_xrefs())) - except KeyError: - exitWithError("Contract not found in the database.") - -elif (args.init_db): - if args.ipc: - contract_storage.initialize(args.rpchost, args.rpcport, args.sync_all, args.ipc) - else: - contract_storage.initialize(args.rpchost, args.rpcport, args.sync_all, args.ipc) + try: + contract = contract_storage.get_contract_by_hash(contract_hash) + print("\n".join(contract.get_xrefs())) + except KeyError: + exitWithError("Contract not found in the database.") -elif (args.hash): - print("0x" + utils.sha3(args.hash)[:4].hex()) + elif (args.init_db): + if args.ipc: + contract_storage.initialize(args.rpchost, args.rpcport, args.sync_all, args.ipc) + else: + contract_storage.initialize(args.rpchost, args.rpcport, args.sync_all, args.ipc) -else: - parser.print_help() + elif (args.hash): + print("0x" + utils.sha3(args.hash)[:4].hex()) + + else: + parser.print_help()