Browse Source

add locks to config and storage

283
ThomasV 11 years ago
parent
commit
e82653f454
  1. 20
      lib/simple_config.py
  2. 17
      lib/wallet.py

20
lib/simple_config.py

@ -1,11 +1,9 @@
import json, ast
import os, ast
from util import user_dir, print_error
from version import ELECTRUM_VERSION, SEED_VERSION
import json
import ast
import threading
import os
from util import user_dir, print_error
@ -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()

17
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)

Loading…
Cancel
Save