URI: 
       tfix - electrum - Electrum Bitcoin wallet
  HTML git clone https://git.parazyd.org/electrum
   DIR Log
   DIR Files
   DIR Refs
   DIR Submodules
       ---
   DIR commit 90767c4b47832d718ebdeae3ef46d6c7bc764e81
   DIR parent 21bff48630f96688c508241106c5f11d00b510e2
  HTML Author: thomasv <thomasv@gitorious>
       Date:   Wed,  4 Sep 2013 19:37:56 +0200
       
       fix
       
       Diffstat:
         M lib/wallet.py                       |      24 ++++++++++++------------
       
       1 file changed, 12 insertions(+), 12 deletions(-)
       ---
   DIR diff --git a/lib/wallet.py b/lib/wallet.py
       t@@ -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
       t@@ -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)
       t@@ -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
                    
        
        
       t@@ -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: 
       t@@ -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