electrum

Electrum Bitcoin wallet
git clone https://git.parazyd.org/electrum
Log | Files | Refs | Submodules

commit 21bff48630f96688c508241106c5f11d00b510e2
parent 8ab652929854de6df7c96682f1818daaac9180ec
Author: thomasv <thomasv@gitorious>
Date:   Wed,  4 Sep 2013 18:58:53 +0200

perform check_new_tx inside add_transaction

Diffstat:
Mlib/wallet.py | 26+++++++++++++++-----------
1 file changed, 15 insertions(+), 11 deletions(-)

diff --git a/lib/wallet.py b/lib/wallet.py @@ -193,16 +193,11 @@ class Wallet: self.tx_event = threading.Event() for tx_hash, tx in self.transactions.items(): - if self.check_new_tx(tx_hash, tx): - self.update_tx_outputs(tx_hash) - else: - print_error("unreferenced tx", tx_hash) - self.transactions.pop(tx_hash) + self.update_tx_outputs(tx_hash) def add_transaction(self, tx): h = tx.hash() - self.transactions[h] = tx # find the address corresponding to pay-to-pubkey inputs tx.add_extra_addresses(self.transactions) for o in tx.d.get('outputs'): @@ -210,6 +205,14 @@ 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 + + def set_up_to_date(self,b): with self.lock: self.up_to_date = b @@ -1016,13 +1019,13 @@ class Wallet: def receive_tx_callback(self, tx_hash, tx, tx_height): - 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 with self.transaction_lock: - self.add_transaction(tx) + if not self.add_transaction(tx): + # may happen due to pruning + print_error("received transaction that is no longer referenced in history", tx_hash) + return + self.interface.pending_transactions_for_notifications.append(tx) self.save_transactions() if self.verifier and tx_height>0: @@ -1334,6 +1337,7 @@ 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