tgui: prepend broadcast_transaction errors with explanatory message - electrum - Electrum Bitcoin wallet HTML git clone https://git.parazyd.org/electrum DIR Log DIR Files DIR Refs DIR Submodules --- DIR commit 5248613e9d7b8b8ec85a1cee897d1901d747f5b4 DIR parent b491a30dd9f550ab2f335ae88889c910125d4559 HTML Author: SomberNight <somber.night@protonmail.com> Date: Fri, 21 Dec 2018 20:44:38 +0100 gui: prepend broadcast_transaction errors with explanatory message Diffstat: M electrum/gui/kivy/main_window.py | 7 +++++-- M electrum/gui/qt/main_window.py | 5 ++++- M electrum/gui/stdio.py | 4 +++- M electrum/gui/text.py | 6 ++++-- M electrum/network.py | 1 + 5 files changed, 17 insertions(+), 6 deletions(-) --- DIR diff --git a/electrum/gui/kivy/main_window.py b/electrum/gui/kivy/main_window.py t@@ -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')) DIR diff --git a/electrum/gui/qt/main_window.py b/electrum/gui/qt/main_window.py t@@ -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) DIR diff --git a/electrum/gui/stdio.py b/electrum/gui/stdio.py t@@ -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() DIR diff --git a/electrum/gui/text.py b/electrum/gui/text.py t@@ -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: t@@ -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() DIR diff --git a/electrum/network.py b/electrum/network.py t@@ -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