cln/plugins/xpay
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
..
listpays.c plugins: move listpays from pay plugin to xpay plugin. 2026-05-11 13:51:52 +09:30
listpays.h plugins: move listpays from pay plugin to xpay plugin. 2026-05-11 13:51:52 +09:30
Makefile plugins: move listpays from pay plugin to xpay plugin. 2026-05-11 13:51:52 +09:30
xpay.c xpay: don't crash on circular routehints. 2026-06-01 11:40:01 +02:00
xpay.h xpay: keep track of ongoing payments, to implement attempt_ongoing() 2026-05-11 13:51:52 +09:30