commit 90767c4b47832d718ebdeae3ef46d6c7bc764e81
parent 21bff48630f96688c508241106c5f11d00b510e2
Author: thomasv <thomasv@gitorious>
Date: Wed, 4 Sep 2013 19:37:56 +0200
fix
Diffstat:
1 file changed, 12 insertions(+), 12 deletions(-)
diff --git a/lib/wallet.py b/lib/wallet.py
@@ -167,14 +167,20 @@ class Wallet:
self.transactions = {}
tx_list = self.storage.get('transactions',{})
for k,v in tx_list.items():
- tx = Transaction(v)
try:
tx = Transaction(v)
except:
print_msg("Warning: Cannot deserialize transactions. skipping")
continue
- self.add_transaction(tx)
+ self.add_extra_addresses(tx)
+ self.transactions[k] = tx
+
+ for h,tx in self.transactions.items():
+ if not self.check_new_tx(h, tx):
+ print_error("removing unreferenced tx", h)
+ self.transactions.pop(h)
+
# not saved
self.prevout_values = {} # my own transaction outputs
@@ -196,7 +202,7 @@ class Wallet:
self.update_tx_outputs(tx_hash)
- def add_transaction(self, tx):
+ def add_extra_addresses(self, tx):
h = tx.hash()
# find the address corresponding to pay-to-pubkey inputs
tx.add_extra_addresses(self.transactions)
@@ -205,12 +211,6 @@ class Wallet:
for tx2 in self.transactions.values():
tx2.add_extra_addresses({h:tx})
- if self.check_new_tx(h, tx):
- self.transactions[h] = tx
- return True
- else:
- print_error("unreferenced tx", tx_hash)
- return False
@@ -1021,11 +1021,12 @@ class Wallet:
def receive_tx_callback(self, tx_hash, tx, tx_height):
with self.transaction_lock:
- if not self.add_transaction(tx):
+ self.add_extra_addresses(tx)
+ if not self.check_new_tx(tx_hash, tx):
# may happen due to pruning
print_error("received transaction that is no longer referenced in history", tx_hash)
return
-
+ self.transactions[tx_hash] = tx
self.interface.pending_transactions_for_notifications.append(tx)
self.save_transactions()
if self.verifier and tx_height>0:
@@ -1337,7 +1338,6 @@ class Wallet:
# 2 check that referencing addresses are in the tx
for addr in addresses:
if not tx.has_address(addr):
- print "z", addr, tx.inputs
return False
return True