diff --git a/lib/simple_config.py b/lib/simple_config.py index 62d51188..54833118 100644 --- a/lib/simple_config.py +++ b/lib/simple_config.py @@ -1,12 +1,10 @@ -import json, ast -import os, ast +import json +import ast +import threading +import os + from util import user_dir, print_error -from version import ELECTRUM_VERSION, SEED_VERSION - - - - class SimpleConfig: @@ -17,6 +15,7 @@ user configurations from electrum.conf into separate dictionaries within a SimpleConfig instance then reads the wallet file. """ def __init__(self, options={}): + self.lock = threading.Lock() # system conf, readonly self.system_config = {} @@ -65,8 +64,11 @@ a SimpleConfig instance then reads the wallet file. print "Warning: not changing '%s' because it was set in the system configuration"%key else: - self.user_config[key] = value - if save: self.save_user_config() + + with self.lock: + self.user_config[key] = value + if save: + self.save_user_config() diff --git a/lib/wallet.py b/lib/wallet.py index 868d383f..953502aa 100644 --- a/lib/wallet.py +++ b/lib/wallet.py @@ -68,6 +68,7 @@ from version import ELECTRUM_VERSION, SEED_VERSION class WalletStorage: def __init__(self, config): + self.lock = threading.Lock() self.data = {} self.file_exists = False self.init_path(config) @@ -110,15 +111,13 @@ class WalletStorage: def put(self, key, value, save = True): - if self.data.get(key) is not None: - self.data[key] = value - else: - # add key to wallet config - self.data[key] = value - - if save: - self.write() - + with self.lock: + if value is not None: + self.data[key] = value + else: + self.data.pop[key] + if save: + self.write() def write(self): s = repr(self.data)