cln/tests
Rusty Russell 703d737dd5 xpay: don't crash on circular routehints.
We earlier fixed the cases of gossipd inserting a same-node channel,
but didn't prevent it for local modifications:

```
cln-askrene: common/gossmap.c:52: nodeidx_htable_add: Assertion `!nodeidx_htable_getmatch_(ht, k, h, v, &i)' failed.
cln-askrene: FATAL SIGNAL 6 (version v26.06rc2-5-gd389c3f-modded)
0x5c50e80dd5cb send_backtrace
        common/daemon.c:38
0x5c50e80dd685 crashdump
        common/daemon.c:83
0x70a5b1e4532f ???
        ./signal/../sysdeps/unix/sysv/linux/x86_64/libc_sigaction.c:0
0x70a5b1e9eb2c __pthread_kill_implementation
        ./nptl/pthread_kill.c:44
0x70a5b1e9eb2c __pthread_kill_internal
        ./nptl/pthread_kill.c:78
0x70a5b1e9eb2c __GI___pthread_kill
        ./nptl/pthread_kill.c:89
0x70a5b1e4527d __GI_raise
        ../sysdeps/posix/raise.c:26
0x70a5b1e288fe __GI_abort
        ./stdlib/abort.c:79
0x70a5b1e2881a __assert_fail_base
        ./assert/assert.c:96
0x70a5b1e3b516 __assert_fail
        ./assert/assert.c:105
0x5c50e80dfb44 nodeidx_htable_add
        common/gossmap.c:52
0x5c50e80e1066 add_channel
        common/gossmap.c:515
0x5c50e80e327c gossmap_apply_localmods
        common/gossmap.c:1239
0x5c50e80bed55 do_getroutes
        plugins/askrene/askrene.c:620
0x5c50e80bf919 listpeerchannels_done
```

Reported-by: Won Hoi Kim and Ahmad Elmoursi
Changelog-Fixed: Plugins: xpay no longer crashes on circular bolt11 routehints.
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
2026-06-01 11:40:01 +02:00
..
data python: upgrade min python version to 3.10 2026-04-20 14:09:03 +02:00
fuzz common/bolt12: use a const char * for fail reason. 2026-05-11 11:13:55 +09:30
plugins setconfig: fix crash on dynamic multi-value plugin options 2026-05-11 15:49:10 +09:30
vectors pytest: Remove onion test vectors containing legacy onions. 2022-03-18 09:20:11 +10:30
__init__.py feat: add pytest config 2025-08-11 11:06:22 +09:30
autogenerate-rpc-examples.py schemas: remove old deprecations, add missing deprecations/added fields 2026-05-20 18:40:47 +09:30
benchmark.py pay: deprecate pay and paystatus. 2026-05-11 13:51:52 +09:30
conftest.py feat: Enhance JUnit XML reporting with environment variables and add import to conftest.py 2026-02-02 11:41:09 +01:00
fixtures.py pytest: don't invoke the pcap test every session. 2026-02-28 18:52:19 +10:30
pytest.ini feat: add pytest config 2025-08-11 11:06:22 +09:30
rkls_github_canned_server.py fix: replace deprecated flask.escape with markupsafe.escape 2025-08-11 11:06:22 +09:30
test_askrene.py askrene: askrene-remove-channel-update 2026-05-11 16:16:57 +09:30
test_bookkeeper.py pytest: use xpay, not pay in misc tests. 2026-05-11 13:51:52 +09:30
test_cln_lsps.py pytest: use xpay, not pay in misc tests. 2026-05-11 13:51:52 +09:30
test_cln_rs.py keysend: deprecate in favor of xkeysend. 2026-05-11 13:51:52 +09:30
test_clnrest.py clnrest: add clnrest-register-path method for dynamic paths 2026-01-19 12:55:57 +10:30
test_closing.py pytest: use xpay, not pay in misc tests. 2026-05-11 13:51:52 +09:30
test_coinmoves.py pytest: changed old_hsmsecret to default to false. 2026-01-27 09:32:49 +10:30
test_connection.py config: change message-padding to false by default. 2026-05-11 15:26:53 +09:30
test_currencyrate.py tests: test new features and improvements of currencyrate plugin 2026-05-11 15:06:41 +02:00
test_db.py gossipd: don't forget closed channels until 72 blocks, not 12. 2026-04-30 20:09:31 +09:30
test_downgrade.py db: add STRICT tables with migration for old databases 2026-02-23 15:55:55 +10:30
test_gossip.py getroute: deprecate in favor of getroutes 2026-05-11 13:51:52 +09:30
test_invoices.py pay: deprecate pay and paystatus. 2026-05-11 13:51:52 +09:30
test_misc.py splice: Make feerate opening + feerate_offset 2026-05-11 15:54:37 +09:30
test_mkfunding.py pytest: add tests for devtools/mkfunding 2023-01-09 14:50:30 -06:00
test_onion.py lightningd: remove support for legacy onion format. 2022-03-18 09:20:11 +10:30
test_opening.py keysend: deprecate in favor of xkeysend. 2026-05-11 13:51:52 +09:30
test_p2tr_change_dust.py bitcoin/tx.c: use 330 sat dust limit for P2TR/P2WPKH change outputs Fixes #8395 2026-05-08 21:08:41 +09:30
test_pay.py plugins: move listpays from pay plugin to xpay plugin. 2026-05-11 13:51:52 +09:30
test_plugin.py schemas: remove old deprecations, add missing deprecations/added fields 2026-05-20 18:40:47 +09:30
test_reckless.py Fix Reckless search command not finding partial matches 2026-02-02 13:01:00 -06:00
test_renepay.py renepay: deprecate. 2026-05-11 13:51:52 +09:30
test_restart.py splice: Remove experiemental splicing feature 2026-04-09 11:04:42 +09:30
test_runes.py pytest: changed old_hsmsecret to default to false. 2026-01-27 09:32:49 +10:30
test_splice.py splice: Make feerate opening + feerate_offset 2026-05-11 15:54:37 +09:30
test_splicing.py splice: Make feerate opening + feerate_offset 2026-05-11 15:54:37 +09:30
test_splicing_disconnect.py splice: Make feerate opening + feerate_offset 2026-05-11 15:54:37 +09:30
test_splicing_insane.py splice: Make feerate opening + feerate_offset 2026-05-11 15:54:37 +09:30
test_wallet.py tests: remove test_withdraw_stuck_reserved_on_broadcast_failure 2026-05-11 20:54:49 +09:30
test_xpay.py xpay: don't crash on circular routehints. 2026-06-01 11:40:01 +02:00
utils.py splice: Remove experiemental splicing feature 2026-04-09 11:04:42 +09:30
valgrind-suppressions.txt pytest: Use valgrind target suppressions instead of skipping tests 2022-03-10 10:21:41 +10:30