URI: 
       tmore fixes for the 0.6 servers - electrum - Electrum Bitcoin wallet
  HTML git clone https://git.parazyd.org/electrum
   DIR Log
   DIR Files
   DIR Refs
   DIR Submodules
       ---
   DIR commit 8fc042ee224d0153c962e9b4987e3fc51c29d04b
   DIR parent cc2ef02c2bd345bdca38307e0c597f4f7a4536b6
  HTML Author: thomasv <thomasv@gitorious>
       Date:   Thu, 15 Nov 2012 10:34:56 +0100
       
       more fixes for the 0.6 servers
       
       Diffstat:
         M lib/verifier.py                     |       4 +++-
         M lib/wallet.py                       |      29 ++++++++++++++++++-----------
       
       2 files changed, 21 insertions(+), 12 deletions(-)
       ---
   DIR diff --git a/lib/verifier.py b/lib/verifier.py
       t@@ -32,7 +32,7 @@ class WalletVerifier(threading.Thread):
                self.daemon = True
                self.config = config
                self.interface = interface
       -        self.transactions    = {}                                 # monitored transactions
       +        self.transactions    = {}                                 # requested verifications (with height sent by the requestor)
                self.interface.register_channel('verifier')
        
                self.verified_tx     = config.get('verified_tx',{})       # height of verified tx
       t@@ -52,10 +52,12 @@ class WalletVerifier(threading.Thread):
                    if tx in self.transactions.keys():
                        return (self.local_height - self.verified_tx[tx] + 1) if tx in self.verified_tx else -1
                    else:
       +                #print "verifier: tx not in list", tx
                        return 0
        
            def add(self, tx_hash, tx_height):
                """ add a transaction to the list of monitored transactions. """
       +        assert tx_height > 0
                with self.lock:
                    if tx_hash not in self.transactions.keys():
                        self.transactions[tx_hash] = tx_height
   DIR diff --git a/lib/wallet.py b/lib/wallet.py
       t@@ -550,6 +550,9 @@ class Wallet:
                with self.lock:
                    self.transactions[tx_hash] = tx
        
       +        tx_height = tx.get('height')
       +        if tx_height>0: self.verifier.add(tx_hash, tx_height)
       +
                self.update_tx_outputs(tx_hash)
        
                self.save()
       t@@ -890,18 +893,21 @@ class Wallet:
            def set_verifier(self, verifier):
                self.verifier = verifier
                    
       -        # set the timestamp for transactions that need it
       -        for hist in self.history.values():
       -            if hist == ['*']: continue
       -            for tx_hash, tx_height in hist:
       -                tx = self.transactions.get(tx_hash)
       -                if tx and not tx.get('timestamp'):
       -                    timestamp = self.verifier.get_timestamp(tx_height)
       -                    if timestamp:
       -                        self.set_tx_timestamp(tx_hash, timestamp)
       +        for tx_hash, tx in self.transactions.items():
       +            tx_height = tx.get('height')
       +            if tx_height <1:
       +                print_error( "skipping", tx_hash, tx_height )
       +                continue
       +            
       +            if tx_height>0:
       +                self.verifier.add(tx_hash, tx_height)
       +
       +            # set the timestamp for transactions that need it
       +            if tx and not tx.get('timestamp'):
       +                timestamp = self.verifier.get_timestamp(tx_height)
       +                if timestamp:
       +                    self.set_tx_timestamp(tx_hash, timestamp)
        
       -                if tx_height>0:
       -                    self.verifier.add(tx_hash, tx_height)
        
        
        
       t@@ -1123,6 +1129,7 @@ class WalletSynchronizer(threading.Thread):
                vds = deserialize.BCDataStream()
                vds.write(raw_tx.decode('hex'))
                d = deserialize.parse_Transaction(vds)
       +        d['height'] = tx_height
                d['tx_hash'] = tx_hash
                d['timestamp'] = self.wallet.verifier.get_timestamp(tx_height)
                return d