tfix for notifications - electrum - Electrum Bitcoin wallet HTML git clone https://git.parazyd.org/electrum DIR Log DIR Files DIR Refs DIR Submodules --- DIR commit 0e851a5f62f631cc9b58a19798c8230f4b68f3f5 DIR parent 8fc042ee224d0153c962e9b4987e3fc51c29d04b HTML Author: thomasv <thomasv@gitorious> Date: Thu, 15 Nov 2012 12:14:29 +0100 fix for notifications Diffstat: M lib/wallet.py | 30 +++++++++++++++++++++++++++--- M scripts/watch_address | 13 ++++++++----- 2 files changed, 35 insertions(+), 8 deletions(-) --- DIR diff --git a/lib/wallet.py b/lib/wallet.py t@@ -446,7 +446,7 @@ class Wallet: for addr in domain: h = self.history.get(addr, []) if h == ['*']: continue - for tx_hash, tx_height, in h: + for tx_hash, tx_height in h: tx = self.transactions.get(tx_hash) for output in tx.get('outputs'): if output.get('address') != addr: continue t@@ -459,7 +459,8 @@ class Wallet: for addr in self.prioritized_addresses: h = self.history.get(addr, []) - for tx_hash, tx_height, in h: + if h == ['*']: continue + for tx_hash, tx_height in h: for output in tx.get('outputs'): if output.get('address') != addr: continue key = tx_hash + ":%d" % output.get('index') t@@ -571,7 +572,14 @@ class Wallet: if hist != ['*']: for tx_hash, tx_height in hist: if tx_height>0: + # add it in case it was previously unconfirmed self.verifier.add(tx_hash, tx_height) + # set the height in case it changed + tx = self.transactions.get(tx_hash) + if tx: + if tx.get('height') != tx_height: + print_error( "changing height for tx", tx_hash ) + tx['height'] = tx_height def get_tx_history(self): t@@ -892,7 +900,8 @@ class Wallet: def set_verifier(self, verifier): self.verifier = verifier - + + # review transactions (they might not all be in history) for tx_hash, tx in self.transactions.items(): tx_height = tx.get('height') if tx_height <1: t@@ -909,6 +918,20 @@ class Wallet: self.set_tx_timestamp(tx_hash, timestamp) + # review existing history + for addr, hist in self.history.items(): + if hist == ['*']: continue + for tx_hash, tx_height in hist: + if tx_height>0: + # add it in case it was previously unconfirmed + self.verifier.add(tx_hash, tx_height) + # set the height in case it changed + tx = self.transactions.get(tx_hash) + if tx: + if tx.get('height') != tx_height: + print_error( "changing height for tx", tx_hash ) + tx['height'] = tx_height + def set_tx_timestamp(self, tx_hash, timestamp): t@@ -1064,6 +1087,7 @@ class WalletSynchronizer(threading.Thread): elif method == 'blockchain.address.get_history': addr = params[0] + print_error("receiving history", addr, result) if result == ['*']: assert requested_histories.pop(addr) == '*' self.wallet.receive_history_callback(addr, result) DIR diff --git a/scripts/watch_address b/scripts/watch_address t@@ -1,6 +1,6 @@ #!/usr/bin/env python -import sys +import sys, time from electrum import Interface try: t@@ -9,15 +9,18 @@ except: print "usage: watch_address <bitcoin_address>" sys.exit(1) -i = Interface({'server':'electrum.novit.ro:50001:t'}) +i = Interface({'server':'ecdsa.org:50001:t'}) i.start() -i.send([('blockchain.address.subscribe',[addr])]) +i.send([('blockchain.address.subscribe',[addr])] ) +time.sleep(1) while True: - r = i.responses.get(True, 100000000000) + r = i.get_response() method = r.get('method') if method == 'blockchain.address.subscribe': - i.send([('blockchain.address.get_history',[addr])]) + #i.send([('blockchain.address.get_history',[addr])]) + print r + elif method == 'blockchain.address.get_history': confirmed = unconfirmed = 0 h = r.get('result')