commit 0e851a5f62f631cc9b58a19798c8230f4b68f3f5
parent 8fc042ee224d0153c962e9b4987e3fc51c29d04b
Author: thomasv <thomasv@gitorious>
Date: Thu, 15 Nov 2012 12:14:29 +0100
fix for notifications
Diffstat:
2 files changed, 35 insertions(+), 8 deletions(-)
diff --git a/lib/wallet.py b/lib/wallet.py
@@ -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
@@ -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')
@@ -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):
@@ -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:
@@ -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):
@@ -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)
diff --git a/scripts/watch_address b/scripts/watch_address
@@ -1,6 +1,6 @@
#!/usr/bin/env python
-import sys
+import sys, time
from electrum import Interface
try:
@@ -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')