URI: 
       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