Commit Graph

18590 Commits

Author SHA1 Message Date
SomberNight 9b24316915 plugin: _execute_commands_in_subprocess: make sure pipes get closed 2025-05-22 21:48:27 +00:00
ghost43 ddaa204b70 Merge pull request #9853 from SomberNight/202505_adb_transaction_lock
adb: merge `transaction_lock` and `lock`, protect more critical sections
2025-05-22 21:45:32 +00:00
ghost43 51753a4d62 Merge pull request #9855 from accumulator/test_is_private_netaddress_expand
tests: also test for RFC1918 IPv4 and IPv4-in-IPv6 and IPv6 link-local addresses
2025-05-22 14:20:09 +00:00
Sander van Grieken caef77d45d tests: also test for RFC1918 IPv4 and IPv4-in-IPv6 and IPv6 link-local addresses 2025-05-22 11:02:46 +02:00
SomberNight 4543192e1a adb: take lock in more places
for example, adb.get_utxos() could previously return an inconsistent result
2025-05-21 18:43:36 +00:00
SomberNight 3b37a920d6 adb/wallet: merge transaction_lock and lock
The distinction was no longer clear.
2025-05-21 18:43:33 +00:00
SomberNight e75476430c requirements: bump min dnspython to 2.2.0
follow-up https://github.com/spesmilo/electrum/commit/713a20e309d6b7d1b1d7c929a63552ac195e0153
https://github.com/spesmilo/electrum/pull/9833

On Windows, above commit broke dns_hacks.py with dnspython==2.0.0 and 2.1.0.
Newer dnspython works.
Root cause not immediately obvious. Probably not worth debugging, I will just bump the required version instead.

With dnspython==2.0.0, the log gets spammed and dns fails:
```
$ python3 -m pip install --user "dnspython==2.0.0"

 10.59 | E | asyncio | Exception in callback _ProactorBasePipeTransport._call_connection_lost(None)
handle: <Handle _ProactorBasePipeTransport._call_connection_lost(None)>
Traceback (most recent call last):
  File "...\Python310\lib\asyncio\events.py", line 80, in _run
    self._context.run(self._callback, *self._args)
  File "...\Python310\lib\asyncio\proactor_events.py", line 158, in _call_connection_lost
    self._protocol.connection_lost(exc)
  File "...\Python310\site-packages\dns\_asyncio_backend.py", line 38, in connection_lost
    self.recvfrom.set_exception(exc)
asyncio.exceptions.InvalidStateError: invalid state
```
With dnspython==2.1.0, no more log spam but all dns resolutions time out:
```
$ python3 -m pip install --user "dnspython==2.1.0"

 33.29 | I | dns_hacks | dnspython failed to resolve dns (AAAA) for 'testnet.qtornado.com' with error: Timeout('The DNS operation timed out after 31.591506242752075 seconds')
 33.29 | I | dns_hacks | dnspython failed to resolve dns (AAAA) for 'api.coingecko.com' with error: Timeout('The DNS operation timed out after 31.590490579605103 seconds')
 33.29 | I | dns_hacks | dnspython failed to resolve dns (A) for 'testnet.qtornado.com' with error: Timeout('The DNS operation timed out after 31.591506242752075 seconds')
 33.29 | I | dns_hacks | dnspython failed to resolve dns (A) for 'api.coingecko.com' with error: Timeout('The DNS operation timed out after 31.590490579605103 seconds')
 33.35 | I | dns_hacks | dnspython failed to resolve dns (AAAA) for 'blockstream.info' with error: Timeout('The DNS operation timed out after 31.59534502029419 seconds')
 33.35 | I | dns_hacks | dnspython failed to resolve dns (A) for 'blockstream.info' with error: Timeout('The DNS operation timed out after 31.594367265701294 seconds')
 33.38 | I | dns_hacks | dnspython failed to resolve dns (AAAA) for 'electrum.blockstream.info' with error: Timeout('The DNS operation timed out after 31.602211713790894 seconds')
 33.38 | I | dns_hacks | dnspython failed to resolve dns (A) for 'electrum.blockstream.info' with error: Timeout('The DNS operation timed out after 31.60122585296631 seconds')
```
2025-05-21 18:41:25 +00:00
SomberNight 0a07849626 lnsweep: add comment we could batch "MPP htlcs for the same payment" 2025-05-21 16:09:17 +00:00
ghost43 6b7a026945 Merge pull request #9848 from SomberNight/202505_refactor_lnchannel_ctx_updates
lnchannel: refactor can_send_ctx_updates
2025-05-21 15:49:34 +00:00
SomberNight 65c9a5f875 lnchannel: refactor can_send_ctx_updates
This adds a lot more sanity checks to lnpeer/lnchannel for chan update operations,
and more logging in case they are violated.
2025-05-21 14:57:56 +00:00
ThomasV 8d5d330b07 Merge pull request #9243 from accumulator/qml_oneserver
qt,qml: show option for single server in ServerConfig
2025-05-21 12:04:56 +02:00
Sander van Grieken de30c6139c text: fix _ string 2025-05-21 11:55:44 +02:00
Sander van Grieken 1063f0daa7 lnutil: lower minimum max-htlc-in-flight for new channels from 100_000_000 to 90_000_000
so we don't error out when GUI hinted minimum 2mBTC channel size is used for peers that
constrain max-htlc-in-flight to 45% of channel capacity. (fixes #8712)
2025-05-21 11:35:08 +02:00
accumulator 705f927899 qt: show option for single server in network dialog 2025-05-21 10:32:18 +02:00
ThomasV 958df667fb Merge pull request #9492 from stokito/patch-1
chore: improve Fastlane full_description.txt
2025-05-21 10:02:33 +02:00
ThomasV 727162c7ab Merge pull request #9493 from stokito/patch-2
chore: README.md add link to Crowdin translations
2025-05-21 09:54:52 +02:00
ThomasV bae7f2490d Merge pull request #9846 from accumulator/qt_paytoedit_completer
qt: implement completer for PayToEdit
2025-05-21 09:52:57 +02:00
f321x 539b83c2e4 followup #9845, fix broken mpp consolidation test
fixes broken test_trampoline_mpp_consolidation caused to fail by
https://github.com/spesmilo/electrum/pull/9845 by allowing single
channel splits for trampoline payments if TEST_FORCE_MPP is Trues
as the test relies on mpp through a single channel (it tests mpp and
there is only a single channel on the graph).
2025-05-20 18:34:46 +02:00
ghost43 00136ed8c0 Merge pull request #9845 from f321x/fix_exclude_single_channel_splits
fix: suggest_splits exclude single channel splits
2025-05-20 15:49:56 +00:00
ThomasV 0bce76c49d lnchannel: add strict parameter to remaining_max_inflight
also fix some indentations and rm unused imports
2025-05-20 17:45:39 +02:00
f321x cfdaafdd52 fix: suggest_splits exclude single channel splits 2025-05-20 17:34:48 +02:00
Sander van Grieken b0c6674319 qt: implement completer for PayToEdit 2025-05-20 15:28:55 +02:00
ThomasV 05733088a3 psbt_nostr: minor fix 2025-05-20 13:52:30 +02:00
ThomasV d1917b2951 Merge pull request #9837 from spesmilo/htlc_slots_left
pass number of htlc_slots_left to suggest_splits
2025-05-20 12:55:45 +02:00
ThomasV 4e64a880fc Merge pull request #9836 from f321x/concurrent_lookup_of_payment_identifier
make openalias and lnaddress lookup concurrent
2025-05-20 12:45:57 +02:00
ThomasV b432a1406a lnchannel: apply stricter max_htlc_value_in_flight rules for receiving
Otherwise we create invoices that eclair cannot route to us
2025-05-20 12:44:14 +02:00
f321x e433b8d5bf explicitly test the htlc slot limit in TestMppSplit 2025-05-20 12:26:21 +02:00
f321x 40f11213df make openalias and lnaddress lookup concurrent 2025-05-20 10:08:36 +02:00
ThomasV 713a20e309 Merge pull request #9833 from f321x/use_asyncio_dnspython_methods
dns: use async dnspython interface
2025-05-20 08:56:47 +02:00
Sander van Grieken 82e3932aaf network: add oneserver/auto_connect both enabled checks, avoid connecting to random/multiple servers
if oneserver is enabled.
2025-05-19 18:07:29 +02:00
Sander van Grieken 1dfe2ccec0 qml: show option for single server in ServerConfig 2025-05-19 18:07:29 +02:00
ThomasV 8396a22286 Merge pull request #9801 from SomberNight/202505_ban_unicode
ci: add linter task "ban unicode" to protect against malicious unicode
2025-05-19 15:02:45 +02:00
Sander van Grieken 000b1bb3b5 swaps: update instructions in manifest, add Max Forward and Max Reverse amounts in qml provider picker 2025-05-19 14:55:34 +02:00
f321x 3693c38e37 swaps: replace offers dict with class, fix incorrect naming
introduces a class SwapOffer which is used instead of passing around
offers in dicts.

Also fixes incorrect variable naming of swapserver npubs / public keys
by assigning the npub instead of the hex pubkey to
config.SWAPSERVER_NPUB
2025-05-19 14:22:23 +02:00
ThomasV cc25048e29 swap providers dialog with liquidity info 2025-05-19 13:22:50 +02:00
ThomasV b949eb5bf9 paytoedit: do not stip whitespaces in payto field while user is typing (fix regression) 2025-05-19 11:52:30 +02:00
ThomasV e06e2c0ba4 Merge pull request #9740 from f321x/update_swap_liquidity_on_events
swaps: Improve accuracy of swapserver liquidity announcement.
2025-05-19 10:23:38 +02:00
f321x 07a40b1c53 Improve accuracy of swapserver liquidity announcement.
Adds event handler and more calls to the liquidity update trigger to
ensure that changes in liquidity will get published more reliably.
2025-05-19 09:52:53 +02:00
ThomasV 73e93285db CLI: add 'clearconfig' command 2025-05-19 08:42:55 +02:00
ThomasV cbe0244d66 Merge pull request #9840 from SomberNight/202505_chan_save_error
lnchannel: persist error sent by remote peer into db
2025-05-19 08:20:19 +02:00
SomberNight d0be5fcfc8 lnchannel: persist error sent by remote peer into db
If a force-close happens due to e.g. a feerate disagreement or an invalid signature, etc,
and the remote peer sends us an error, it can be useful if users can provide us with this error.
If the user does not have logging enabled when the error is sent, without this persistence it will likely get lost.
2025-05-18 16:54:56 +00:00
ThomasV d435d65bf5 Merge pull request #9838 from spesmilo/cli_get_preimage
CLI: add preimage to invoices
2025-05-18 15:37:44 +02:00
ThomasV a66439eea5 CLI: add preimage to get_invoice
This should make regtest extract_preimage more reliable
2025-05-18 15:25:06 +02:00
ThomasV a213dfca85 Qt: move nostr_relays to network dialog 2025-05-18 13:42:25 +02:00
ThomasV 79941529d2 simplify plugin logic: remove install/uninstall buttons
external plugins are enabled iff authorized
2025-05-18 12:24:38 +02:00
ThomasV 0a69a3d658 Merge pull request #9765 from f321x/plugin_pubk_user_prompt
plugins: add functionality to allow setting plugin pubkey from gui
2025-05-18 12:08:12 +02:00
ThomasV 4a17d5a316 pass number of htlc_slots_left to suggest_splits 2025-05-17 15:50:03 +02:00
SomberNight 1c41bd23b7 network: broadcast_transaction: log full raw tx on errors 2025-05-16 15:49:54 +00:00
SomberNight 68ac2d8079 network: sanitize_tx_broadcast_response: add new error messages 2025-05-16 15:48:12 +00:00
f321x f90ca34fb9 use async dns interface in dnshacks 2025-05-16 17:10:16 +02:00