electrum

Electrum Bitcoin wallet
git clone https://git.parazyd.org/electrum
Log | Files | Refs | Submodules

commit 5248613e9d7b8b8ec85a1cee897d1901d747f5b4
parent b491a30dd9f550ab2f335ae88889c910125d4559
Author: SomberNight <somber.night@protonmail.com>
Date:   Fri, 21 Dec 2018 20:44:38 +0100

gui: prepend broadcast_transaction errors with explanatory message

Diffstat:
Melectrum/gui/kivy/main_window.py | 7+++++--
Melectrum/gui/qt/main_window.py | 5++++-
Melectrum/gui/stdio.py | 4+++-
Melectrum/gui/text.py | 6++++--
Melectrum/network.py | 1+
5 files changed, 17 insertions(+), 6 deletions(-)

diff --git a/electrum/gui/kivy/main_window.py b/electrum/gui/kivy/main_window.py @@ -937,8 +937,11 @@ class ElectrumWindow(App): self.wallet.invoices.save() self.update_tab('invoices') else: - msg = msg[:500] if msg else _('There was an error broadcasting the transaction.') - self.show_error(msg) + display_msg = _('The server returned an error when broadcasting the transaction.') + if msg: + display_msg += '\n' + msg + display_msg = display_msg[:500] + self.show_error(display_msg) if self.network and self.network.is_connected(): self.show_info(_('Sending')) diff --git a/electrum/gui/qt/main_window.py b/electrum/gui/qt/main_window.py @@ -1690,7 +1690,10 @@ class ElectrumWindow(QMainWindow, MessageBoxMixin, PrintError): self.invoice_list.update() self.do_clear() else: - parent.show_error(msg) + display_msg = _('The server returned an error when broadcasting the transaction.') + if msg: + display_msg += '\n' + msg + parent.show_error(display_msg) WaitingDialog(self, _('Broadcasting transaction...'), broadcast_thread, broadcast_done, self.on_error) diff --git a/electrum/gui/stdio.py b/electrum/gui/stdio.py @@ -206,7 +206,9 @@ class ElectrumGui: try: self.network.run_from_another_thread(self.network.broadcast_transaction(tx)) except Exception as e: - print(repr(e)) + display_msg = _('The server returned an error when broadcasting the transaction.') + display_msg += '\n' + repr(e) + print(display_msg) else: print(_('Payment sent.')) #self.do_clear() diff --git a/electrum/gui/text.py b/electrum/gui/text.py @@ -15,7 +15,7 @@ from electrum.storage import WalletStorage from electrum.network import NetworkParameters from electrum.interface import deserialize_server -_ = lambda x:x +_ = lambda x:x # i18n class ElectrumGui: @@ -370,7 +370,9 @@ class ElectrumGui: try: self.network.run_from_another_thread(self.network.broadcast_transaction(tx)) except Exception as e: - self.show_message(repr(e)) + display_msg = _('The server returned an error when broadcasting the transaction.') + display_msg += '\n' + repr(e) + self.show_message(display_msg) else: self.show_message(_('Payment sent.')) self.do_clear() diff --git a/electrum/network.py b/electrum/network.py @@ -737,6 +737,7 @@ class Network(PrintError): timeout = self.get_network_timeout_seconds(NetworkTimeout.Urgent) out = await self.interface.session.send_request('blockchain.transaction.broadcast', [str(tx)], timeout=timeout) if out != tx.txid(): + # note: this is untrusted input from the server raise Exception(out) return out # txid