commit 8488d0b1032ea42850f983835665925938b50481
parent d5de8583b77fb38b50c58d979c15161ceab1049a
Author: chris-belcher <chris-belcher@users.noreply.github.com>
Date: Mon, 24 Jun 2019 22:43:29 +0100
Fix crash bug #120 by catching exception
The exception is raised if the unconfirmed input has been evicted
from the node's mempool. In this situation the server will just
carry on and Electrum will display an odd negative fee.
Diffstat:
1 file changed, 15 insertions(+), 10 deletions(-)
diff --git a/electrumpersonalserver/server/transactionmonitor.py b/electrumpersonalserver/server/transactionmonitor.py
@@ -245,17 +245,22 @@ class TransactionMonitor(object):
unconfirmed_input = False
total_input_value = 0
for inn in txd["vin"]:
- utxo = self.rpc.call("gettxout", [inn["txid"], inn["vout"],
- True])
- if utxo is None:
- utxo = self.rpc.call("gettxout", [inn["txid"], inn["vout"],
- False])
+ try:
+ utxo = self.rpc.call("gettxout", [inn["txid"],
+ inn["vout"], True])
if utxo is None:
- rawtx = self.rpc.call("getrawtransaction", [inn["txid"],
- True])
- if rawtx is not None:
- utxo = {"confirmations": 0,
- "value": rawtx["vout"][inn["vout"]]["value"]}
+ utxo = self.rpc.call("gettxout", [inn["txid"],
+ inn["vout"], False])
+ if utxo is None:
+ rawtx = self.rpc.call("getrawtransaction",
+ [inn["txid"], True])
+ if rawtx is not None:
+ utxo = {"confirmations": 0,
+ "value": rawtx["vout"][
+ inn["vout"]]["value"]}
+ except JsonRpcError:
+ #error somewhere, unable to get input value, just carry on
+ pass
if utxo is not None:
total_input_value += int(Decimal(utxo["value"]) *
Decimal(1e8))