ServerProxy does not seem to be thread-safe.
For e.g. a 2of3 multisig wallet, which would send two messages,
one msg would get sent but the other might error out. See trace:
E | plugins.cosigner_pool.qt.Plugin | on_failure
Traceback (most recent call last):
File "...\electrum\electrum\gui\qt\util.py", line 832, in run
result = task.task()
File "...\electrum\electrum\plugins\cosigner_pool\qt.py", line 199, in <lambda>
task = lambda: server.put(_hash, message)
File "...\Python38\lib\xmlrpc\client.py", line 1109, in __call__
return self.__send(self.__name, args)
File "...\Python38\lib\xmlrpc\client.py", line 1450, in __request
response = self.__transport.request(
File "...\Python38\lib\xmlrpc\client.py", line 1153, in request
return self.single_request(host, handler, request_body, verbose)
File "...\Python38\lib\xmlrpc\client.py", line 1165, in single_request
http_conn = self.send_request(host, handler, request_body, verbose)
File "...\Python38\lib\xmlrpc\client.py", line 1271, in send_request
connection.putrequest("POST", handler, skip_accept_encoding=True)
File "...\Python38\lib\http\client.py", line 1088, in putrequest
raise CannotSendRequest(self.__state)
http.client.CannotSendRequest: Request-sent
When raising generic Exception, window.on_error can't tell whether
there was a programming error or we just want to communicate with the user.
E | gui.qt.main_window.[default_wallet] | on_error
Traceback (most recent call last):
File "/home/user/wspace/electrum/electrum/gui/qt/util.py", line 832, in run
result = task.task()
File "/home/user/wspace/electrum/electrum/gui/qt/main_window.py", line 2900, in <lambda>
task = lambda: self.network.run_from_another_thread(
File "/home/user/wspace/electrum/electrum/network.py", line 358, in run_from_another_thread
return fut.result(timeout)
File "/usr/lib/python3.8/concurrent/futures/_base.py", line 439, in result
return self.__get_result()
File "/usr/lib/python3.8/concurrent/futures/_base.py", line 388, in __get_result
raise self._exception
File "/home/user/wspace/electrum/electrum/wallet.py", line 162, in sweep_preparations
raise Exception(_('No inputs found.'))
Exception: No inputs found.
I think on_release has better UX.
More importantly, on desktop linux with kivy 2.0.0rc2, on_press does not work for me.
(but on Android, with kivy 1.11.1, it does)
- our new key now supports both
- note that we don't bother to "dual sign" for both sha1 and sha2, as
Win7 upwards sha2 is supported (and we already don't support XP, Vista, etc anymore)
Create a pyinstaller "onedir" executable instead of a "onefile" executable.
Note that the name change from "Electrum" to "run_electrum" affects the
name of the internal binary (usually not exposed to users). This is
needed to avoid a collision with the "electrum" folder inside the .app
(just like in the source tree).
based on 03c3eca856
maybe fixes#6225