previously, if GUI-related imports raised, the GUI would not start
but the process would not exit (e.g. asyncio event loop would go on)
Traceback (most recent call last):
File "...\electrum\electrum\daemon.py", line 517, in run_gui
gui = __import__('electrum.gui.' + gui_name, fromlist=['electrum'])
File "...\electrum\electrum\gui\qt\__init__.py", line 39, in <module>
from PyQt5.QtGui import QGuiApplication
ImportError: DLL load failed while importing QtGui: The specified module could not be found.
network.main_taskgroup restarts every time the proxy settings are changed,
many long-running tasks (some introduced with lightning) are not prepared for and do not want this.
When no (supported) authentication is passed to the JSON-RPC server,
return a 401 HTTP error code instead of 403. This indicates to the
client that authentication is required, and also requests that to be
sent using the "basic" method. The previously-returned code 403 is now
only returned if authentication is passed but not valid.
There are some JSON-RPC clients out there that only send authentication
after a 401 code requested it. Those fail to connect to the Electrum
RPC interface even if the correct password is configured. Those same
clients can e.g. connect to Bitcoin Core successfully, which already
implements logic matching this change.
See also https://stackoverflow.com/questions/3297048/403-forbidden-vs-401-unauthorized-http-responses.
The few other cases that used SimpleConfig.get_instance() now
either get passed a config instance, or they try to get a reference
to something else that has a reference to a config.
(see lnsweep, qt/qrcodewidget, qt/qrtextedit)
- commands are async
- the asyncio loop is started and stopped from the main script
- the daemon's main loop runs in the main thread
- use jsonrpcserver and jsonrpcclient instead of jsonrpclib
- remove remote_commitment_to_be_revoked
- pass old ctns to lnsweep.create_sweeptxs_for_watchtower
- store the ctn of sweeptxs in sweepStore database
- request the highest ctn from sweepstore using get_ctn
- send sweeptxs asynchronously in LNWallet.sync_with_watchtower