URI: 
       toverload import_block - electrum - Electrum Bitcoin wallet
  HTML git clone https://git.parazyd.org/electrum
   DIR Log
   DIR Files
   DIR Refs
   DIR Submodules
       ---
   DIR commit 6c3b57abbdb8497a4f4bb9a0e6af053151dafdc0
   DIR parent 8b252a7971202554553c2e4a3646723e18994a8f
  HTML Author: ThomasV <thomasv@gitorious>
       Date:   Fri, 16 Mar 2012 23:45:37 +0300
       
       overload import_block
       
       Diffstat:
         M server/server.py                    |      35 ++++++++++++++++++-------------
       
       1 file changed, 20 insertions(+), 15 deletions(-)
       ---
   DIR diff --git a/server/server.py b/server/server.py
       t@@ -90,9 +90,20 @@ address_queue = Queue()
        
        class MyStore(Datastore_class):
        
       -    def import_tx(self, tx, is_coinbase):
       -        tx_id = super(MyStore, self).import_tx(tx, is_coinbase)
       -        self.update_tx_cache(tx_id)
       +    def import_block(self, b, chain_ids=frozenset()):
       +        block_id = super(MyStore, self).import_block(b, chain_ids)
       +        print "import block", block_id
       +        for pos in xrange(len(b['transactions'])):
       +            tx = b['transactions'][pos]
       +            if 'hash' not in tx:
       +                tx['hash'] = util.double_sha256(tx['tx'])
       +            tx_id = store.tx_find_id_and_value(tx)
       +            if tx_id:
       +                self.update_tx_cache(tx_id)
       +            else:
       +                print "error: import_block: no tx_id"
       +        return block_id
       +
        
            def update_tx_cache(self, txid):
                inrows = self.get_tx_inputs(txid, False)
       t@@ -715,8 +726,8 @@ def tcp_client_thread(ipaddr,conn):
                            print "json error", repr(c)
                            continue
                        try:
       -                    cmd = c['method']
       -                    data = c['params']
       +                    cmd = c.get('method')
       +                    data = c.get('params')
                        except:
                            print "syntax error", repr(c), ipaddr
                            continue
       t@@ -774,7 +785,6 @@ def process_output_queue():
        
        
        def memorypool_update(store):
       -    """ when a tx is removed from memory pool, I need to notify subscribers"""
        
            ds = BCDataStream.BCDataStream()
            previous_transactions = store.mempool_keys
       t@@ -798,15 +808,10 @@ def memorypool_update(store):
                if store.tx_find_id_and_value(tx):
                    pass
                else:
       -            store.import_tx(tx, False)
       -    store.commit()
       +            tx_id = store.import_tx(tx, False)
       +            store.update_tx_cache(tx_id)
        
       -    for tx_hash in previous_transactions:
       -        if tx_hash not in store.mempool_keys:
       -            tx = { 'hash':store.hashout(tx_hash) }
       -            tx_id = store.tx_find_id_and_value(tx)
       -            if tx_id:
       -                store.update_tx_cache(tx_id)
       +    store.commit()
        
        
        def clean_session_thread():
       t@@ -945,8 +950,8 @@ if __name__ == '__main__':
                    dblock.acquire()
                    store.catch_up()
                    memorypool_update(store)
       -            block_number = store.get_block_number(1)
        
       +            block_number = store.get_block_number(1)
                    if block_number != old_block_number:
                        old_block_number = block_number
                        for session_id in sessions_sub_numblocks: